--- /dev/null
+#ifndef _NNC_CORE_IR_MODEL_BATCH_NORM_H_
+#define _NNC_CORE_IR_MODEL_BATCH_NORM_H_
+
+#include "core/modelIR/operations/operation.h"
+
+namespace nncc
+{
+namespace contrib
+{
+namespace core
+{
+namespace IR
+{
+namespace model
+{
+namespace ops
+{
+
+class BatchNormOp : public OpDescription
+{
+public:
+ explicit BatchNormOp(float movingAvgFraction, float eps, bool spatial) :
+ OpDescription(1, 1),
+ _movingAvgFraction(movingAvgFraction),
+ _eps(eps),
+ _spatial(spatial)
+ {
+ // EMPTY
+ }
+
+ /**
+ * @return The epsilon value to use to avoid division by zero.
+ */
+ float getEps() { return _eps; }
+
+ /**
+ * @return Factor used in computing the running mean and variance.
+ * e.g., running_mean = running_mean * movingAvgFraction + mean * (1 - movingAvgFraction).
+ */
+ float getMovingAvgFraction() { return _movingAvgFraction; }
+
+ /**
+ * @return If true, compute the mean and variance across all spatial elements If false, compute the mean and variance per feature.
+ */
+ bool getSpatial() { return _spatial; }
+
+private:
+ float _movingAvgFraction;
+ float _eps;
+ bool _spatial;
+};
+
+} // namespace ops
+} // namespace model
+} // namespace IR
+} // namespace core
+} // namespace contrib
+} // namespace nncc
+
+#endif //_NNC_CORE_IR_MODEL_BATCH_NORM_H_
--- /dev/null
+#ifndef _NNC_CORE_IR_MODEL_DROPOUT_H_
+#define _NNC_CORE_IR_MODEL_DROPOUT_H_
+
+#include "core/modelIR/operations/operation.h"
+
+namespace nncc {
+namespace contrib {
+namespace core {
+namespace IR {
+namespace model {
+namespace ops {
+
+class DropoutOp : public OpDescription {
+public:
+ explicit DropoutOp(float rate) : OpDescription(1, 1), _rate(rate) {}
+
+ /**
+ * @return The ratio of random dropout
+ */
+ float getRate() const { return _rate; }
+
+private:
+ float _rate;
+};
+
+} // namespace ops
+} // namespace model
+} // namespace IR
+} // namespace core
+} // namespace contrib
+} // namespace nncc
+
+#endif //_NNC_CORE_IR_MODEL_DROPOUT_H_
--- /dev/null
+#ifndef _NNC_CORE_IR_MODEL_SCALE_H_
+#define _NNC_CORE_IR_MODEL_SCALE_H_
+
+#include "core/modelIR/operations/operation.h"
+
+namespace nncc
+{
+namespace contrib
+{
+namespace core
+{
+namespace IR
+{
+namespace model
+{
+namespace ops
+{
+
+class ScaleOp : public OpDescription
+{
+public:
+ explicit ScaleOp(const TensorVariant &weights) : OpDescription(1, 1), _weights(weights) {}
+
+ /**
+ * @return The input 1-dimensional scale tensor.
+ */
+ const TensorVariant &getWeights() const { return _weights; }
+
+private:
+ TensorVariant _weights;
+};
+
+} // namespace ops
+} // namespace model
+} // namespace IR
+} // namespace core
+} // namespace contrib
+} // namespace nncc
+
+#endif //_NNC_CORE_IR_MODEL_SCALE_H_