Batchnormalization Layer */
| 187 | |
| 188 | /** Batchnormalization Layer */ |
| 189 | class BatchNormalizationLayer final : public ILayer |
| 190 | { |
| 191 | public: |
| 192 | /** Construct a batch normalization layer. |
| 193 | * |
| 194 | * @param[in] mean Accessor to get mean tensor data from. |
| 195 | * @param[in] var Accessor to get var tensor data from. |
| 196 | * @param[in] gamma (Optional) Accessor to get gamma tensor data from. Default: nullptr. |
| 197 | * @param[in] beta (Optional) Accessor to get beta tensor data from. Default: nullptr. |
| 198 | * @param[in] epsilon (Optional) Epsilon value. Default: 0.001. |
| 199 | */ |
| 200 | BatchNormalizationLayer(ITensorAccessorUPtr mean, |
| 201 | ITensorAccessorUPtr var, |
| 202 | ITensorAccessorUPtr gamma = nullptr, |
| 203 | ITensorAccessorUPtr beta = nullptr, |
| 204 | float epsilon = 0.001f) |
| 205 | : _mean(std::move(mean)), |
| 206 | _var(std::move(var)), |
| 207 | _gamma(std::move(gamma)), |
| 208 | _beta(std::move(beta)), |
| 209 | _epsilon(epsilon) |
| 210 | { |
| 211 | } |
| 212 | |
| 213 | NodeID create_layer(IStream &s) override |
| 214 | { |
| 215 | ARM_COMPUTE_ERROR_ON(_mean == nullptr); |
| 216 | ARM_COMPUTE_ERROR_ON(_var == nullptr); |
| 217 | |
| 218 | NodeParams common_params = {name(), s.hints().target_hint}; |
| 219 | NodeIdxPair input = {s.tail_node(), 0}; |
| 220 | return GraphBuilder::add_batch_normalization_node(s.graph(), common_params, input, _epsilon, std::move(_mean), |
| 221 | std::move(_var), std::move(_beta), std::move(_gamma)); |
| 222 | } |
| 223 | |
| 224 | private: |
| 225 | ITensorAccessorUPtr _mean; |
| 226 | ITensorAccessorUPtr _var; |
| 227 | ITensorAccessorUPtr _gamma; |
| 228 | ITensorAccessorUPtr _beta; |
| 229 | float _epsilon; |
| 230 | }; |
| 231 | |
| 232 | /** Bounding Box Transform Layer */ |
| 233 | class BoundingBoxTransformLayer final : public ILayer |
no outgoing calls
no test coverage detected