1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
7 #include <builders/ie_layer_decorator.hpp>
8 #include <ie_network.hpp>
12 namespace InferenceEngine {
16 * @brief The class represents a builder for Pooling layer
18 class INFERENCE_ENGINE_API_CLASS(PoolingLayer): public LayerDecorator {
21 * @brief The enum defines available pooling types
29 * @brief The enum defines available rounding types
37 * @brief The constructor creates a builder with the name
38 * @param name Layer name
40 explicit PoolingLayer(const std::string& name = "");
42 * @brief The constructor creates a builder from generic builder
43 * @param layer pointer to generic builder
45 explicit PoolingLayer(const Layer::Ptr& layer);
47 * @brief The constructor creates a builder from generic builder
48 * @param layer constant pointer to generic builder
50 explicit PoolingLayer(const Layer::CPtr& layer);
52 * @brief Operator creates generic layer builder
53 * @return Generic layer builder
55 operator Layer() const override;
57 * @brief Sets the name for the layer
58 * @param name Layer name
59 * @return reference to layer builder
61 PoolingLayer& setName(const std::string& name);
64 * @brief Returns input port
67 const Port& getInputPort() const;
69 * @brief Sets input port
70 * @param port Input port
71 * @return reference to layer builder
73 PoolingLayer& setInputPort(const Port& port);
75 * @brief Returns output port
78 const Port& getOutputPort() const;
80 * @brief Sets output port
81 * @param port Output port
82 * @return reference to layer builder
84 PoolingLayer& setOutputPort(const Port& port);
86 * @brief Returns kernel size
89 const std::vector<size_t> getKernel() const;
91 * @brief Sets kernel size
92 * @param kernel Kernel size
93 * @return reference to layer builder
95 PoolingLayer& setKernel(const std::vector<size_t>& kernel);
97 * @brief Returns vector of strides
98 * @return vector of strides
100 const std::vector<size_t> getStrides() const;
102 * @brief Sets strides
103 * @param strides vector of strides
104 * @return reference to layer builder
106 PoolingLayer& setStrides(const std::vector<size_t>& strides);
108 * @brief Returns begin paddings
109 * @return vector of paddings
111 const std::vector<size_t> getPaddingsBegin() const;
113 * @brief Sets begin paddings
114 * @param paddings Vector of paddings
115 * @return reference to layer builder
117 PoolingLayer& setPaddingsBegin(const std::vector<size_t>& paddings);
119 * @brief Return end paddings
120 * @return Vector of paddings
122 const std::vector<size_t> getPaddingsEnd() const;
124 * @brief Sets end paddings
125 * @param paddings Vector of paddings
126 * @return reference to layer builder
128 PoolingLayer& setPaddingsEnd(const std::vector<size_t>& paddings);
130 * @brief Returns pooling type
131 * @return Pooling type
133 PoolingType getPoolingType() const;
135 * @brief Sets pooling type
136 * @param type Pooling type
137 * @return reference to layer builder
139 PoolingLayer& setPoolingType(PoolingType type);
141 * @brief Returns rounding type
142 * @return Rounding type
144 RoundingType getRoundingType() const;
146 * @brief Sets rounding types
147 * @param type Rounding type
148 * @return reference to layer builder
150 PoolingLayer& setRoundingType(RoundingType type);
152 * @brief Returns a type of pooling strategy
153 * @return true if zero-values in the padding are not used
155 bool getExcludePad() const;
157 * @brief Sets a type of pooling strategy
158 * @param exclude zero-values in the padding are not used if true
159 * @return reference to layer builder
161 PoolingLayer& setExcludePad(bool exclude);
165 RoundingType roundingType;
168 } // namespace Builder
169 } // namespace InferenceEngine