1 // Copyright (C) 2018 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_eltwise_layer.hpp>
6 #include <details/caseless.hpp>
11 using namespace InferenceEngine;
13 Builder::EltwiseLayer::EltwiseLayer(const std::string& name): LayerFragment("Eltwise", name) {
14 getLayer().getOutputPorts().resize(1);
15 setEltwiseType(EltwiseType::SUM);
18 Builder::EltwiseLayer::EltwiseLayer(Layer& genLayer): LayerFragment(genLayer) {
19 if (!details::CaselessEq<std::string>()(getLayer().getType(), "Eltwise"))
20 THROW_IE_EXCEPTION << "Cannot create EltwiseLayer decorator for layer " << getLayer().getType();
22 std::string operatorStr = getLayer().getParameters()["operation"];
23 if (operatorStr == "max") {
25 } else if (operatorStr == "sum") {
27 } else if (operatorStr == "mul") {
32 Builder::EltwiseLayer& Builder::EltwiseLayer::setName(const std::string& name) {
33 getLayer().getName() = name;
37 const std::vector<Port>& Builder::EltwiseLayer::getInputPorts() const {
38 return getLayer().getInputPorts();
41 Builder::EltwiseLayer& Builder::EltwiseLayer::setInputPorts(const std::vector<Port>& ports) {
42 getLayer().getInputPorts() = ports;
46 const Port& Builder::EltwiseLayer::getOutputPort() const {
47 return getLayer().getOutputPorts()[0];
50 Builder::EltwiseLayer& Builder::EltwiseLayer::setOutputPort(const Port &port) {
51 getLayer().getOutputPorts()[0] = port;
55 const std::vector<float> Builder::EltwiseLayer::getScales() const {
56 return getLayer().getParameters()["scales"].asFloats({});
59 // TODO: IR doesn't contain Scales!!!
60 Builder::EltwiseLayer& Builder::EltwiseLayer::setScales(const std::vector<float>& scales) {
61 getLayer().getParameters()["scales"] = scales;
65 Builder::EltwiseLayer::EltwiseType Builder::EltwiseLayer::getEltwiseType() const {
69 Builder::EltwiseLayer& Builder::EltwiseLayer::setEltwiseType(Builder::EltwiseLayer::EltwiseType type) {
71 std::string operatorStr;
82 getLayer().getParameters()["operation"] = operatorStr;