bool supportBackend(int backendId, int)
{
return backendId == DNN_BACKEND_OPENCV ||
- backendId == DNN_BACKEND_HALIDE;
+ backendId == DNN_BACKEND_HALIDE || backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH;;
}
void apply(const float* srcptr, float* dstptr, int len, size_t planeSize, int cn0, int cn1) const
#ifdef HAVE_DNN_NGRAPH
std::shared_ptr<ngraph::Node> initNgraphAPI(const std::shared_ptr<ngraph::Node>& node)
{
- CV_Error(Error::StsNotImplemented, "");
+ auto sigmoid = std::make_shared<ngraph::op::Sigmoid>(node);
+ return std::make_shared<ngraph::op::v1::Multiply>(node, sigmoid);
}
#endif // HAVE_DNN_NGRAPH
bool supportBackend(int backendId, int)
{
return backendId == DNN_BACKEND_OPENCV ||
- backendId == DNN_BACKEND_HALIDE;
+ backendId == DNN_BACKEND_HALIDE || backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH;
}
void apply(const float* srcptr, float* dstptr, int len, size_t planeSize, int cn0, int cn1) const
#ifdef HAVE_DNN_NGRAPH
std::shared_ptr<ngraph::Node> initNgraphAPI(const std::shared_ptr<ngraph::Node>& node)
{
- CV_Error(Error::StsNotImplemented, "");
+ float one = 1.0f;
+ auto constant = std::make_shared<ngraph::op::Constant>(ngraph::element::f32, ngraph::Shape{1}, &one);
+ auto exp_node = std::make_shared<ngraph::op::v0::Exp>(node);
+ auto sum = std::make_shared<ngraph::op::v1::Add>(constant, exp_node, ngraph::op::AutoBroadcastType::NUMPY);
+ auto log_node = std::make_shared<ngraph::op::v0::Log>(sum);
+ auto tanh_node = std::make_shared<ngraph::op::Tanh>(log_node);
+ return std::make_shared<ngraph::op::v1::Multiply>(node, tanh_node);
}
#endif // HAVE_DNN_NGRAPH