1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <vpu/frontend/frontend.hpp>
10 #include <vpu/sw/post_op_stage.hpp>
16 class PReluStage final : public PostOpStage {
18 StagePtr cloneImpl() const override {
19 return std::make_shared<PReluStage>(*this);
22 void serializeParamsImpl(BlobSerializer&) const override {
28 void FrontEnd::parsePReLU(
29 const Model::Ptr& model,
30 const ie::CNNLayerPtr& layer,
31 const DataVector& inputs,
32 const DataVector& outputs) {
33 IE_ASSERT(inputs.size() == 1);
34 IE_ASSERT(outputs.size() == 1);
36 auto weightsIt = layer->blobs.find("weights");
37 if (weightsIt == layer->blobs.end()) {
38 THROW_IE_EXCEPTION << "[VPU] PReLU doesn't have weights";
41 auto weightsBlob = weightsIt->second;
42 IE_ASSERT(weightsBlob != nullptr);
44 auto channelShared = layer->GetParamAsInt("channel_shared", 0);
46 auto output = outputs[0];
48 auto weights = model->addConstData(
49 layer->name + "@weights",
50 DataDesc({output->desc().dim(Dim::C)}),
53 channelShared ? output->desc().dim(Dim::C) : 1));
55 model->addNewStage<PReluStage>(