Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / src / inference_engine / builders / ie_psroi_pooling_layer.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <builders/ie_psroi_pooling_layer.hpp>
6 #include <ie_cnn_layer_builder.h>
7 #include <vector>
8 #include <string>
9
10 using namespace InferenceEngine;
11
12 Builder::PSROIPoolingLayer::PSROIPoolingLayer(const std::string& name): LayerDecorator("PSROIPooling", name) {
13     getLayer()->getOutputPorts().resize(1);
14 }
15
16 Builder::PSROIPoolingLayer::PSROIPoolingLayer(const Layer::Ptr& layer): LayerDecorator(layer) {
17     checkType("PSROIPooling");
18 }
19
20 Builder::PSROIPoolingLayer::PSROIPoolingLayer(const Layer::CPtr& layer): LayerDecorator(layer) {
21     checkType("PSROIPooling");
22 }
23
24 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setName(const std::string& name) {
25     getLayer()->setName(name);
26     return *this;
27 }
28 const std::vector<Port>& Builder::PSROIPoolingLayer::getInputPorts() const {
29     return getLayer()->getInputPorts();
30 }
31 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setInputPorts(const std::vector<Port>& ports) {
32     if (ports.size() != 2)
33         THROW_IE_EXCEPTION << "PSROIPoolingLayer should have 2 inputs!";
34     getLayer()->getInputPorts() = ports;
35     return *this;
36 }
37 const Port& Builder::PSROIPoolingLayer::getOutputPort() const {
38     return getLayer()->getOutputPorts()[0];
39 }
40 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setOutputPort(const Port& port) {
41     getLayer()->getOutputPorts()[0] = port;
42     return *this;
43 }
44 float Builder::PSROIPoolingLayer::getSpatialScale() const {
45     return getLayer()->getParameters().at("spatial_scale");
46 }
47 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setSpatialScale(float spatialScale) {
48     getLayer()->getParameters()["spatial_scale"] = spatialScale;
49     return *this;
50 }
51 size_t Builder::PSROIPoolingLayer::getOutputDim() const {
52     return getLayer()->getParameters().at("output_dim");
53 }
54 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setOutputDim(size_t outDim) {
55     getLayer()->getParameters()["output_dim"] = outDim;
56     return *this;
57 }
58 size_t Builder::PSROIPoolingLayer::getGroupSize() const {
59     return getLayer()->getParameters().at("group_size");
60 }
61 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setGroupSize(size_t size) {
62     getLayer()->getParameters()["group_size"] = size;
63     return *this;
64 }
65
66 REG_CONVERTER_FOR(PSROIPooling, [](const CNNLayerPtr& cnnLayer, Builder::Layer& layer) {
67     layer.getParameters()["group_size"] = static_cast<size_t>(cnnLayer->GetParamAsUInt("group_size", 0));
68     layer.getParameters()["output_dim"] = static_cast<size_t>(cnnLayer->GetParamAsUInt("output_dim", 0));
69     layer.getParameters()["spatial_scale"] = cnnLayer->GetParamAsFloat("spatial_scale", 0);
70 });