1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_clamp_layer.hpp>
6 #include <ie_cnn_layer_builder.h>
10 using namespace InferenceEngine;
12 Builder::ClampLayer::ClampLayer(const std::string& name): LayerDecorator("Clamp", name) {
13 getLayer()->getOutputPorts().resize(1);
14 getLayer()->getInputPorts().resize(1);
19 Builder::ClampLayer::ClampLayer(const Layer::Ptr& layer): LayerDecorator(layer) {
23 Builder::ClampLayer::ClampLayer(const Layer::CPtr& layer): LayerDecorator(layer) {
27 Builder::ClampLayer& Builder::ClampLayer::setName(const std::string& name) {
28 getLayer()->setName(name);
32 const Port& Builder::ClampLayer::getPort() const {
33 return getLayer()->getOutputPorts()[0];
36 Builder::ClampLayer& Builder::ClampLayer::setPort(const Port &port) {
37 getLayer()->getOutputPorts()[0] = port;
38 getLayer()->getInputPorts()[0] = port;
42 float Builder::ClampLayer::getMaxValue() const {
43 return getLayer()->getParameters().at("max");
46 Builder::ClampLayer& Builder::ClampLayer::setMaxValue(float maxValue) {
47 getLayer()->getParameters()["max"] = maxValue;
51 float Builder::ClampLayer::getMinValue() const {
52 return getLayer()->getParameters().at("min");
55 Builder::ClampLayer& Builder::ClampLayer::setMinValue(float minValue) {
56 getLayer()->getParameters()["min"] = minValue;
60 REG_VALIDATOR_FOR(Clamp, [](const InferenceEngine::Builder::Layer::CPtr& input_layer, bool partial) {
61 Builder::ClampLayer layer(input_layer);
62 if (layer.getMinValue() > layer.getMaxValue()) {
63 THROW_IE_EXCEPTION << "MinValue should be less or equal MaxValue";
65 if (!input_layer->getInputPorts().empty() &&
66 !input_layer->getOutputPorts().empty() &&
67 !input_layer->getInputPorts()[0].shape().empty() &&
68 !input_layer->getOutputPorts()[0].shape().empty() &&
69 input_layer->getInputPorts()[0].shape() != input_layer->getOutputPorts()[0].shape()) {
70 THROW_IE_EXCEPTION << "Input and output ports should be equal";
74 REG_CONVERTER_FOR(Clamp, [](const CNNLayerPtr& cnnLayer, Builder::Layer& layer) {
75 layer.getParameters()["max"] = cnnLayer->GetParamAsFloat("max", 0);
76 layer.getParameters()["min"] = cnnLayer->GetParamAsFloat("min", 0);