From f7cb5556fa6a2295f88282fcd0178f9740cecb2b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladimir=20Plazun/AI=20Tools=20Lab/Engineer/=EC=82=BC?= =?utf8?q?=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Fri, 1 Jun 2018 18:12:50 +0400 Subject: [PATCH] Add Pool operation description (#286) Add Pool operation desription class This class is used to represent pool operation in computation graph Signed-off-by: Vladimir Plazun --- .../include/nnc/core/IR/model/operations/pool_op.h | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 contrib/nnc/libs/core/include/nnc/core/IR/model/operations/pool_op.h diff --git a/contrib/nnc/libs/core/include/nnc/core/IR/model/operations/pool_op.h b/contrib/nnc/libs/core/include/nnc/core/IR/model/operations/pool_op.h new file mode 100644 index 0000000..75bcdc1 --- /dev/null +++ b/contrib/nnc/libs/core/include/nnc/core/IR/model/operations/pool_op.h @@ -0,0 +1,71 @@ +#ifndef _NNC_CORE_IR_MODEL_POOL_H_ +#define _NNC_CORE_IR_MODEL_POOL_H_ + +#include + +#include "nnc/core/IR/model/operations/operation.h" +#include "nnc/core/IR/model/operations/common.h" + +#include "nncc/core/ADT/tensor/Shape.h" + +namespace nncc +{ +namespace contrib +{ +namespace core +{ +namespace IR +{ +namespace model +{ +namespace ops +{ + +using nncc::core::ADT::tensor::Shape; + +class PoolOp : public OpDescription +{ +public: + enum class PoolingType + { + MAX, + AVG, + MIN + }; + + explicit PoolOp(const Shape &windowShape, const Shape &strides, PoolingType poolType, + PaddingType padding) + : OpDescription(1, 1), _padding(padding), _poolingType(poolType), _strides(strides), + _windowShape(windowShape) + { + _pads.resize(_windowShape.rank()); + } + + PaddingType getPaddingType() const { return _padding; } + + PoolingType getPoolingType() const { return _poolingType; } + + const Shape &getWindowShape() const { return _windowShape; } + + const Shape &getStrides() const { return _strides; } + + const int getPadding(int dim) const { return _pads[dim]; } + + void setPadding(int dim, int pad) { _pads[dim] = pad; } + +private: + PaddingType _padding; + PoolingType _poolingType; + Shape _windowShape; + Shape _strides; + std::vector _pads; +}; + +} // namespace ops +} // namespace model +} // namespace IR +} // namespace core +} // namespace contrib +} // namespace nncc + +#endif //_NNC_CORE_IR_MODEL_POOL_H_ -- 2.7.4