Publishing 2019 R1.1 content and Myriad plugin sources (#162)
[platform/upstream/dldt.git] / inference-engine / src / vpu / graph_transformer / src / stages / elu.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <vpu/frontend/frontend.hpp>
6
7 #include <vector>
8 #include <memory>
9 #include <set>
10
11 #include <vpu/sw/post_op_stage.hpp>
12
13 namespace vpu {
14
15 namespace {
16
17 class EluStage final : public PostOpStage {
18 private:
19     StagePtr cloneImpl() const override {
20         return std::make_shared<EluStage>(*this);
21     }
22
23     void serializeParamsImpl(BlobSerializer& serializer) const override {
24         auto alpha = attrs().get<float>("alpha");
25
26         serializer.append(static_cast<float>(alpha));
27     }
28 };
29
30 }  // namespace
31
32 void FrontEnd::parseELU(
33         const Model::Ptr& model,
34         const ie::CNNLayerPtr& layer,
35         const DataVector& inputs,
36         const DataVector& outputs) {
37     IE_ASSERT(inputs.size() == 1);
38     IE_ASSERT(outputs.size() == 1);
39
40     auto alpha = layer->GetParamAsFloat("alpha", 1.0f);
41
42     auto stage = model->addNewStage<EluStage>(
43         layer->name,
44         StageType::Elu,
45         layer,
46         inputs,
47         outputs);
48
49     stage->attrs().set<float>("alpha", alpha);
50 }
51
52 }  // namespace vpu