From d42d34e2ee22719842e441e8792851f6533bac7b Mon Sep 17 00:00:00 2001 From: Liubov Batanina Date: Mon, 20 Jan 2020 17:07:35 +0300 Subject: [PATCH] Support lrn with SPATIAL_NRM --- modules/dnn/src/layers/lrn_layer.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/dnn/src/layers/lrn_layer.cpp b/modules/dnn/src/layers/lrn_layer.cpp index ba4f71aa01..82267c9eb3 100644 --- a/modules/dnn/src/layers/lrn_layer.cpp +++ b/modules/dnn/src/layers/lrn_layer.cpp @@ -103,7 +103,7 @@ public: return bias == (int)bias; } if (backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH) { - return type == CHANNEL_NRM && bias == (int)bias; + return bias == (int)bias; } return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_CUDA || @@ -471,7 +471,15 @@ public: alphaSize *= (type == SPATIAL_NRM ? size*size : size); auto& ieInpNode = nodes[0].dynamicCast()->node; - auto lrn = std::make_shared(ieInpNode, (double)alphaSize, (double)beta, (double)bias, (size_t)size); + std::vector axes; + if (type != SPATIAL_NRM) { + axes = {1}; + } else { + axes.resize(ieInpNode->get_shape().size() - 2); + std::iota(axes.begin(), axes.end(), 2); + } + auto ngraph_axes = std::make_shared(ngraph::element::i64, ngraph::Shape{axes.size()}, axes.data()); + auto lrn = std::make_shared(ieInpNode, ngraph_axes, alphaSize, beta, bias, size); return Ptr(new InfEngineNgraphNode(lrn)); } #endif // HAVE_DNN_NGRAPH