blob: 31e23620c79b53e4f93d60c7af97bfb7decb988f [file] [log] [blame]
//
// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "ParserFlatbuffersFixture.hpp"
TEST_SUITE("TensorflowLiteParser_Reshape_Dynamic")
{
struct ReshapeDynamicFixture1 : public ParserFlatbuffersFixture
{
explicit ReshapeDynamicFixture1()
{
m_JsonString = R"(
{
"version": 3,
"operator_codes": [
{
"deprecated_builtin_code": 77,
"version": 1,
"builtin_code": "ADD"
},
{
"deprecated_builtin_code": 22,
"version": 1,
"builtin_code": "ADD"
}
],
"subgraphs": [
{
"tensors": [
{
"shape": [
2,
5
],
"type": "FLOAT32",
"buffer": 1,
"name": "input_33",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false,
"shape_signature": [
-1,
10
]
},
{
"shape": [
2
],
"type": "INT32",
"buffer": 2,
"name": "functional_15/tf_op_layer_Shape_9/Shape_9",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false
},
{
"shape": [
2,
5
],
"type": "FLOAT32",
"buffer": 3,
"name": "Identity",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false,
"shape_signature": [
-1,
5
]
}
],
"inputs": [
0
],
"outputs": [
2
],
"operators": [
{
"opcode_index": 0,
"inputs": [
0
],
"outputs": [
1
],
"builtin_options_type": "ShapeOptions",
"builtin_options": {
"out_type": "INT32"
},
"custom_options_format": "FLEXBUFFERS"
},
{
"opcode_index": 1,
"inputs": [
0,
1
],
"outputs": [
2
],
"builtin_options_type": "NONE",
"custom_options_format": "FLEXBUFFERS"
}
],
"name": "main"
}
],
"description": "MLIR Converted.",
"buffers": [
{
},
{
},
{
},
{
},
{
"data": [
49,
46,
49,
48,
46,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
],
"metadata": [
{
"name": "min_runtime_version",
"buffer": 4
}
]
}
)";
}
};
// ParseReshape test case: reshapeShapes[0] == 2
TEST_CASE_FIXTURE(ReshapeDynamicFixture1, "ParseReshapeDynamic1")
{
SetupSingleInputSingleOutput("input_33", "Identity");
RunTest<2, armnn::DataType::Float32>(0,
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
{ 1, 2, 3, 4, 5,
6, 7, 8, 9, 10 });
CHECK((m_Parser->GetNetworkOutputBindingInfo(0, "Identity").second.GetShape()
== armnn::TensorShape({2,5})));
}
struct ReshapeDynamicFixture2 : public ParserFlatbuffersFixture
{
explicit ReshapeDynamicFixture2()
{
m_JsonString = R"(
{
"version": 3,
"operator_codes": [
{
"deprecated_builtin_code": 77,
"version": 1,
"builtin_code": "ADD"
},
{
"deprecated_builtin_code": 22,
"version": 1,
"builtin_code": "ADD"
}
],
"subgraphs": [
{
"tensors": [
{
"shape": [
-1,
10
],
"type": "FLOAT32",
"buffer": 1,
"name": "input_33",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false,
"shape_signature": [
2,
5
]
},
{
"shape": [
1
],
"type": "INT32",
"buffer": 2,
"name": "functional_15/tf_op_layer_Shape_9/Shape_9",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false
},
{
"shape": [
10
],
"type": "FLOAT32",
"buffer": 3,
"name": "Identity",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false,
"shape_signature": [
-1,
10
]
}
],
"inputs": [
0
],
"outputs": [
2
],
"operators": [
{
"opcode_index": 0,
"inputs": [
0
],
"outputs": [
1
],
"builtin_options_type": "ShapeOptions",
"builtin_options": {
"out_type": "INT32"
},
"custom_options_format": "FLEXBUFFERS"
},
{
"opcode_index": 1,
"inputs": [
0,
1
],
"outputs": [
2
],
"builtin_options_type": "NONE",
"custom_options_format": "FLEXBUFFERS"
}
],
"name": "main"
}
],
"description": "MLIR Converted.",
"buffers": [
{
},
{
},
{
},
{
},
{
"data": [
49,
46,
49,
48,
46,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
],
"metadata": [
{
"name": "min_runtime_version",
"buffer": 4
}
]
}
)";
}
};
// ParseReshape test case: reshapeShapes[0] == 1
TEST_CASE_FIXTURE(ReshapeDynamicFixture2, "ParseReshapeDynamic2")
{
SetupSingleInputSingleOutput("input_33", "Identity");
RunTest<1, armnn::DataType::Float32>(0,
{ 1, 2, 3, 4, 5,
6, 7, 8, 9, 10 },
{ 1, 2, 3, 4, 5, 6, 7, 8 ,9, 10 });
CHECK((m_Parser->GetNetworkOutputBindingInfo(0, "Identity").second.GetShape()
== armnn::TensorShape({10})));
}
struct ReshapeDynamicFixture3 : public ParserFlatbuffersFixture
{
explicit ReshapeDynamicFixture3()
{
m_JsonString = R"(
{
"version": 3,
"operator_codes": [
{
"deprecated_builtin_code": 77,
"version": 1,
"builtin_code": "ADD"
},
{
"deprecated_builtin_code": 22,
"version": 1,
"builtin_code": "ADD"
}
],
"subgraphs": [
{
"tensors": [
{
"shape": [
1,
9
],
"type": "FLOAT32",
"buffer": 1,
"name": "input_33",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false,
"shape_signature": [
-1,
9
]
},
{
"shape": [
3
],
"type": "INT32",
"buffer": 2,
"name": "functional_15/tf_op_layer_Shape_9/Shape_9",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false
},
{
"shape": [
1,
9
],
"type": "FLOAT32",
"buffer": 3,
"name": "Identity",
"quantization": {
"details_type": "NONE",
"quantized_dimension": 0
},
"is_variable": false,
"shape_signature": [
-1,
9
]
}
],
"inputs": [
0
],
"outputs": [
2
],
"operators": [
{
"opcode_index": 0,
"inputs": [
0
],
"outputs": [
1
],
"builtin_options_type": "ShapeOptions",
"builtin_options": {
"out_type": "INT32"
},
"custom_options_format": "FLEXBUFFERS"
},
{
"opcode_index": 1,
"inputs": [
0,
1
],
"outputs": [
2
],
"builtin_options_type": "NONE",
"custom_options_format": "FLEXBUFFERS"
}
],
"name": "main"
}
],
"description": "MLIR Converted.",
"buffers": [
{
},
{
},
{
},
{
},
{
"data": [
49,
46,
49,
48,
46,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
],
"metadata": [
{
"name": "min_runtime_version",
"buffer": 4
}
]
}
)";
}
};
// ParseReshape test case: reshapeShapes[0] > 2
TEST_CASE_FIXTURE(ReshapeDynamicFixture3, "ParseReshapeDynamic3")
{
CHECK_THROWS_AS(SetupSingleInputSingleOutput("input_33", "Identity"), armnn::ParseException);
}
}