1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_power_layer.hpp>
6 #include <ie_cnn_layer_builder.h>
10 using namespace InferenceEngine;
12 Builder::PowerLayer::PowerLayer(const std::string& name): LayerDecorator("Power", name) {
13 getLayer()->getOutputPorts().resize(1);
14 getLayer()->getInputPorts().resize(1);
20 Builder::PowerLayer::PowerLayer(const Layer::Ptr& layer): LayerDecorator(layer) {
24 Builder::PowerLayer::PowerLayer(const Layer::CPtr& layer): LayerDecorator(layer) {
28 Builder::PowerLayer& Builder::PowerLayer::setName(const std::string& name) {
29 getLayer()->setName(name);
33 const Port& Builder::PowerLayer::getPort() const {
34 return getLayer()->getOutputPorts()[0];
37 Builder::PowerLayer& Builder::PowerLayer::setPort(const Port &port) {
38 getLayer()->getOutputPorts()[0] = port;
39 getLayer()->getInputPorts()[0] = port;
43 float Builder::PowerLayer::getPower() const {
44 return getLayer()->getParameters().at("power");
47 Builder::PowerLayer& Builder::PowerLayer::setPower(float power) {
48 getLayer()->getParameters()["power"] = power;
52 float Builder::PowerLayer::getScale() const {
53 return getLayer()->getParameters().at("scale");
56 Builder::PowerLayer& Builder::PowerLayer::setScale(float scale) {
57 getLayer()->getParameters()["scale"] = scale;
61 float Builder::PowerLayer::getShift() const {
62 return getLayer()->getParameters().at("shift");
65 Builder::PowerLayer& Builder::PowerLayer::setShift(float shift) {
66 getLayer()->getParameters()["shift"] = shift;
70 REG_CONVERTER_FOR(Power, [](const CNNLayerPtr& cnnLayer, Builder::Layer& layer) {
71 layer.getParameters()["shift"] = cnnLayer->GetParamAsFloat("shift", 0);
72 layer.getParameters()["scale"] = cnnLayer->GetParamAsFloat("scale", 1);
73 layer.getParameters()["power"] = cnnLayer->GetParamAsFloat("power", 1);