33 nnfw::cker::AveragePool<T>(params,
getShape(input), getBuffer<T>(input),
getShape(output),
41 nnfw::cker::MaxPool<T>(params,
getShape(input), getBuffer<T>(input),
getShape(output),
51 return std::bind(&avgPool2D<T>, params, std::placeholders::_1, std::placeholders::_2);
55 return std::bind(&maxPool2D<T>, params, std::placeholders::_1, std::placeholders::_2);
83 const uint32_t paddingTop,
const uint32_t,
const uint32_t strideWidth,
84 const uint32_t strideHeight,
const uint32_t kernelWidth,
88 assert(input !=
nullptr);
89 assert(output !=
nullptr);
98 case OperandType::FLOAT32:
100 float output_activation_min = 0;
101 float output_activation_max = 0;
102 CalculateActivationRange<float>(activation, &output_activation_min, &output_activation_max);
103 op_params.float_activation_min = output_activation_min;
104 op_params.float_activation_max = output_activation_max;
106 _kernel = generateKernelGeneric<float>(op_params, op_type);
109 case OperandType::QUANT_UINT8_ASYMM:
111 int32_t output_activation_min = 0;
112 int32_t output_activation_max = 0;
114 &output_activation_max);
115 op_params.quantized_activation_min = output_activation_min;
116 op_params.quantized_activation_max = output_activation_max;
117 _kernel = generateKernelGeneric<uint8_t>(op_params, op_type);
120 case OperandType::QUANT_INT8_ASYMM:
122 int32_t output_activation_min = 0;
123 int32_t output_activation_max = 0;
125 &output_activation_max);
126 op_params.quantized_activation_min = output_activation_min;
127 op_params.quantized_activation_max = output_activation_max;
128 _kernel = generateKernelGeneric<int8_t>(op_params, op_type);
132 throw std::runtime_error{
"Pool: unsupported data type"};
void configure(const IPortableTensor *input, const uint32_t paddingLeft, const uint32_t paddingRight, const uint32_t paddingTop, const uint32_t paddingBottom, const uint32_t strideWidth, const uint32_t strideHeight, const uint32_t kernelWidth, const uint32_t kernelHeight, const ir::Activation activation, IPortableTensor *output, const PoolType op_type)