1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_psroi_pooling_layer.hpp>
6 #include <ie_cnn_layer_builder.h>
10 using namespace InferenceEngine;
12 Builder::PSROIPoolingLayer::PSROIPoolingLayer(const std::string& name): LayerDecorator("PSROIPooling", name) {
13 getLayer()->getOutputPorts().resize(1);
16 Builder::PSROIPoolingLayer::PSROIPoolingLayer(const Layer::Ptr& layer): LayerDecorator(layer) {
17 checkType("PSROIPooling");
20 Builder::PSROIPoolingLayer::PSROIPoolingLayer(const Layer::CPtr& layer): LayerDecorator(layer) {
21 checkType("PSROIPooling");
24 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setName(const std::string& name) {
25 getLayer()->setName(name);
28 const std::vector<Port>& Builder::PSROIPoolingLayer::getInputPorts() const {
29 return getLayer()->getInputPorts();
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;
37 const Port& Builder::PSROIPoolingLayer::getOutputPort() const {
38 return getLayer()->getOutputPorts()[0];
40 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setOutputPort(const Port& port) {
41 getLayer()->getOutputPorts()[0] = port;
44 float Builder::PSROIPoolingLayer::getSpatialScale() const {
45 return getLayer()->getParameters().at("spatial_scale");
47 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setSpatialScale(float spatialScale) {
48 getLayer()->getParameters()["spatial_scale"] = spatialScale;
51 size_t Builder::PSROIPoolingLayer::getOutputDim() const {
52 return getLayer()->getParameters().at("output_dim");
54 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setOutputDim(size_t outDim) {
55 getLayer()->getParameters()["output_dim"] = outDim;
58 size_t Builder::PSROIPoolingLayer::getGroupSize() const {
59 return getLayer()->getParameters().at("group_size");
61 Builder::PSROIPoolingLayer& Builder::PSROIPoolingLayer::setGroupSize(size_t size) {
62 getLayer()->getParameters()["group_size"] = size;
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);