Skip to content
Snippets Groups Projects
Commit d95abd33 authored by Cyril Moineau's avatar Cyril Moineau
Browse files

Fix clip implementation + add ReLU int8.

parent 9765d6e8
No related branches found
No related tags found
2 merge requests!166Update 0.5.0 -> 0.6.0,!151Fix clip implementation + add ReLU int8.
Pipeline #68820 passed
...@@ -23,13 +23,14 @@ void ClipImpl_cpu_forward_kernel( ...@@ -23,13 +23,14 @@ void ClipImpl_cpu_forward_kernel(
float max_, float max_,
const void* input_, const void* input_,
const std::size_t length, const std::size_t length,
void* output_) void* output_)
{ {
const I* input = static_cast<const I*>(input_); const I* input = static_cast<const I*>(input_);
O* output = static_cast<O*>(output_); O* output = static_cast<O*>(output_);
I minCasted = static_cast<I>(min_);
I maxCasted = static_cast<I>(max_);
for (std::size_t i = 0; i < length; ++i) { for (std::size_t i = 0; i < length; ++i) {
output[i] = std::min(std::max(static_cast<float>(input[i]), min_), max_); output[i] = std::min(std::max(input[i], minCasted), maxCasted);
} }
} }
...@@ -38,9 +39,9 @@ void ClipImpl_cpu_backward_kernel( ...@@ -38,9 +39,9 @@ void ClipImpl_cpu_backward_kernel(
float min_, float min_,
float max_, float max_,
const std::size_t length, const std::size_t length,
const void* input_, const void* input_,
const void* grad_output_, const void* grad_output_,
void* grad_input_) void* grad_input_)
{ {
const I* input = static_cast<const I*>(input_); const I* input = static_cast<const I*>(input_);
const GO* grad_output = static_cast<const GO*>(grad_output_); const GO* grad_output = static_cast<const GO*>(grad_output_);
......
...@@ -60,7 +60,10 @@ REGISTRAR(ReLUImpl_cpu, ...@@ -60,7 +60,10 @@ REGISTRAR(ReLUImpl_cpu,
{ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<double, double>, Aidge::ReLUImpl_cpu_backward_kernel<double, double, double>}); {ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<double, double>, Aidge::ReLUImpl_cpu_backward_kernel<double, double, double>});
REGISTRAR(ReLUImpl_cpu, REGISTRAR(ReLUImpl_cpu,
{DataType::Int32}, {DataType::Int32},
{ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<int32_t, int32_t>, Aidge::ReLUImpl_cpu_backward_kernel<int32_t, int32_t, int32_t>}); {ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<int32_t, int32_t>, nullptr});
REGISTRAR(ReLUImpl_cpu,
{DataType::Int8},
{ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<int8_t, int8_t>, nullptr});
} // namespace Aidge } // namespace Aidge
#endif /* AIDGE_CPU_OPERATOR_RELUIMPL_KERNELS_H_ */ #endif /* AIDGE_CPU_OPERATOR_RELUIMPL_KERNELS_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment