diff options
Diffstat (limited to 'compiler/luci-interpreter/src/kernels/MaxPool2D.test.cpp')
-rw-r--r-- | compiler/luci-interpreter/src/kernels/MaxPool2D.test.cpp | 46 |
1 files changed, 37 insertions, 9 deletions
diff --git a/compiler/luci-interpreter/src/kernels/MaxPool2D.test.cpp b/compiler/luci-interpreter/src/kernels/MaxPool2D.test.cpp index 390255d89..1d7fe06c4 100644 --- a/compiler/luci-interpreter/src/kernels/MaxPool2D.test.cpp +++ b/compiler/luci-interpreter/src/kernels/MaxPool2D.test.cpp @@ -54,8 +54,7 @@ TEST(MaxPool2DTest, Float) 5, 6, // }; std::initializer_list<int32_t> ref_output_shape{1, 2, 2, 1}; - EXPECT_THAT(extractTensorData<float>(output_tensor), - ElementsAreArray(ArrayFloatNear(ref_output_data))); + EXPECT_THAT(extractTensorData<float>(output_tensor), FloatArrayNear(ref_output_data)); EXPECT_THAT(extractTensorShape(output_tensor), ::testing::ElementsAreArray(ref_output_shape)); } @@ -66,11 +65,9 @@ TEST(MaxPool2DTest, Uint8) 0, -6, 12, 4, // -3, -2, 10, 7, // }; - Tensor input_tensor{DataType::U8, {1, 2, 4, 1}, {{quant_param.first}, {quant_param.second}}, ""}; + Tensor input_tensor = makeInputTensor<DataType::U8>({1, 2, 4, 1}, quant_param.first, + quant_param.second, input_data); Tensor output_tensor = makeOutputTensor(DataType::U8, quant_param.first, quant_param.second); - std::vector<uint8_t> quantize_input = - quantize<uint8_t>(input_data, quant_param.first, quant_param.second); - input_tensor.writeData(quantize_input.data(), quantize_input.size() * sizeof(uint8_t)); Pool2DParams params{}; params.padding = Padding::VALID; @@ -86,12 +83,43 @@ TEST(MaxPool2DTest, Uint8) std::vector<float> ref_output_data{0.0, 6.0}; std::initializer_list<int32_t> ref_output_shape{1, 1, 2, 1}; - EXPECT_THAT(dequantize<uint8_t>(extractTensorData<uint8_t>(output_tensor), output_tensor.scale(), - output_tensor.zero_point()), - ElementsAreArray(ArrayFloatNear(ref_output_data))); + EXPECT_THAT(dequantizeTensorData(output_tensor), FloatArrayNear(ref_output_data)); EXPECT_THAT(extractTensorShape(output_tensor), ::testing::ElementsAreArray(ref_output_shape)); } +TEST(MaxPool2DTest, SInt16) +{ + Shape input_shape{1, 3, 5, 1}; + std::vector<int32_t> ref_output_shape{1, 2, 2, 1}; + std::vector<float> input_data{ + 1, -1, 0, -2, 2, // + -7, -6, -5, -4, -3, // + 5, 4, 3, 6, 7, // + }; + std::vector<float> ref_output_data{ + 1, 2, // + 5, 6, // + }; + + Tensor input_tensor = makeInputTensor<DataType::S16>(input_shape, 0.2, 0, input_data); + Tensor output_tensor = makeOutputTensor(DataType::S16, 0.2, 0); + + Pool2DParams params{}; + params.padding = Padding::VALID; + params.filter_height = 2; + params.filter_width = 3; + params.stride_height = 1; + params.stride_width = 2; + params.activation = Activation::RELU6; + + MaxPool2D kernel(&input_tensor, &output_tensor, params); + kernel.configure(); + kernel.execute(); + + EXPECT_THAT(extractTensorShape(output_tensor), ::testing::ElementsAreArray(ref_output_shape)); + EXPECT_THAT(dequantizeTensorData(output_tensor), FloatArrayNear(ref_output_data)); +} + } // namespace } // namespace kernels } // namespace luci_interpreter |