# Default packages
#
-set(FIRMWARE_PACKAGE_VERSION 1430)
+set(FIRMWARE_PACKAGE_VERSION 1440)
set(VPU_CLC_MA2X8X_VERSION "movi-cltools-20.09.1")
#
void parseSwish(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const;
void parseActivation(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const;
void parseLogicalNot(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const;
+ void parseHSwish(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const;
//
// Special layers
StridedSlice = 133,
SoftPlus = 134,
Swish = 135,
+ HSwish = 137,
)
//
{"SoftPlus", LAYER_PARSER(parseSoftPlus)},
{"Swish", LAYER_PARSER(parseSwish)},
{"Activation", LAYER_PARSER(parseActivation)},
+ {"HSwish", LAYER_PARSER(parseHSwish)},
}} {
VPU_THROW_UNLESS(_core != nullptr, "Argument core is null");
}
const bool casesWithDynamicOrStaticUsage =
std::dynamic_pointer_cast<const ngraph::opset3::Gelu>(node) ||
std::dynamic_pointer_cast<const ngraph::opset4::SoftPlus>(node) ||
- std::dynamic_pointer_cast<const ngraph::opset5::Minimum>(node);
+ std::dynamic_pointer_cast<const ngraph::opset5::Minimum>(node) ||
+ std::dynamic_pointer_cast<const ngraph::opset5::HSwish>(node);
const bool casesWithOnlyDynamicUsage =
(std::dynamic_pointer_cast<const ngraph::opset3::MatMul>(node) ||
manager.register_pass<ngraph::pass::ConvertOpSet3ToOpSet2>();
manager.register_pass<ngraph::pass::ConvertOpSet2ToOpSet1>();
manager.register_pass<ngraph::pass::ConvertOpSet1ToLegacy>();
+
manager.set_callback(transformationsPredicate);
manager.run_passes(nGraphFunc);
--- /dev/null
+// Copyright (C) 2020 Intel Corporation
+// SPDX-License-Identifier: Apache-2.0
+//
+
+#include <vpu/frontend/frontend.hpp>
+#include <vpu/stages/post_op_stage.hpp>
+
+namespace vpu {
+
+namespace {
+
+class HSwishStage final : public PostOpStage {
+public:
+ using PostOpStage::PostOpStage;
+
+private:
+ StagePtr cloneImpl() const override {
+ return std::make_shared<HSwishStage >(*this);
+ }
+
+ void serializeParamsImpl(BlobSerializer&) const override {
+ }
+};
+
+} // namespace
+
+void FrontEnd::parseHSwish(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const {
+ VPU_THROW_UNLESS((inputs.size() == 1),
+ "HSwish stage with name {} must have only 1 input, "
+ "actually provided {}", layer->name, inputs.size());
+ VPU_THROW_UNLESS(outputs.size() == 1,
+ "HSwish stage with name {} must have only 1 output, "
+ "actually provided {}", layer->name, outputs.size());
+
+ model->addNewStage<HSwishStage>(layer->name, StageType::HSwish, layer, inputs, outputs);
+}
+
+} // namespace vpu
{Gelu, {}},
{Mish, {}},
{SoftPlus, {}},
- {Swish, {{0.05f}, {0.8f}, {1.0f}, {15.0f}}}
+ {Swish, {{0.05f}, {0.8f}, {1.0f}, {15.0f}}},
+ {HSwish, {}},
};
std::map<std::vector<size_t>, std::vector<std::vector<size_t>>> basic = {