diff --git a/src/tim/vx/ops/localresponsenormalization_test.cc b/src/tim/vx/ops/localresponsenormalization_test.cc index 84f0ff6..16b7ff2 100644 --- a/src/tim/vx/ops/localresponsenormalization_test.cc +++ b/src/tim/vx/ops/localresponsenormalization_test.cc @@ -47,16 +47,57 @@ TEST(localresponsenormalization, axis_0_shape_6_1_1_1_float) { EXPECT_TRUE(input_tensor->CopyDataToTensor(in_data.data(), in_data.size() * sizeof(float))); - int radius = 5; + int radius = 2; + int size = radius * 2; float alpha = 4.0, beta = 0.5, bias = 9.0; auto op = graph->CreateOperation( - radius, alpha, beta, bias, 0); + size, alpha, beta, bias, 0); (*op).BindInputs({input_tensor}).BindOutputs({output_tensor}); EXPECT_TRUE(graph->Compile()); EXPECT_TRUE(graph->Run()); - std::vector output(18); + std::vector output(golden.size()); + EXPECT_TRUE(output_tensor->CopyDataFromTensor(output.data())); + EXPECT_TRUE(ArraysMatch(golden, output, 1e-5f)); +} + +TEST(localresponsenormalization, axis_1_shape_2_6_float) { + auto ctx = tim::vx::Context::Create(); + auto graph = ctx->CreateGraph(); + + tim::vx::ShapeType io_shape({2, 6}); + tim::vx::TensorSpec input_spec(tim::vx::DataType::FLOAT32, io_shape, + tim::vx::TensorAttribute::INPUT); + tim::vx::TensorSpec output_spec(tim::vx::DataType::FLOAT32, io_shape, + tim::vx::TensorAttribute::OUTPUT); + + auto input_tensor = graph->CreateTensor(input_spec); + auto output_tensor = graph->CreateTensor(output_spec); + + std::vector in_data = {-1.100000023841858f, -1.100000023841858f, 0.6000000238418579f, + 0.6000000238418579f, 0.699999988079071f, 0.699999988079071f, + 1.2000000476837158f, 1.2000000476837158f, -0.699999988079071f, + -0.699999988079071f, 0.10000000149011612f, 0.10000000149011612f}; + std::vector golden = {-0.26492568850517273f, -0.26492568850517273f, 0.12510864436626434f, + 0.12510864436626434f, 0.14011213183403015f, 0.14011213183403015f, + 0.267261266708374f, 0.267261266708374f, -0.16178755462169647f, + -0.16178755462169647f, 0.024426599964499474f, 0.024426599964499474f}; + + EXPECT_TRUE(input_tensor->CopyDataToTensor(in_data.data(), + in_data.size() * sizeof(float))); + + int radius = 2; + int size = radius * 2; + float alpha = 4.0, beta = 0.5, bias = 9.0; + auto op = graph->CreateOperation( + size, alpha, beta, bias, 1); + (*op).BindInputs({input_tensor}).BindOutputs({output_tensor}); + + EXPECT_TRUE(graph->Compile()); + EXPECT_TRUE(graph->Run()); + + std::vector output(golden.size()); EXPECT_TRUE(output_tensor->CopyDataFromTensor(output.data())); EXPECT_TRUE(ArraysMatch(golden, output, 1e-5f)); } \ No newline at end of file