1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <vpu/frontend/frontend.hpp>
8 #include <unordered_set>
16 class GRNStage final : public StageNode {
18 StagePtr cloneImpl() const override {
19 return std::make_shared<GRNStage>(*this);
22 void propagateDataOrderImpl(StageDataInfo<DimsOrder>& orderInfo) override {
23 auto input = inputEdge(0)->input();
25 orderInfo.setOutput(outputEdge(0), input->desc().dimsOrder());
28 void getDataStridesRequirementsImpl(StageDataInfo<StridesRequirement>& stridesInfo) override {
31 void finalizeDataLayoutImpl() override {
34 void getBatchSupportInfoImpl(StageDataInfo<BatchSupport>& batchInfo) override {
35 batchInfo.setInput(inputEdge(0), BatchSupport::Split);
36 batchInfo.setOutput(outputEdge(0), BatchSupport::Split);
39 void initialCheckImpl() const override {
40 assertInputsOutputsTypes(this, {{DataType::FP16}}, {{DataType::FP16}});
43 void serializeParamsImpl(BlobSerializer& serializer) const override {
44 auto bias = attrs().get<float>("bias");
46 serializer.append(static_cast<float>(bias));
49 void serializeDataImpl(BlobSerializer& serializer) const override {
50 auto input = inputEdge(0)->input();
51 auto output = outputEdge(0)->output();
53 input->serializeNewBuffer(serializer);
54 output->serializeNewBuffer(serializer);
60 void FrontEnd::parseGRN(
61 const Model::Ptr& model,
62 const ie::CNNLayerPtr& _layer,
63 const DataVector& inputs,
64 const DataVector& outputs) {
65 IE_ASSERT(inputs.size() == 1);
66 IE_ASSERT(outputs.size() == 1);
68 auto layer = std::dynamic_pointer_cast<ie::GRNLayer>(_layer);
69 IE_ASSERT(layer != nullptr);
71 auto stage = model->addNewStage<GRNStage>(
78 stage->attrs().set<float>("bias", layer->bias);