Browse Source

fix pnnx hardtanh ncnn conversion

tags/20220420
nihui 4 years ago
parent
commit
06fadd374f
3 changed files with 59 additions and 3 deletions
  1. +30
    -1
      tools/pnnx/src/pass_ncnn/F_hardtanh.cpp
  2. +17
    -1
      tools/pnnx/src/pass_ncnn/F_leaky_relu.cpp
  3. +12
    -1
      tools/pnnx/src/pass_ncnn/nn_LeakyReLU.cpp

+ 30
- 1
tools/pnnx/src/pass_ncnn/F_hardtanh.cpp View File

@@ -14,6 +14,8 @@

#include "pass_ncnn.h"

#include <float.h>

namespace pnnx {

namespace ncnn {
@@ -26,7 +28,7 @@ public:
return R"PNNXIR(7767517
3 2
pnnx.Input input 0 1 input
F.hardtanh op_0 1 1 input out min_val=%0 max_val=%1
F.hardtanh op_0 1 1 input out min_val=%min_val max_val=%max_val
pnnx.Output output 1 0 out
)PNNXIR";
}
@@ -40,6 +42,33 @@ pnnx.Output output 1 0 out
{
return "htanh";
}

void write(Operator* op, const std::map<std::string, Parameter>& captured_params) const
{
float min = -FLT_MAX;
float max = FLT_MAX;

if (captured_params.at("min_val").type == 2)
{
min = captured_params.at("min_val").i;
}
if (captured_params.at("min_val").type == 3)
{
min = captured_params.at("min_val").f;
}

if (captured_params.at("max_val").type == 2)
{
max = captured_params.at("max_val").i;
}
if (captured_params.at("max_val").type == 3)
{
max = captured_params.at("max_val").f;
}

op->params["0"] = min;
op->params["1"] = max;
}
};

REGISTER_GLOBAL_PNNX_NCNN_GRAPH_REWRITER_PASS(F_hardtanh, 20)


+ 17
- 1
tools/pnnx/src/pass_ncnn/F_leaky_relu.cpp View File

@@ -26,7 +26,7 @@ public:
return R"PNNXIR(7767517
3 2
pnnx.Input input 0 1 input
F.leaky_relu op_0 1 1 input out negative_slope=%0
F.leaky_relu op_0 1 1 input out negative_slope=%negative_slope
pnnx.Output output 1 0 out
)PNNXIR";
}
@@ -40,6 +40,22 @@ pnnx.Output output 1 0 out
{
return "leakyrelu";
}

void write(Operator* op, const std::map<std::string, Parameter>& captured_params) const
{
float negative_slope = 0.f;

if (captured_params.at("negative_slope").type == 2)
{
negative_slope = captured_params.at("negative_slope").i;
}
if (captured_params.at("negative_slope").type == 3)
{
negative_slope = captured_params.at("negative_slope").f;
}

op->params["0"] = negative_slope;
}
};

REGISTER_GLOBAL_PNNX_NCNN_GRAPH_REWRITER_PASS(F_leaky_relu, 20)


+ 12
- 1
tools/pnnx/src/pass_ncnn/nn_LeakyReLU.cpp View File

@@ -43,7 +43,18 @@ pnnx.Output output 1 0 out

void write(Operator* op, const std::map<std::string, Parameter>& captured_params) const
{
op->params["0"] = captured_params.at("negative_slope");
float negative_slope = 0.f;

if (captured_params.at("negative_slope").type == 2)
{
negative_slope = captured_params.at("negative_slope").i;
}
if (captured_params.at("negative_slope").type == 3)
{
negative_slope = captured_params.at("negative_slope").f;
}

op->params["0"] = negative_slope;
}
};



Loading…
Cancel
Save