1
- /* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
1
+ /* Copyright 2025 The TensorFlow Authors. All Rights Reserved.
2
2
3
3
Licensed under the Apache License, Version 2.0 (the "License");
4
4
you may not use this file except in compliance with the License.
@@ -110,44 +110,11 @@ void TestPackThreeInputsFloat(int* input1_dims_data, const float* input1_data,
110
110
1e-5f , output_data);
111
111
}
112
112
113
- void TestPackTwoInputsQuantized (
114
- int * input1_dims_data, const int8_t * input1_data, int * input2_dims_data,
115
- const int8_t * input2_data, int axis, int * output_dims_data,
116
- const int8_t * expected_output_data, int8_t * output_data) {
117
- TfLiteIntArray* input1_dims = IntArrayFromInts (input1_dims_data);
118
- TfLiteIntArray* input2_dims = IntArrayFromInts (input2_dims_data);
119
- TfLiteIntArray* output_dims = IntArrayFromInts (output_dims_data);
120
- const int output_dims_count = ElementCount (*output_dims);
121
-
122
- constexpr int input_size = 2 ;
123
- constexpr int output_size = 1 ;
124
- constexpr int tensors_size = input_size + output_size;
125
- TfLiteTensor tensors[tensors_size] = {
126
- // CreateQuantizedTensor needs scale/zero_point values as input, but these
127
- // values don't matter as to the functionality of PACK, so just set as 1.0
128
- // and 128.
129
- CreateQuantizedTensor (input1_data, input1_dims, 1.0 , 128 ),
130
- CreateQuantizedTensor (input2_data, input2_dims, 1.0 , 128 ),
131
- CreateQuantizedTensor (output_data, output_dims, 1.0 , 128 )};
132
-
133
- TfLitePackParams builtin_data = {
134
- .values_count = 2 ,
135
- .axis = axis,
136
- };
137
- int inputs_array_data[] = {2 , 0 , 1 };
138
- TfLiteIntArray* inputs_array = IntArrayFromInts (inputs_array_data);
139
- int outputs_array_data[] = {1 , 2 };
140
- TfLiteIntArray* outputs_array = IntArrayFromInts (outputs_array_data);
141
-
142
- ValidatePackGoldens (tensors, tensors_size, builtin_data, inputs_array,
143
- outputs_array, expected_output_data, output_dims_count,
144
- 1e-5f , output_data);
145
- }
146
-
147
- void TestPackTwoInputsQuantized32 (
148
- int * input1_dims_data, const int32_t * input1_data, int * input2_dims_data,
149
- const int32_t * input2_data, int axis, int * output_dims_data,
150
- const int32_t * expected_output_data, int32_t * output_data) {
113
+ template <typename T>
114
+ void TestPackTwoInputs (int * input1_dims_data, const T* input1_data,
115
+ int * input2_dims_data, const T* input2_data, int axis,
116
+ int * output_dims_data, const T* expected_output_data,
117
+ T* output_data) {
151
118
TfLiteIntArray* input1_dims = IntArrayFromInts (input1_dims_data);
152
119
TfLiteIntArray* input2_dims = IntArrayFromInts (input2_dims_data);
153
120
TfLiteIntArray* output_dims = IntArrayFromInts (output_dims_data);
@@ -227,7 +194,7 @@ TF_LITE_MICRO_TEST(PackFloatThreeInputsNegativeAxis) {
227
194
input3_values, axis, output_shape, golden, output_data);
228
195
}
229
196
230
- TF_LITE_MICRO_TEST (PackFloatMultilDimensions ) {
197
+ TF_LITE_MICRO_TEST (PackFloatMultiDimensions ) {
231
198
int input_shape[] = {2 , 2 , 3 };
232
199
int output_shape[] = {3 , 2 , 2 , 3 };
233
200
const float input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
@@ -242,7 +209,7 @@ TF_LITE_MICRO_TEST(PackFloatMultilDimensions) {
242
209
output_shape, golden, output_data);
243
210
}
244
211
245
- TF_LITE_MICRO_TEST (PackQuantizedMultilDimensions ) {
212
+ TF_LITE_MICRO_TEST (PackInt8MultiDimensions ) {
246
213
int input_shape[] = {2 , 2 , 3 };
247
214
int output_shape[] = {3 , 2 , 2 , 3 };
248
215
const int8_t input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
@@ -252,12 +219,27 @@ TF_LITE_MICRO_TEST(PackQuantizedMultilDimensions) {
252
219
constexpr int output_dims_count = 12 ;
253
220
int8_t output_data[output_dims_count];
254
221
255
- tflite::testing::TestPackTwoInputsQuantized (
222
+ tflite::testing::TestPackTwoInputs<int8_t >(input_shape, input1_values,
223
+ input_shape, input2_values, axis,
224
+ output_shape, golden, output_data);
225
+ }
226
+
227
+ TF_LITE_MICRO_TEST (PackInt16MultiDimensions) {
228
+ int input_shape[] = {2 , 2 , 3 };
229
+ int output_shape[] = {3 , 2 , 2 , 3 };
230
+ const int16_t input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
231
+ const int16_t input2_values[] = {7 , 8 , 9 , 10 , 11 , 12 };
232
+ const int16_t golden[] = {1 , 2 , 3 , 7 , 8 , 9 , 4 , 5 , 6 , 10 , 11 , 12 };
233
+ const int axis = 1 ;
234
+ constexpr int output_dims_count = 12 ;
235
+ int16_t output_data[output_dims_count];
236
+
237
+ tflite::testing::TestPackTwoInputs<int16_t >(
256
238
input_shape, input1_values, input_shape, input2_values, axis,
257
239
output_shape, golden, output_data);
258
240
}
259
241
260
- TF_LITE_MICRO_TEST (PackQuantized32MultilDimensions ) {
242
+ TF_LITE_MICRO_TEST (PackInt32MultiDimensions ) {
261
243
int input_shape[] = {2 , 2 , 3 };
262
244
int output_shape[] = {3 , 2 , 2 , 3 };
263
245
const int32_t input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
@@ -267,7 +249,7 @@ TF_LITE_MICRO_TEST(PackQuantized32MultilDimensions) {
267
249
constexpr int output_dims_count = 12 ;
268
250
int32_t output_data[output_dims_count];
269
251
270
- tflite::testing::TestPackTwoInputsQuantized32 (
252
+ tflite::testing::TestPackTwoInputs< int32_t > (
271
253
input_shape, input1_values, input_shape, input2_values, axis,
272
254
output_shape, golden, output_data);
273
255
}
0 commit comments