From de686fce3904bde135d8ee83320ac46a8b85f119 Mon Sep 17 00:00:00 2001 From: Alexandra Sidorova Date: Mon, 26 Oct 2020 18:42:30 +0300 Subject: [PATCH] [CPU] Added operation HSigmoid-5 (#2005) --- .../src/mkldnn_plugin/mkldnn_graph_optimizer.cpp | 18 +++++++++++------- inference-engine/src/mkldnn_plugin/mkldnn_node.cpp | 1 + inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp | 2 ++ .../src/mkldnn_plugin/nodes/mkldnn_activation_node.cpp | 5 +++++ .../mkldnn_plugin/nodes/mkldnn_interpolate_node.cpp | 4 ++-- .../single_layer_tests/activation.cpp | 3 ++- inference-engine/thirdparty/mkl-dnn | 2 +- 7 files changed, 24 insertions(+), 11 deletions(-) diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp index 6e84701..41e17fb 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_graph_optimizer.cpp @@ -716,7 +716,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndActivation(MKLDNNGraph &graph) { (activationNode->getAlgorithm() == eltwise_relu || (conv->getCnnLayer()->precision == Precision::FP32 && isOneOf(activationNode->getAlgorithm(), {eltwise_elu, eltwise_logistic, eltwise_bounded_relu, eltwise_clamp, - eltwise_swish, eltwise_hswish, eltwise_mish}))); + eltwise_swish, eltwise_hswish, eltwise_mish, eltwise_hsigmoid}))); }; for (int i = 0; i < graphNodes.size(); i++) { @@ -854,7 +854,9 @@ void MKLDNNGraphOptimizer::FuseFullyConnectedAndSimpleOperation(MKLDNNGraph &gra if (activationNode == nullptr) THROW_IE_EXCEPTION << "Cannot get activation layer " << childNode->getName(); - return isOneOf(activationNode->getAlgorithm(), {eltwise_relu, eltwise_gelu, eltwise_elu, eltwise_logistic, eltwise_bounded_relu, eltwise_clamp}); + return isOneOf(activationNode->getAlgorithm(), {eltwise_relu, eltwise_gelu, eltwise_elu, eltwise_logistic, + eltwise_bounded_relu, eltwise_clamp, eltwise_swish, eltwise_hswish, + eltwise_mish, eltwise_hsigmoid}); } return false; @@ -1199,7 +1201,8 @@ void MKLDNNGraphOptimizer::FuseConvolutionAndSimpleOperation(MKLDNNGraph &graph) THROW_IE_EXCEPTION << "Cannot get activation layer " << node->getName(); return isOneOf(activationNode->getAlgorithm(), {eltwise_relu, eltwise_elu, eltwise_logistic, eltwise_bounded_relu, - eltwise_clamp, eltwise_swish, eltwise_hswish, eltwise_mish}); + eltwise_clamp, eltwise_swish, eltwise_hswish, eltwise_mish, + eltwise_hsigmoid}); } return false; @@ -1444,7 +1447,7 @@ void MKLDNNGraphOptimizer::FuseConvolutionSumAndConvolutionSumActivation(MKLDNNG (activationNode->getAlgorithm() == eltwise_relu || (conv->getCnnLayer()->precision == Precision::FP32 && isOneOf(activationNode->getAlgorithm(), {eltwise_elu, eltwise_logistic, eltwise_bounded_relu, eltwise_clamp, - eltwise_swish, eltwise_hswish, eltwise_mish}))); + eltwise_swish, eltwise_hswish, eltwise_mish, eltwise_hsigmoid}))); #else return false; #endif @@ -1862,8 +1865,8 @@ void MKLDNNGraphOptimizer::FuseNormalizeAndSimpleOperation(MKLDNNGraph &graph) { if (activationNode == nullptr) THROW_IE_EXCEPTION << "Cannot get activation layer " << node->getName(); return isOneOf(activationNode->getAlgorithm(), {eltwise_relu, eltwise_gelu, eltwise_elu, eltwise_logistic, - eltwise_bounded_relu, eltwise_clamp, eltwise_tanh, eltwise_swish, eltwise_hswish, eltwise_mish, eltwise_linear, - eltwise_abs, eltwise_square, eltwise_sqrt}); + eltwise_bounded_relu, eltwise_clamp, eltwise_tanh, eltwise_swish, eltwise_hswish, eltwise_mish, + eltwise_hsigmoid, eltwise_linear, eltwise_abs, eltwise_square, eltwise_sqrt}); } return false; }; @@ -1974,7 +1977,8 @@ void MKLDNNGraphOptimizer::FuseEltwiseAndSimple(MKLDNNGraph &graph) { if (activationNode == nullptr) THROW_IE_EXCEPTION << "Cannot get activation layer " << node->getName(); return isOneOf(activationNode->getAlgorithm(), {eltwise_relu, eltwise_elu, eltwise_logistic, eltwise_bounded_relu, - eltwise_clamp, eltwise_swish, eltwise_hswish, eltwise_mish}); + eltwise_clamp, eltwise_swish, eltwise_hswish, eltwise_mish, + eltwise_hsigmoid}); } return false; diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp index d956431..f459688 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_node.cpp @@ -77,6 +77,7 @@ static const InferenceEngine::details::caseless_unordered_map { "Swish", Activation }, { "HSwish", Activation }, { "Mish", Activation }, + { "HSigmoid", Activation }, { "ScaleShift", Depthwise }, { "PReLU", Depthwise }, { "Norm", Lrn }, diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp index b2d9d0b..97f97af 100644 --- a/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp +++ b/inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -143,6 +144,7 @@ static void Transformation(ICNNNetwork::Ptr& clonedNetwork, const Config& conf) pass_config->disable(); pass_config->disable(); pass_config->disable(); + pass_config->disable(); pass_config->enable(); diff --git a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_activation_node.cpp b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_activation_node.cpp index 8727b6e..144f8d9 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/mkldnn_activation_node.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/mkldnn_activation_node.cpp @@ -106,6 +106,11 @@ caseless_mapgetName(); return isOneOf(activationNode->getAlgorithm(), {eltwise_relu, eltwise_gelu, eltwise_elu, eltwise_logistic, - eltwise_bounded_relu, eltwise_clamp, eltwise_tanh, eltwise_swish, eltwise_hswish, eltwise_mish, eltwise_linear, - eltwise_abs, eltwise_square, eltwise_sqrt}); + eltwise_bounded_relu, eltwise_clamp, eltwise_tanh, eltwise_swish, eltwise_hswish, eltwise_mish, eltwise_hsigmoid, + eltwise_linear, eltwise_abs, eltwise_square, eltwise_sqrt}); } return false; } diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp index e349baa..fc50b3b 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/activation.cpp @@ -49,7 +49,8 @@ const std::map>> activationTypes {Ceiling, {}}, {Mish, {}}, {HSwish, {}}, - {SoftPlus, {}} + {SoftPlus, {}}, + {HSigmoid, {}} }; const std::map>> activationParamTypes = { diff --git a/inference-engine/thirdparty/mkl-dnn b/inference-engine/thirdparty/mkl-dnn index 6547f0b..4b23902 160000 --- a/inference-engine/thirdparty/mkl-dnn +++ b/inference-engine/thirdparty/mkl-dnn @@ -1 +1 @@ -Subproject commit 6547f0b6aac2725bd4e36197e19fb1a6f2ee2f51 +Subproject commit 4b239023043318899e1c0a3b79158a68b7efe6e4 -- 2.7.4