diff --git a/modules/dnn/src/layers/elementwise_layers.cpp b/modules/dnn/src/layers/elementwise_layers.cpp index b84523eb93a16ce879a2a8effd1cabff5242cb0e..e4375abd6dcd6cf55b5ff23bfaa13306d366f78b 100644 --- a/modules/dnn/src/layers/elementwise_layers.cpp +++ b/modules/dnn/src/layers/elementwise_layers.cpp @@ -680,7 +680,14 @@ struct SigmoidFunctor : public BaseDefaultFunctor inline float calculate(float x) const { - return 1.f / (1.f + exp(-x)); + float y; + if (x >= 0) + y = 1.f / (1.f + exp(-x)); + else { + y = exp(x); + y = y / (1 + y); + } + return y; } #ifdef HAVE_HALIDE