From b6178f8b05996a9b3c09d610dcde5d1307531a5e Mon Sep 17 00:00:00 2001 From: Adrian Lundell Date: Wed, 16 Oct 2024 11:54:55 +0200 Subject: [PATCH 1/2] Transposed convolution improvements - New more efficient algorithm for strides <= 2 and large input channels - Minimizes scratch buffer needed for original algorithm Change-Id: I79cb20bd7298cbb3b9d2ed27ab1a954e1f4b906c --- ARM.CMSIS-NN.pdsc | 2 + Include/arm_nnfunctions.h | 83 ++- Include/arm_nnsupportfunctions.h | 49 +- .../arm_convolve_1_x_n_s8.c | 6 +- Source/ConvolutionFunctions/arm_convolve_s8.c | 81 ++- .../arm_convolve_wrapper_s8.c | 5 +- .../arm_transpose_conv_get_buffer_sizes_s8.c | 62 ++- .../arm_transpose_conv_s8.c | 263 +++++---- .../arm_transpose_conv_wrapper_s8.c | 161 ++++++ Source/NNSupportFunctions/CMakeLists.txt | 6 +- .../arm_nn_transpose_conv_row_s8_s32.c | 515 ++++++++++++++++++ Tests/UnitTest/CMakeLists.txt | 1 + .../reverse_transpose_conv_1/biases_data.h | 6 + .../reverse_transpose_conv_1/config_data.h | 26 + .../reverse_transpose_conv_1/input_data.h | 32 ++ .../output_mult_data.h | 6 + .../output_ref_data.h | 8 + .../output_shift_data.h | 6 + .../reverse_transpose_conv_1/test_data.h | 9 + .../reverse_transpose_conv_1/weights_data.h | 19 + .../reverse_transpose_conv_2/biases_data.h | 6 + .../reverse_transpose_conv_2/config_data.h | 26 + .../reverse_transpose_conv_2/input_data.h | 8 + .../output_mult_data.h | 6 + .../output_ref_data.h | 8 + .../output_shift_data.h | 6 + .../reverse_transpose_conv_2/test_data.h | 9 + .../reverse_transpose_conv_2/weights_data.h | 11 + .../reverse_transpose_conv_3/biases_data.h | 6 + .../reverse_transpose_conv_3/config_data.h | 26 + .../reverse_transpose_conv_3/input_data.h | 9 + .../output_mult_data.h | 22 + .../output_ref_data.h | 12 + .../output_shift_data.h | 7 + .../reverse_transpose_conv_3/test_data.h | 9 + .../reverse_transpose_conv_3/weights_data.h | 67 +++ .../reverse_transpose_conv_4/biases_data.h | 6 + .../reverse_transpose_conv_4/config_data.h | 26 + .../reverse_transpose_conv_4/input_data.h | 6 + .../output_mult_data.h | 6 + .../output_ref_data.h | 8 + .../output_shift_data.h | 6 + .../reverse_transpose_conv_4/test_data.h | 9 + .../reverse_transpose_conv_4/weights_data.h | 6 + .../TestData/transpose_conv_1/biases_data.h | 6 +- .../TestData/transpose_conv_1/config_data.h | 10 +- .../TestData/transpose_conv_1/input_data.h | 356 +++--------- .../transpose_conv_1/output_mult_data.h | 6 +- .../transpose_conv_1/output_ref_data.h | 178 +++--- .../transpose_conv_1/output_shift_data.h | 6 +- .../TestData/transpose_conv_1/test_data.h | 4 +- .../TestData/transpose_conv_1/weights_data.h | 240 ++------ .../TestData/transpose_conv_2/biases_data.h | 4 +- .../TestData/transpose_conv_2/config_data.h | 6 +- .../TestData/transpose_conv_2/input_data.h | 232 ++++---- .../transpose_conv_2/output_mult_data.h | 6 +- .../transpose_conv_2/output_ref_data.h | 188 +++---- .../transpose_conv_2/output_shift_data.h | 4 +- .../TestData/transpose_conv_2/test_data.h | 4 +- .../TestData/transpose_conv_2/weights_data.h | 62 +-- .../TestData/transpose_conv_3/biases_data.h | 6 +- .../TestData/transpose_conv_3/config_data.h | 6 +- .../TestData/transpose_conv_3/input_data.h | 19 +- .../transpose_conv_3/output_mult_data.h | 6 +- .../transpose_conv_3/output_ref_data.h | 88 +-- .../transpose_conv_3/output_shift_data.h | 6 +- .../TestData/transpose_conv_3/test_data.h | 4 +- .../TestData/transpose_conv_3/weights_data.h | 22 +- .../TestData/transpose_conv_4/biases_data.h | 4 +- .../TestData/transpose_conv_4/config_data.h | 6 +- .../TestData/transpose_conv_4/input_data.h | 76 +-- .../transpose_conv_4/output_mult_data.h | 6 +- .../transpose_conv_4/output_ref_data.h | 40 +- .../transpose_conv_4/output_shift_data.h | 6 +- .../TestData/transpose_conv_4/test_data.h | 4 +- .../TestData/transpose_conv_4/weights_data.h | 156 +++--- .../test_arm_convolve_1_x_n_s8.c | 1 + .../test_arm_convolve_s8.c | 12 + .../test_arm_grouped_convolve_s8.c | 4 + .../CMakeLists.txt | 23 + ...unity_test_arm_reverse_transpose_conv_s8.c | 49 ++ .../test_arm_reverse_transpose_conv_s8.c | 388 +++++++++++++ .../test_arm_transpose_conv_s8.c | 188 ++++--- Tests/UnitTest/generate_test_data.py | 79 ++- 84 files changed, 2884 insertions(+), 1284 deletions(-) create mode 100644 Source/ConvolutionFunctions/arm_transpose_conv_wrapper_s8.c create mode 100644 Source/NNSupportFunctions/arm_nn_transpose_conv_row_s8_s32.c create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/biases_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/config_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/input_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_mult_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_ref_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_shift_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/test_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/weights_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/biases_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/config_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/input_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_mult_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_ref_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_shift_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/test_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/weights_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/biases_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/config_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/input_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_mult_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_ref_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_shift_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/test_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/weights_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/biases_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/config_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/input_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_mult_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_ref_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_shift_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/test_data.h create mode 100644 Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/weights_data.h create mode 100644 Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/CMakeLists.txt create mode 100644 Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/Unity/unity_test_arm_reverse_transpose_conv_s8.c create mode 100644 Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/test_arm_reverse_transpose_conv_s8.c diff --git a/ARM.CMSIS-NN.pdsc b/ARM.CMSIS-NN.pdsc index abbf49aa..dc02d43a 100644 --- a/ARM.CMSIS-NN.pdsc +++ b/ARM.CMSIS-NN.pdsc @@ -76,6 +76,7 @@ + @@ -121,6 +122,7 @@ + diff --git a/Include/arm_nnfunctions.h b/Include/arm_nnfunctions.h index bce5f450..457de65f 100644 --- a/Include/arm_nnfunctions.h +++ b/Include/arm_nnfunctions.h @@ -21,8 +21,8 @@ * Title: arm_nnfunctions.h * Description: Public header file for CMSIS NN Library * - * $Date: 23 October 2024 - * $Revision: V.17.3.0 + * $Date: 04 November 2024 + * $Revision: V.18.0.0 * * Target : Arm(R) M-Profile Architecture * -------------------------------------------------------------------- */ @@ -415,6 +415,8 @@ arm_cmsis_nn_status arm_convolve_even_s4(const cmsis_nn_context *ctx, * @param[in] filter_data Filter data pointer. Data type: int8 * @param[in] bias_dims Bias tensor dimensions. Format: [C_OUT] * @param[in] bias_data Optional bias data pointer. Data type: int32 + * @param[in] upscale_dims Inserts zeroes to upscale the input in h/w dimensions if set to 2. This is used for + * tranposed convolution. * @param[in] output_dims Output tensor dimensions. Format: [N, H, W, C_OUT] * @param[out] output_data Output data pointer. Data type: int8 * @@ -436,6 +438,7 @@ arm_cmsis_nn_status arm_convolve_s8(const cmsis_nn_context *ctx, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, + const cmsis_nn_dims *upscale_dims, const cmsis_nn_dims *output_dims, int8_t *output_data); @@ -461,6 +464,54 @@ int32_t arm_convolve_s4_get_buffer_size(const cmsis_nn_dims *input_dims, const c */ int32_t arm_convolve_s8_get_buffer_size(const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims); +/** + * @brief Wrapper to select optimal transposed convolution algorithm depending on parameters. + * @param[in, out] ctx Function context that contains the additional buffer if required by the + * function. + * arm_transpose_conv_s8_get_buffer_size will return the buffer_size if required. + * The caller is expected to clear the buffer, if applicable, for security + reasons. + * @param[in, out] output_ctx Temporary scratch buffer. + * The size required size is: output width * output height * output channel * 4 + * The caller is expected to clear the buffer, if applicable, for security + * reasons. + * @param[in] transpose_conv_params Convolution parameters (e.g. strides, dilations, pads,...). + * Range of transpose_conv_params->input_offset : [-127, 128] + * Range of transpose_conv_params->output_offset : [-128, 127] + * @param[in] quant_params Per-channel quantization info. + * It contains the multiplier and shift values to be applied to each out channel. + * @param[in] input_dims Input (activation) tensor dimensions. Format: [N, H, W, C_IN] + * @param[in] input_data Input (activation) data pointer. Data type: int8 + * @param[in] filter_dims Filter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK are the + * spatial filter dimensions + * @param[in] filter_data Filter data pointer. Data type: int8 + * @param[in] bias_dims Bias tensor dimensions. Format: [C_OUT] + * @param[in] bias_data Optional bias data pointer. Data type: int32 + * @param[in] output_dims Output tensor dimensions. Format: [N, H, W, C_OUT] + * @param[out] output_data Output data pointer. Data type: int8 + + * @return The function returns either + * ARM_CMSIS_NN_ARG_ERROR if argument constraints fail. or, + * ARM_CMSIS_NN_SUCCESS on successful completion. + * + * @details + * 1. Supported framework: TensorFlow Lite micro + * 2. Additional memory is required for optimization. Refer to arguments 'ctx' and 'output_ctx' for details. + * + */ +arm_cmsis_nn_status arm_transpose_conv_wrapper_s8(const cmsis_nn_context *ctx, + const cmsis_nn_context *output_ctx, + const cmsis_nn_transpose_conv_params *transpose_conv_params, + const cmsis_nn_per_channel_quant_params *quant_params, + const cmsis_nn_dims *input_dims, + const int8_t *input_data, + const cmsis_nn_dims *filter_dims, + const int8_t *filter_data, + const cmsis_nn_dims *bias_dims, + const int32_t *bias_data, + const cmsis_nn_dims *output_dims, + int8_t *output_data); + /** * @brief Basic s8 transpose convolution function * @param[in, out] ctx Function context that contains the additional buffer if required by the @@ -510,19 +561,35 @@ arm_cmsis_nn_status arm_transpose_conv_s8(const cmsis_nn_context *ctx, int8_t *output_data); /** - * @brief Get the required buffer size for s8 transpose conv function + * @brief Get the required buffer size for ctx in s8 transpose conv function * - * @param[in] input_dims Input (activation) tensor dimensions. Format: [N, H, W, C_IN] - * @param[in] filter_dims Filter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK - * are the spatial filter dimensions - * @param[in] out_dims Output tensor dimensions. Format: [N, H, W, C_OUT] + * @param[in9 transposed_conv_params Transposed convolution parameters + * @param[in] input_dims Input (activation) tensor dimensions. Format: [N, H, W, C_IN] + * @param[in] filter_dims Filter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK + * are the spatial filter dimensions + * @param[in] out_dims Output tensor dimensions. Format: [N, H, W, C_OUT] * @return The function returns required buffer size(bytes) * */ -int32_t arm_transpose_conv_s8_get_buffer_size(const cmsis_nn_dims *input_dims, +int32_t arm_transpose_conv_s8_get_buffer_size(const cmsis_nn_transpose_conv_params *transposed_conv_params, + const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *out_dims); +/** + * @brief Get the required buffer size for output_ctx in s8 transpose conv function + * + * @param[in9 transposed_conv_params Transposed convolution parameters + * @param[in] input_dims Input (activation) tensor dimensions. Format: [N, H, W, C_IN] + * @param[in] filter_dims Filter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK + * are the spatial filter dimensions + * @return The function returns required buffer size(bytes) + * + */ +int32_t arm_transpose_conv_s8_get_reverse_conv_buffer_size(const cmsis_nn_transpose_conv_params *transposed_conv_params, + const cmsis_nn_dims *input_dims, + const cmsis_nn_dims *filter_dims); + /** * @brief Get size of additional buffer required by arm_transpose_conv_s8() for processors with DSP extension. * Refer to arm_transpose_conv_s8_get_buffer_size() for function argument details. diff --git a/Include/arm_nnsupportfunctions.h b/Include/arm_nnsupportfunctions.h index 8ae83391..6b037fb7 100644 --- a/Include/arm_nnsupportfunctions.h +++ b/Include/arm_nnsupportfunctions.h @@ -21,8 +21,8 @@ * Title: arm_nnsupportfunctions.h * Description: Public header file of support functions for CMSIS NN Library * - * $Date: 08 November 2024 - * $Revision: V.22.6.1 + * $Date: 08 Nov 2024 + * $Revision: V.22.7.0 * * Target : Arm(R) M-Profile Architecture * -------------------------------------------------------------------- */ @@ -72,6 +72,10 @@ extern "C" { // to not loose precision. #define MAX_COL_COUNT (512) +// CMSIS-NN has two implementations of the transpose conv operator, selected depending on the number of input +// channels. This is based on heuristics and may be finetuned depending on other parameters of the operator +#define REVERSE_TCOL_EFFICIENT_THRESHOLD (16) + // Threshold for number of output channels that decide whether to convert a depthwise conv to a // regular conv operation when number of input channels is one. // Only applicable for processors with MVE extension. @@ -1014,6 +1018,47 @@ int16_t *arm_nn_depthwise_conv_nt_t_s16(const int16_t *lhs, const int64_t *const output_bias, int16_t *out); +/** + * @brief Row of s8 scalars multiplicated with a s8 matrix ad accumulated into a s32 rolling scratch buffer. + * Helpfunction for transposed convolution. + * + * @param[in] lhs Input left-hand side scalars + * @param[in] rhs Input right-hand side matrix + * @param[out] output_start Output buffer start + * @param[in] output_index Output buffer current index + * @param[in] output_max Output buffer size + * @param[in] rhs_rows Number of rows in rhs matrix + * @param[in] rhs_cols Number of columns in rhs matrix + * @param[in] input_channels Number of input channels + * @param[in] output_channels Number of output channels + * @param[in] lhs_offset Offset added to lhs before multiplication + * @param[in] row_offset Address offset between each row of data output + * @param[in] input_x Length of lhs scalar row. + * @param[in] stride_x Address offset between each scalar-matrix multiplication result. + * @param[in] skip_row_top Skip rows on top of the filter, used for padding. + * @param[in] skip_row_bottom Skip rows in the bottom of the filter, used for padding. + * + * @return The function returns ARM_CMSIS_NN_SUCCESS + * + * @note Rolling buffer refers to how the function wraps around the scratch buffer, e.g. it starts writing at + * [output_start + output_index], writes to [output_start + output_max] and then continues at [output_start] again. + */ +arm_cmsis_nn_status arm_nn_transpose_conv_row_s8_s32(const int8_t *lhs, + const int8_t *rhs, + int32_t *output_start, + const int32_t output_index, + const int32_t output_max, + const int32_t rhs_rows, + const int32_t rhs_cols, + const int32_t input_channels, + const int32_t output_channels, + const int32_t lhs_offset, + const int32_t row_offset, + const int32_t input_x, + const int32_t stride_x, + const int32_t skip_row_top, + const int32_t skip_row_bottom); + /** @brief Read 2 s16 elements and post increment pointer. @param[in] in_q15 Pointer to pointer that holds address of input. diff --git a/Source/ConvolutionFunctions/arm_convolve_1_x_n_s8.c b/Source/ConvolutionFunctions/arm_convolve_1_x_n_s8.c index 62477472..395cae86 100644 --- a/Source/ConvolutionFunctions/arm_convolve_1_x_n_s8.c +++ b/Source/ConvolutionFunctions/arm_convolve_1_x_n_s8.c @@ -21,8 +21,8 @@ * Title: arm_convolve_1_x_n_s8.c * Description: s8 version of 1xN convolution using symmetric quantization. * - * $Date: 19 March 2024 - * $Revision: V.3.6.0 + * $Date: 04 November 2024 + * $Revision: V.3.6.1 * * Target : Arm(R) M-Profile Architecture * @@ -107,6 +107,7 @@ arm_cmsis_nn_status arm_convolve_1_x_n_s8(const cmsis_nn_context *ctx, filter_data, bias_dims, bias_data, + NULL, output_dims, output_data); } @@ -219,6 +220,7 @@ arm_cmsis_nn_status arm_convolve_1_x_n_s8(const cmsis_nn_context *ctx, filter_data, bias_dims, bias_data, + NULL, output_dims, output_data); diff --git a/Source/ConvolutionFunctions/arm_convolve_s8.c b/Source/ConvolutionFunctions/arm_convolve_s8.c index 62dd5598..83588ad9 100644 --- a/Source/ConvolutionFunctions/arm_convolve_s8.c +++ b/Source/ConvolutionFunctions/arm_convolve_s8.c @@ -21,8 +21,8 @@ * Title: arm_convolve_s8.c * Description: s8 version of convolution using symmetric quantization. * - * $Date: 27 February 2024 - * $Revision: V.3.7.0 + * $Date: 04 November 2024 + * $Revision: V.4.0.0 * * Target : Arm(R) M-Profile Architecture * @@ -55,6 +55,7 @@ arm_cmsis_nn_status arm_convolve_s8(const cmsis_nn_context *ctx, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, + const cmsis_nn_dims *upscale_dims, const cmsis_nn_dims *output_dims, int8_t *output_data) { @@ -92,14 +93,28 @@ arm_cmsis_nn_status arm_convolve_s8(const cmsis_nn_context *ctx, const int32_t rhs_cols = kernel_x * kernel_y * kernel_ch; const int32_t output_ch_per_group = output_ch / groups; - int32_t *output_mult = quant_params->multiplier; - int32_t *output_shift = quant_params->shift; + const int32_t *output_mult = quant_params->multiplier; + const int32_t *output_shift = quant_params->shift; if (input_ch % groups != 0 || output_ch % groups != 0) { return ARM_CMSIS_NN_ARG_ERROR; } + // For upscale_dims == 2, the actual index of the input data is the index of the upscaled input divided by two. In + // the ordinary case, there is no difference. The division is implemented as a rshift for optimization purposes. + uint32_t y_rshift = 0; + uint32_t x_rshift = 0; + + if (upscale_dims) + { + y_rshift = upscale_dims->h == 2 ? 1 : 0; + x_rshift = upscale_dims->w == 2 ? 1 : 0; + } + + const int32_t input_x_rshifted = input_x >> x_rshift; + const int32_t input_y_rshifted = input_y >> y_rshift; + const int32_t remainder = rhs_cols % 4; const int32_t aligned_rhs_cols = remainder != 0 ? rhs_cols + 4 - remainder : rhs_cols; @@ -134,24 +149,62 @@ arm_cmsis_nn_status arm_convolve_s8(const cmsis_nn_context *ctx, const int32_t base_idx_x = stride_x * i_out_x - pad_x; const int32_t base_idx_y = stride_y * i_out_y - pad_y; - for (int32_t i_ker_y = 0; i_ker_y < kernel_y; i_ker_y++) + if (y_rshift == 1 || x_rshift == 1) { - for (int32_t i_ker_x = 0; i_ker_x < kernel_x; i_ker_x++) + // Fill complete buf with -input_offset + arm_memset_s8( + im2col_buf, (int8_t)-input_offset, sizeof(int8_t) * kernel_ch * kernel_x * kernel_y); + for (int32_t i_ker_y = 0; i_ker_y < kernel_y; i_ker_y++) { const int32_t k_y = base_idx_y + dilation_y * i_ker_y; - const int32_t k_x = base_idx_x + dilation_x * i_ker_x; - if (k_y < 0 || k_y >= input_y || k_x < 0 || k_x >= input_x) + // Don't copy data when padding, or for every second row if stride_y == 2 + if ((k_y < 0 || k_y >= input_y) || (k_y % 2 && y_rshift == 1)) { - arm_memset_s8(im2col_buf, (int8_t)-input_offset, sizeof(int8_t) * kernel_ch); + im2col_buf += kernel_ch * kernel_x; } else { - arm_memcpy_s8(im2col_buf, - input_data + (k_y * input_x + k_x) * input_ch + i_group * kernel_ch, - sizeof(int8_t) * kernel_ch); + const int32_t k_y_rshifted = k_y >> y_rshift; + for (int32_t i_ker_x = 0; i_ker_x < kernel_x; i_ker_x++) + { + const int32_t k_x = base_idx_x + dilation_x * i_ker_x; + + // Don't copy data when padding, or for every second element if stride_x == 2 + if ((k_x >= 0 && k_x < input_x) && ((k_x % 2 == 0) || x_rshift == 0)) + { + const int32_t k_x_rshifted = k_x >> x_rshift; + arm_memcpy_s8(im2col_buf, + input_data + + (k_y_rshifted * input_x_rshifted + k_x_rshifted) * input_ch, + sizeof(int8_t) * kernel_ch); + } + im2col_buf += kernel_ch; + } + } + } + } + else + { + for (int32_t i_ker_y = 0; i_ker_y < kernel_y; i_ker_y++) + { + for (int32_t i_ker_x = 0; i_ker_x < kernel_x; i_ker_x++) + { + const int32_t k_y = base_idx_y + dilation_y * i_ker_y; + const int32_t k_x = base_idx_x + dilation_x * i_ker_x; + + if (k_y < 0 || k_y >= input_y || k_x < 0 || k_x >= input_x) + { + arm_memset_s8(im2col_buf, (int8_t)-input_offset, sizeof(int8_t) * kernel_ch); + } + else + { + arm_memcpy_s8(im2col_buf, + input_data + (k_y * input_x + k_x) * input_ch + i_group * kernel_ch, + sizeof(int8_t) * kernel_ch); + } + im2col_buf += kernel_ch; } - im2col_buf += kernel_ch; } } lhs_rows++; @@ -333,7 +386,7 @@ arm_cmsis_nn_status arm_convolve_s8(const cmsis_nn_context *ctx, output_shift_ptr += output_ch_per_group; } /* Advance to the next batch */ - input_data += (input_x * input_y * input_ch); + input_data += (input_x_rshifted * input_y_rshifted * input_ch); output_data += (output_x * output_y * output_ch); } diff --git a/Source/ConvolutionFunctions/arm_convolve_wrapper_s8.c b/Source/ConvolutionFunctions/arm_convolve_wrapper_s8.c index 98f90585..a0162b11 100644 --- a/Source/ConvolutionFunctions/arm_convolve_wrapper_s8.c +++ b/Source/ConvolutionFunctions/arm_convolve_wrapper_s8.c @@ -22,8 +22,8 @@ * Description: s8 convolution layer wrapper function with the main purpose to call the optimal kernel available in * cmsis-nn to perform the convolution. * - * $Date: 04 January 2024 - * $Revision: V.2.5.0 + * $Date: 04 November 2024 + * $Revision: V.2.5.1 * * Target : Arm(R) M-Profile Architecture * @@ -118,6 +118,7 @@ arm_cmsis_nn_status arm_convolve_wrapper_s8(const cmsis_nn_context *ctx, filter_data, bias_dims, bias_data, + NULL, output_dims, output_data); } diff --git a/Source/ConvolutionFunctions/arm_transpose_conv_get_buffer_sizes_s8.c b/Source/ConvolutionFunctions/arm_transpose_conv_get_buffer_sizes_s8.c index 2e9605c6..fd29eff7 100644 --- a/Source/ConvolutionFunctions/arm_transpose_conv_get_buffer_sizes_s8.c +++ b/Source/ConvolutionFunctions/arm_transpose_conv_get_buffer_sizes_s8.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates + * SPDX-FileCopyrightText: Copyright 2023-2024 Arm Limited and/or its affiliates * * SPDX-License-Identifier: Apache-2.0 * @@ -18,11 +18,11 @@ /* ---------------------------------------------------------------------- * Project: CMSIS NN Library - * Title: arm_convolve_get_buffer_sizes_s8.c - * Description: Collection of get buffer size functions for the various s8 convolution layer functions. + * Title: arm_transpose_conv_get_buffer_sizes_s8.c + * Description: Collection of get buffer size functions for the transpose convolution layer functions. * - * $Date: 5 October 2023 - * $Revision: V.1.0.0 + * $Date: 29 October 2024 + * $Revision: V.2.0.0 * * Target : Arm(R) M-Profile Architecture * @@ -30,6 +30,7 @@ #include "Internal/arm_nn_compiler.h" #include "arm_nnfunctions.h" +#include "arm_nnsupportfunctions.h" /** * @ingroup NNConv @@ -47,27 +48,50 @@ * Refer to header file for details. * */ -int32_t arm_transpose_conv_s8_get_buffer_size(const cmsis_nn_dims *input_dims, +int32_t arm_transpose_conv_s8_get_buffer_size(const cmsis_nn_transpose_conv_params *transpose_conv_params, + const cmsis_nn_dims *input_dims, const cmsis_nn_dims *filter_dims, const cmsis_nn_dims *out_dims) { - const int32_t size = - filter_dims->w * filter_dims->h * input_dims->w * input_dims->h * out_dims->c * sizeof(int32_t); - return size; -} -int32_t arm_transpose_conv_s8_get_buffer_size_dsp(const cmsis_nn_dims *input_dims, - const cmsis_nn_dims *filter_dims, - const cmsis_nn_dims *output_dims) -{ - return arm_transpose_conv_s8_get_buffer_size(input_dims, filter_dims, output_dims); + const bool reverse_conv_possible = + ((transpose_conv_params->stride.w <= 2) && (transpose_conv_params->stride.h <= 2)); + const bool reverse_conv_efficient = (input_dims->c > REVERSE_TCOL_EFFICIENT_THRESHOLD); + + if (reverse_conv_possible && reverse_conv_efficient) + { + const cmsis_nn_dims reverse_conv_input_dims = {input_dims->n, + input_dims->h * transpose_conv_params->stride.h, + input_dims->w * transpose_conv_params->stride.w, + input_dims->c}; + return arm_convolve_s8_get_buffer_size(&reverse_conv_input_dims, filter_dims); + } + else + { + const int32_t buf_x = ((input_dims->w - 1) * transpose_conv_params->stride.w + + MAX(filter_dims->w, transpose_conv_params->stride.h)) * + out_dims->c; + const int32_t buf_y = MAX(filter_dims->h, transpose_conv_params->stride.h); + return buf_x * buf_y * sizeof(int32_t); + } } -int32_t arm_transpose_conv_s8_get_buffer_size_mve(const cmsis_nn_dims *input_dims, - const cmsis_nn_dims *filter_dims, - const cmsis_nn_dims *output_dims) +int32_t arm_transpose_conv_s8_get_reverse_conv_buffer_size(const cmsis_nn_transpose_conv_params *transpose_conv_params, + const cmsis_nn_dims *input_dims, + const cmsis_nn_dims *filter_dims) { - return arm_transpose_conv_s8_get_buffer_size(input_dims, filter_dims, output_dims); + const bool reverse_conv_possible = + ((transpose_conv_params->stride.w <= 2) && (transpose_conv_params->stride.h <= 2)); + const bool reverse_conv_efficient = (input_dims->c > REVERSE_TCOL_EFFICIENT_THRESHOLD); + + if (reverse_conv_possible && reverse_conv_efficient) + { + return input_dims->c * filter_dims->w * filter_dims->h * filter_dims->n; + } + else + { + return 0; + } } /** diff --git a/Source/ConvolutionFunctions/arm_transpose_conv_s8.c b/Source/ConvolutionFunctions/arm_transpose_conv_s8.c index 7a5f3660..c579238f 100644 --- a/Source/ConvolutionFunctions/arm_transpose_conv_s8.c +++ b/Source/ConvolutionFunctions/arm_transpose_conv_s8.c @@ -19,10 +19,10 @@ /* ---------------------------------------------------------------------- * Project: CMSIS NN Library * Title: arm_transpose_conv_s8.c - * Description: s8 version of transpose convolution using symmetric quantization. + * Description: s8 version of transposed convolution using symmetric quantization. * - * $Date: 31 January 2024 - * $Revision: V.1.1.0 + * $Date: 29 October 2024 + * $Revision: V.2.0.0 * * Target : Arm(R) M-Profile Architecture * @@ -30,7 +30,6 @@ #include "arm_nnfunctions.h" #include "arm_nnsupportfunctions.h" - /** * @ingroup Public */ @@ -60,33 +59,28 @@ arm_cmsis_nn_status arm_transpose_conv_s8(const cmsis_nn_context *ctx, int8_t *output_data) { (void)bias_dims; - - if (ctx->buf == NULL || output_ctx->buf == NULL) - { - return ARM_CMSIS_NN_ARG_ERROR; - } + (void)output_ctx; const int32_t activation_min = transpose_conv_params->activation.min; const int32_t activation_max = transpose_conv_params->activation.max; const int32_t input_ch = input_dims->c; - const int32_t input_size = input_dims->w * input_dims->h; - - const uint16_t kernel_x = filter_dims->w; - const uint16_t kernel_y = filter_dims->h; + const int32_t input_x = input_dims->w; + const int32_t input_y = input_dims->h; const int32_t output_x = output_dims->w; const int32_t output_y = output_dims->h; + const int32_t output_ch = output_dims->c; + const int32_t filter_x = filter_dims->w; + const int32_t filter_y = filter_dims->h; + const int32_t pad_x = transpose_conv_params->padding.w; const int32_t pad_y = transpose_conv_params->padding.h; - const int32_t pad_x_offset = transpose_conv_params->padding_offsets.w; - const int32_t pad_y_offset = transpose_conv_params->padding_offsets.h; const int32_t stride_x = transpose_conv_params->stride.w; const int32_t stride_y = transpose_conv_params->stride.h; - const int32_t filter_size = filter_dims->w * filter_dims->h; const int32_t *output_multiplier = quant_params->multiplier; const int32_t *output_shift = quant_params->shift; @@ -94,122 +88,189 @@ arm_cmsis_nn_status arm_transpose_conv_s8(const cmsis_nn_context *ctx, const int32_t out_offset = transpose_conv_params->output_offset; const int32_t input_offset = transpose_conv_params->input_offset; - const int8_t *input_data_ptr = input_data; - int8_t *output_data_ptr = output_data; - - int32_t *const col_data = (int32_t *)ctx->buf; - const int32_t col_buf_size = arm_transpose_conv_s8_get_buffer_size(input_dims, filter_dims, output_dims); - + const int32_t buf_x_elements = ((input_x - 1) * stride_x + MAX(filter_x, stride_x)); + const int32_t buf_x = buf_x_elements * output_ch; + const int32_t buf_y = MAX(filter_y, stride_y); + const int32_t buf_size = buf_y * buf_x; + int32_t *buf = ctx->buf; int32_t batch_cnt = input_dims->n; - int32_t *const img_buf = output_ctx->buf; - int32_t *img_buf_ptr = img_buf; + const int8_t *filter = filter_data; + const int8_t *input = input_data; + int8_t *output = output_data; while (batch_cnt) { - if (bias_data == NULL) + // Reset buf + if (bias_data) { - arm_memset_s8((int8_t *)img_buf_ptr, 0, output_x * output_y * output_ch * sizeof(int32_t)); + for (int x = 0; x < buf_x_elements * buf_y; x++) + { + arm_memcpy_s8((int8_t *)(buf + x * output_ch), (const int8_t *)bias_data, output_ch * sizeof(int32_t)); + } } else { - int32_t *img_data = img_buf; + arm_memset_s8((int8_t *)buf, 0, buf_size * sizeof(int32_t)); + } + + int32_t buf_row = 0; + for (int j = 0; j < input_y; j++) + { + int skip_rows_top = MAX(0, pad_y - j * stride_y); + int skip_rows_bottom = MAX(0, (j * stride_y + filter_y) - (pad_y + output_y) - 1); + + // Compute output for one row of input + arm_nn_transpose_conv_row_s8_s32(input, + filter, + buf, + buf_row, + buf_size, + filter_y, + filter_x, + input_ch, + output_ch, + input_offset, + buf_x, + input_x, + stride_x, + skip_rows_top, + skip_rows_bottom); + input += input_ch * input_x; - for (int i = 0; i < output_x * output_y; i++) + if (skip_rows_top == 0) { - memcpy(img_data, bias_data, output_ch * sizeof(int32_t)); - img_data += output_ch; - } - } + for (int y = 0; y < stride_y; y++) + { + int32_t *buf_out = buf + buf_row; + buf_out += output_ch * pad_x; - int32_t *col_data_ptr = col_data; - const int8_t *filter_data_ptr = filter_data; +#if defined(ARM_MATH_MVEI) + for (int x = 0; x < output_x; x++) + { + const int32_t *mult_ptr = output_multiplier; + const int32_t *shift_ptr = output_shift; - arm_memset_s8((int8_t *)col_data_ptr, 0, col_buf_size); + int channel_count = output_ch; + for (; channel_count > 0; channel_count -= 4) + { + mve_pred16_t p = vctp32q((uint32_t)channel_count); - for (int i_output_ch = 0; i_output_ch < output_ch; i_output_ch++) - { - arm_nn_mat_mult_nt_t_s8_s32(input_data_ptr, - filter_data_ptr, - col_data_ptr, - input_size, - input_ch, - filter_size, - input_offset, - output_ch); - - filter_data_ptr += (input_ch * filter_size); - col_data_ptr++; - } + int32x4_t result = vldrwq_z_s32(buf_out, p); + buf_out += 4; + result = + arm_requantize_mve_32x4(result, vldrwq_z_s32(mult_ptr, p), vldrwq_z_s32(shift_ptr, p)); + mult_ptr += 4; + shift_ptr += 4; + result = vaddq_n_s32(result, out_offset); + result = vmaxq_s32(result, vdupq_n_s32(activation_min)); + result = vminq_s32(result, vdupq_n_s32(activation_max)); + vstrbq_p_s32(output, result, p); + output += 4; + } - int32_t *col_buf = col_data; - int32_t *img_data = img_buf_ptr; - const int32_t col_y = (output_y + pad_y_offset + pad_y - kernel_y) / stride_y + 1; - const int32_t col_x = (output_x + pad_x_offset + pad_x - kernel_x) / stride_x + 1; + // Correct pointer overshoot due to predication + buf_out += channel_count; + output += channel_count; + } +#else - // Column to image - for (int i_col_y = 0, i_pad_y = -pad_y; i_col_y < col_y; i_col_y++, i_pad_y += stride_y) - { - for (int i_col_x = 0, i_pad_x = -pad_x; i_col_x < col_x; i_col_x++, i_pad_x += stride_x) - { - int32_t *dst_data = img_data + (i_pad_y * output_x + i_pad_x) * output_ch; + for (int x = 0; x < output_x; x++) + { + const int32_t *output_multiplier_ptr = output_multiplier; + const int32_t *output_shift_ptr = output_shift; + for (int z = 0; z < output_ch; z++) + { + int32_t result = *buf_out++; + result = arm_nn_requantize(result, *output_multiplier_ptr++, *output_shift_ptr++); + result += out_offset; + result = MAX(result, activation_min); + result = MIN(result, activation_max); + *output++ = result; + } + } +#endif - for (int32_t i_ker_y = i_pad_y; i_ker_y < i_pad_y + kernel_y; i_ker_y++) - { - for (int32_t i_ker_x = i_pad_x; i_ker_x < i_pad_x + kernel_x; i_ker_x++) + // Reset the buffer which was just written + if (bias_data) { - if (i_ker_y >= 0 && i_ker_y < output_y && i_ker_x >= 0 && i_ker_x < output_x) + for (int x = 0; x < buf_x_elements; x++) { - for (int i_output_ch = 0; i_output_ch < output_ch; i_output_ch++) - { - dst_data[i_output_ch] += col_buf[i_output_ch]; - } + arm_memcpy_s8((int8_t *)(buf + buf_row + x * output_ch), + (const int8_t *)bias_data, + output_ch * sizeof(int32_t)); } - dst_data += output_ch; - col_buf += output_ch; } - dst_data += (output_x - kernel_x) * output_ch; + else + { + arm_memset_s8((int8_t *)(buf + buf_row), 0, buf_x * sizeof(int32_t)); + } + + // Next row in the rolling buffer + buf_row = (buf_row + buf_x) % buf_size; } } } - img_data = img_buf_ptr; - for (int i = 0; i < output_x * output_y; i++) + + // Write leftover rows + for (int y = 0; y < filter_y - stride_y; y++) { -#if defined(ARM_MATH_MVEI) - int output_ch_idx = 0; - int8_t *ip_out_data = output_data_ptr; - for (int32_t i_channel_rmdr = output_ch; i_channel_rmdr > 0; i_channel_rmdr -= 4) + int32_t *buf_out = buf + buf_row; + if ((input_y * stride_y + y >= pad_y) && (input_y * stride_y + y < pad_y + output_y)) { - mve_pred16_t p = vctp32q((uint32_t)i_channel_rmdr); - int32x4_t result = vldrwq_z_s32(&img_data[output_ch_idx], p); - result = arm_requantize_mve_32x4(result, - vldrwq_z_s32(&output_multiplier[output_ch_idx], p), - vldrwq_z_s32(&output_shift[output_ch_idx], p)); - result = vaddq_n_s32(result, out_offset); - result = vmaxq_s32(result, vdupq_n_s32(activation_min)); - result = vminq_s32(result, vdupq_n_s32(activation_max)); - vstrbq_p_s32(ip_out_data, result, p); - ip_out_data += 4; - output_ch_idx += 4; - } - output_data_ptr += output_ch; + buf_out += output_ch * pad_x; +#if defined(ARM_MATH_MVEI) + for (int x = 0; x < output_x; x++) + { + const int32_t *mult_ptr = output_multiplier; + const int32_t *shift_ptr = output_shift; + + int channel_count = output_ch; + for (; channel_count > 0; channel_count -= 4) + { + mve_pred16_t p = vctp32q((uint32_t)channel_count); + + int32x4_t result = vldrwq_z_s32(buf_out, p); + buf_out += 4; + result = arm_requantize_mve_32x4(result, vldrwq_z_s32(mult_ptr, p), vldrwq_z_s32(shift_ptr, p)); + mult_ptr += 4; + shift_ptr += 4; + result = vaddq_n_s32(result, out_offset); + result = vmaxq_s32(result, vdupq_n_s32(activation_min)); + result = vminq_s32(result, vdupq_n_s32(activation_max)); + vstrbq_p_s32(output, result, p); + output += 4; + } + + // Correct pointer overshoot due to predication + buf_out += channel_count; + output += channel_count; + } #else - int i_output_ch = 0; - for (; i_output_ch < output_ch; i_output_ch++) - { - int32_t result = - arm_nn_requantize(img_data[i_output_ch], output_multiplier[i_output_ch], output_shift[i_output_ch]); - result += out_offset; - result = MAX(result, activation_min); - result = MIN(result, activation_max); - *output_data_ptr++ = (int8_t)result; - } + for (int x = 0; x < output_x; x++) + { + const int32_t *output_multiplier_ptr = output_multiplier; + const int32_t *output_shift_ptr = output_shift; + + for (int z = 0; z < output_ch; z++) + { + int32_t result = *buf_out++; + + result = arm_nn_requantize(result, *output_multiplier_ptr++, *output_shift_ptr++); + result += out_offset; + result = MAX(result, activation_min); + result = MIN(result, activation_max); + *output++ = result; + } + } #endif - img_data += output_ch; + } + buf_row = (buf_row + buf_x) % buf_size; } - input_data_ptr += (input_size * input_ch); + batch_cnt--; } + /* Return to application */ return ARM_CMSIS_NN_SUCCESS; } diff --git a/Source/ConvolutionFunctions/arm_transpose_conv_wrapper_s8.c b/Source/ConvolutionFunctions/arm_transpose_conv_wrapper_s8.c new file mode 100644 index 00000000..699a8b01 --- /dev/null +++ b/Source/ConvolutionFunctions/arm_transpose_conv_wrapper_s8.c @@ -0,0 +1,161 @@ +/* + * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_transpose_conv_wrapper_s8.c + * Description: Wrapper API to select appropriate transpose conv API based + * on dimensions. + * + * $Date: 16 October 2024 + * $Revision: V.1.0.0 + * + * Target : Arm(R) M-Profile Architecture + * + * -------------------------------------------------------------------- */ + +#include "arm_nnfunctions.h" +#include "arm_nnsupportfunctions.h" + +/** + * @ingroup Public + */ + +/** + * @addtogroup NNConv + * @{ + */ + +/* + * s8 Transpose conv wrapper function + * + * Refer header file for details. + * + */ +arm_cmsis_nn_status arm_transpose_conv_wrapper_s8(const cmsis_nn_context *ctx, + const cmsis_nn_context *reverse_conv_ctx, + const cmsis_nn_transpose_conv_params *transpose_conv_params, + const cmsis_nn_per_channel_quant_params *quant_params, + const cmsis_nn_dims *input_dims, + const int8_t *input_data, + const cmsis_nn_dims *filter_dims, + const int8_t *filter_data, + const cmsis_nn_dims *bias_dims, + const int32_t *bias_data, + const cmsis_nn_dims *output_dims, + int8_t *output_data) +{ + + if (ctx->buf == NULL) + { + return ARM_CMSIS_NN_ARG_ERROR; + } + + const bool reverse_conv_possible = + ((transpose_conv_params->stride.w <= 2) && (transpose_conv_params->stride.h <= 2)); + const bool reverse_conv_efficient = (input_dims->c > REVERSE_TCOL_EFFICIENT_THRESHOLD); + + if (reverse_conv_possible && reverse_conv_efficient) + { + + if (reverse_conv_ctx->buf == NULL) + { + return ARM_CMSIS_NN_ARG_ERROR; + } + + const int32_t stride_w = transpose_conv_params->stride.w; + const int32_t stride_h = transpose_conv_params->stride.h; + const int32_t filter_h = filter_dims->h; + const int32_t filter_w = filter_dims->w; + const int32_t output_c = output_dims->c; + const int32_t input_n = input_dims->n; + const int32_t input_h = input_dims->h; + const int32_t input_w = input_dims->w; + const int32_t input_c = input_dims->c; + const int32_t padding_w = transpose_conv_params->padding.w; + const int32_t padding_h = transpose_conv_params->padding.h; + + cmsis_nn_conv_params conv_params; + conv_params.padding.h = filter_h - 1 - padding_h; + conv_params.padding.w = filter_w - 1 - padding_w; + conv_params.input_offset = transpose_conv_params->input_offset; + conv_params.output_offset = transpose_conv_params->output_offset; + conv_params.stride.h = 1; + conv_params.stride.w = 1; + conv_params.dilation.h = 1; + conv_params.dilation.w = 1; + conv_params.activation = transpose_conv_params->activation; + + const cmsis_nn_dims transposed_input_dims = {input_n, input_h * stride_h, input_w * stride_w, input_c}; + const cmsis_nn_dims upscale_dims = {0, stride_h, stride_w, 0}; + + // Reverse filter in x and y-dimensions + int8_t *reversed_filter = reverse_conv_ctx->buf; + const int8_t *in_ptr = filter_data; + int8_t *out_ptr = reversed_filter; + const int32_t filter_size = filter_h * filter_w * input_c; + + out_ptr += filter_size; + for (int32_t i = 0; i < output_c; i++) + { + for (int32_t y = 0; y < filter_h; y++) + { + for (int32_t x = 0; x < filter_w; x++) + { + out_ptr -= input_c; + arm_memcpy_s8(out_ptr, in_ptr, input_c * sizeof(int8_t)); + in_ptr += input_c; + } + } + out_ptr += 2 * filter_size; + } + + return arm_convolve_s8(ctx, + &conv_params, + quant_params, + &transposed_input_dims, + input_data, + filter_dims, + reversed_filter, + bias_dims, + bias_data, + &upscale_dims, + output_dims, + output_data); + } + else + { + + return arm_transpose_conv_s8(ctx, + reverse_conv_ctx, + transpose_conv_params, + quant_params, + input_dims, + input_data, + filter_dims, + filter_data, + bias_dims, + bias_data, + output_dims, + output_data); + } +} + +/** + * @} end of NNconv group + */ diff --git a/Source/NNSupportFunctions/CMakeLists.txt b/Source/NNSupportFunctions/CMakeLists.txt index 470105e5..1ee562de 100644 --- a/Source/NNSupportFunctions/CMakeLists.txt +++ b/Source/NNSupportFunctions/CMakeLists.txt @@ -1,5 +1,5 @@ # -# SPDX-FileCopyrightText: Copyright 2019-2023 Arm Limited and/or its affiliates +# SPDX-FileCopyrightText: Copyright 2019-2024 Arm Limited and/or its affiliates # # SPDX-License-Identifier: Apache-2.0 # @@ -19,7 +19,7 @@ file(GLOB SRC_S4 "./*_s4*.c") file(GLOB SRC_S8 "./*_s8*.c") file(GLOB SRC_S16 "./*_s16*.c") -target_sources(cmsis-nn PRIVATE ${SRC_S4} ${SRC_S8} ${SRC_S16} arm_nntables.c +file(GLOB SRC_S32 "./*_s32*.c") +target_sources(cmsis-nn PRIVATE ${SRC_S4} ${SRC_S8} ${SRC_S16} ${SRC_S32} arm_nntables.c arm_q7_to_q15_with_offset.c - arm_nn_mat_mult_nt_t_s8_s32.c arm_s8_to_s16_unordered_with_offset.c) diff --git a/Source/NNSupportFunctions/arm_nn_transpose_conv_row_s8_s32.c b/Source/NNSupportFunctions/arm_nn_transpose_conv_row_s8_s32.c new file mode 100644 index 00000000..41476545 --- /dev/null +++ b/Source/NNSupportFunctions/arm_nn_transpose_conv_row_s8_s32.c @@ -0,0 +1,515 @@ +/* + * SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_transpose_conv_row_s8_s32 + * Description: Transpose covolution help function. + * + * $Date: 22 Oct 2024 + * $Revision: V.1.0.0 + * + * Target : Arm(R) M-Profile Architecture + * + * -------------------------------------------------------------------- */ + +#include "arm_nnsupportfunctions.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup supportConvolution + * @{ + */ + +/* + * Computation of transposed convolution for one row of input into a rolling scratch buffer. + * + * Refer header file for details. + * + */ +arm_cmsis_nn_status arm_nn_transpose_conv_row_s8_s32(const int8_t *lhs, + const int8_t *rhs, + int32_t *output_start, + const int32_t output_index, + const int32_t output_max, + const int32_t rhs_rows, + const int32_t rhs_cols, + const int32_t input_channels, + const int32_t output_channels, + const int32_t lhs_offset, + const int32_t row_offset, + const int32_t input_x, + const int32_t stride_x, + const int32_t skip_rows_top, + const int32_t skip_rows_bottom) +{ + + const int32_t skip_pre_rows = skip_rows_top * rhs_cols * input_channels; + const int32_t skip_post_rows = skip_rows_bottom * rhs_cols * input_channels; + const int32_t rhs_rows_count = rhs_rows - skip_rows_top - skip_rows_bottom; + + int32_t input_count = input_x; + for (; input_count > 3; input_count -= 4) + { + const int8_t *rhs_ptr = rhs; + + for (int32_t i_out_channel = 0; i_out_channel < output_channels; i_out_channel++) + { + rhs_ptr += skip_pre_rows; + int32_t index = output_index; + + for (int32_t i_row = 0; i_row < rhs_rows_count; i_row++) + { + int32_t *output_ptr0 = output_start + index; + + for (int32_t i_col = 0; i_col < rhs_cols; i_col++) + { + const int8_t *lhs_ptr0 = lhs; + + int32_t result0 = 0; + int32_t result1 = 0; + int32_t result2 = 0; + int32_t result3 = 0; + +#if defined(ARM_MATH_DSP) && !defined(ARM_MATH_MVEI) + const int16_t lhs_offset_s16 = (int16_t)lhs_offset; + const uint32_t lhs_offset_s16x2 = PKHBT(lhs_offset_s16, lhs_offset_s16, 16); + + for (int32_t channel_count = input_channels; channel_count > 3; channel_count -= 4) + { + const int8_t *lhs_temp = lhs_ptr0; + int32_t lhs00 = arm_nn_read_s8x4(lhs_temp); + int32_t lhs01 = SXTAB16_RORn(lhs_offset_s16x2, (uint32_t)lhs00, 8); + lhs00 = SXTAB16(lhs_offset_s16x2, lhs00); + lhs_temp += input_channels; + int32_t lhs10 = arm_nn_read_s8x4(lhs_temp); + int32_t lhs11 = SXTAB16_RORn(lhs_offset_s16x2, (uint32_t)lhs10, 8); + lhs10 = SXTAB16(lhs_offset_s16x2, lhs10); + lhs_temp += input_channels; + int32_t lhs20 = arm_nn_read_s8x4(lhs_temp); + int32_t lhs21 = SXTAB16_RORn(lhs_offset_s16x2, (uint32_t)lhs20, 8); + lhs20 = SXTAB16(lhs_offset_s16x2, lhs20); + lhs_temp += input_channels; + int32_t lhs30 = arm_nn_read_s8x4(lhs_temp); + int32_t lhs31 = SXTAB16_RORn(lhs_offset_s16x2, (uint32_t)lhs30, 8); + lhs30 = SXTAB16(lhs_offset_s16x2, lhs30); + lhs_ptr0 += 4; + + int32_t rhs0 = arm_nn_read_s8x4(rhs_ptr); + int32_t rhs1 = SXTB16_RORn((uint32_t)rhs0, 8); + rhs0 = SXTB16(rhs0); + rhs_ptr += 4; + + result0 = SMLAD(lhs00, rhs0, result0); + result0 = SMLAD(lhs01, rhs1, result0); + result1 = SMLAD(lhs10, rhs0, result1); + result1 = SMLAD(lhs11, rhs1, result1); + result2 = SMLAD(lhs20, rhs0, result2); + result2 = SMLAD(lhs21, rhs1, result2); + result3 = SMLAD(lhs30, rhs0, result3); + result3 = SMLAD(lhs31, rhs1, result3); + } + + for (int32_t i = 0; i < (input_channels & 0b11); i++) + { + const int8_t *lhs_temp = lhs_ptr0; + const int32_t lhs_val00 = *lhs_temp + lhs_offset; + lhs_temp += input_channels; + const int32_t lhs_val10 = *lhs_temp + lhs_offset; + lhs_temp += input_channels; + const int32_t lhs_val20 = *lhs_temp + lhs_offset; + lhs_temp += input_channels; + const int32_t lhs_val30 = *lhs_temp + lhs_offset; + lhs_ptr0++; + + const int32_t rhs_val0 = *rhs_ptr++; + + result0 += lhs_val00 * rhs_val0; + result1 += lhs_val10 * rhs_val0; + result2 += lhs_val20 * rhs_val0; + result3 += lhs_val30 * rhs_val0; + } + + int32_t *output_temp = output_ptr0; + *output_ptr0 += result0; + output_temp += stride_x * output_channels; + *output_temp += result1; + output_temp += stride_x * output_channels; + *output_temp += result2; + output_temp += stride_x * output_channels; + *output_temp += result3; + + output_ptr0 += output_channels; +#else + int32_t rhs_sum = 0; + #if defined(ARM_MATH_MVEI) + + int channel_count = input_channels; + for (int channel_i = 0; channel_i < (input_channels + 15) / 16; channel_i++) + { + mve_pred16_t p0 = vctp8q((uint32_t)channel_count); + channel_count -= 16; + + const int8_t *lhs_temp = lhs_ptr0; + int8x16_t v_lhs00 = vldrbq_z_s8(lhs_temp, p0); + lhs_temp += input_channels; + int8x16_t v_lhs10 = vldrbq_z_s8(lhs_temp, p0); + lhs_temp += input_channels; + int8x16_t v_lhs20 = vldrbq_z_s8(lhs_temp, p0); + lhs_temp += input_channels; + int8x16_t v_lhs30 = vldrbq_z_s8(lhs_temp, p0); + + lhs_ptr0 += 16; + int8x16_t v_rhs0 = vldrbq_z_s8(rhs_ptr, p0); + rhs_ptr += 16; + + result0 = vmladavaq_s8(result0, v_lhs00, v_rhs0); + result1 = vmladavaq_s8(result1, v_lhs10, v_rhs0); + result2 = vmladavaq_s8(result2, v_lhs20, v_rhs0); + result3 = vmladavaq_s8(result3, v_lhs30, v_rhs0); + + rhs_sum = vaddvaq_s8(rhs_sum, v_rhs0); + } + + rhs_ptr += channel_count; + + #else + for (int32_t channel_count = 0; channel_count < input_channels / 2; channel_count++) + { + const int8_t *lhs_temp = lhs_ptr0; + const int32_t lhs_val00 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val10 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val20 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val30 = *lhs_temp; + lhs_ptr0++; + + lhs_temp = lhs_ptr0; + const int32_t lhs_val01 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val11 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val21 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val31 = *lhs_temp; + lhs_ptr0++; + + const int32_t rhs_val0 = *rhs_ptr++; + const int32_t rhs_val1 = *rhs_ptr++; + + result0 += lhs_val00 * rhs_val0; + result0 += lhs_val01 * rhs_val1; + + result1 += lhs_val10 * rhs_val0; + result1 += lhs_val11 * rhs_val1; + + result2 += lhs_val20 * rhs_val0; + result2 += lhs_val21 * rhs_val1; + + result3 += lhs_val30 * rhs_val0; + result3 += lhs_val31 * rhs_val1; + + rhs_sum += rhs_val0; + rhs_sum += rhs_val1; + } + + // Input channel tail-handling + if (input_channels & 0b1) + { + const int8_t *lhs_temp = lhs_ptr0; + const int32_t lhs_val00 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val10 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val20 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val30 = *lhs_temp; + lhs_ptr0++; + + const int32_t rhs_val0 = *rhs_ptr++; + + result0 += lhs_val00 * rhs_val0; + result1 += lhs_val10 * rhs_val0; + result2 += lhs_val20 * rhs_val0; + result3 += lhs_val30 * rhs_val0; + + rhs_sum += rhs_val0; + } + #endif + int32_t *output_temp = output_ptr0; + *output_ptr0 += result0 + rhs_sum * lhs_offset; + output_temp += stride_x * output_channels; + *output_temp += result1 + rhs_sum * lhs_offset; + output_temp += stride_x * output_channels; + *output_temp += result2 + rhs_sum * lhs_offset; + output_temp += stride_x * output_channels; + *output_temp += result3 + rhs_sum * lhs_offset; + + output_ptr0 += output_channels; +#endif + } + + // Next row, wrapping around the circular buffer + index = (index + row_offset) % output_max; + } + // Next output_channel + ++output_start; + rhs_ptr += skip_post_rows; + } + + output_start += (4 * stride_x - 1) * output_channels; + lhs += 4 * input_channels; + } + + // Input column tail handling + if (input_count & 0b10) + { + const int8_t *rhs_ptr = rhs; + + for (int32_t i_out_channel = 0; i_out_channel < output_channels; i_out_channel++) + { + int32_t index = output_index; + rhs_ptr += skip_pre_rows; + + for (int32_t i_row = 0; i_row < rhs_rows_count; i_row++) + { + int32_t *output_ptr0 = output_start + index; + + for (int32_t i_col = 0; i_col < rhs_cols; i_col++) + { + const int8_t *lhs_ptr0 = lhs; + + int32_t result0 = 0; + int32_t result1 = 0; + +#if defined(ARM_MATH_DSP) && !defined(ARM_MATH_MVEI) + const int16_t lhs_offset_s16 = (int16_t)lhs_offset; + const uint32_t lhs_offset_s16x2 = PKHBT(lhs_offset_s16, lhs_offset_s16, 16); + + for (int32_t channel_count = input_channels; channel_count > 3; channel_count -= 4) + { + const int8_t *lhs_temp = lhs_ptr0; + int32_t lhs00 = arm_nn_read_s8x4(lhs_temp); + int32_t lhs01 = SXTAB16_RORn(lhs_offset_s16x2, (uint32_t)lhs00, 8); + lhs00 = SXTAB16(lhs_offset_s16x2, lhs00); + lhs_temp += input_channels; + int32_t lhs10 = arm_nn_read_s8x4(lhs_temp); + int32_t lhs11 = SXTAB16_RORn(lhs_offset_s16x2, (uint32_t)lhs10, 8); + lhs10 = SXTAB16(lhs_offset_s16x2, lhs10); + lhs_ptr0 += 4; + + int32_t rhs0 = arm_nn_read_s8x4(rhs_ptr); + int32_t rhs1 = SXTB16_RORn((uint32_t)rhs0, 8); + rhs0 = SXTB16(rhs0); + rhs_ptr += 4; + + result0 = SMLAD(lhs00, rhs0, result0); + result0 = SMLAD(lhs01, rhs1, result0); + result1 = SMLAD(lhs10, rhs0, result1); + result1 = SMLAD(lhs11, rhs1, result1); + } + + for (int32_t i = 0; i < (input_channels & 0b11); i++) + { + const int8_t *lhs_temp = lhs_ptr0; + const int32_t lhs_val00 = *lhs_temp + lhs_offset; + lhs_temp += input_channels; + const int32_t lhs_val10 = *lhs_temp + lhs_offset; + lhs_ptr0++; + + const int32_t rhs_val0 = *rhs_ptr++; + + result0 += lhs_val00 * rhs_val0; + result1 += lhs_val10 * rhs_val0; + } + + int32_t *output_temp = output_ptr0; + *output_ptr0 += result0; + output_temp += stride_x * output_channels; + *output_temp += result1; + + output_ptr0 += output_channels; +#else + int32_t rhs_sum = 0; + #if defined(ARM_MATH_MVEI) + int channel_count = input_channels; + for (int channel_i = 0; channel_i < (input_channels + 15) / 16; channel_i++) + { + mve_pred16_t p0 = vctp8q((uint32_t)channel_count); + channel_count -= 16; + + const int8_t *lhs_temp = lhs_ptr0; + int8x16_t v_lhs00 = vldrbq_z_s8(lhs_temp, p0); + lhs_temp += input_channels; + int8x16_t v_lhs10 = vldrbq_z_s8(lhs_temp, p0); + lhs_ptr0 += 16; + int8x16_t v_rhs0 = vldrbq_z_s8(rhs_ptr, p0); + rhs_ptr += 16; + + result0 = vmladavaq_s8(result0, v_lhs00, v_rhs0); + result1 = vmladavaq_s8(result1, v_lhs10, v_rhs0); + + rhs_sum = vaddvaq_s8(rhs_sum, v_rhs0); + } + + rhs_ptr += channel_count; + + #else + for (int32_t channel_count = 0; channel_count < input_channels; channel_count++) + { + const int8_t *lhs_temp = lhs_ptr0; + const int32_t lhs_val00 = *lhs_temp; + lhs_temp += input_channels; + const int32_t lhs_val10 = *lhs_temp; + lhs_ptr0++; + + const int32_t rhs_val0 = *rhs_ptr++; + + result0 += lhs_val00 * rhs_val0; + result1 += lhs_val10 * rhs_val0; + + rhs_sum += rhs_val0; + } + #endif + int32_t *output_temp = output_ptr0; + *output_ptr0 += result0 + rhs_sum * lhs_offset; + output_temp += stride_x * output_channels; + *output_temp += result1 + rhs_sum * lhs_offset; + + output_ptr0 += output_channels; +#endif + } + + // Next row, wrapping around the circular buffer + index = (index + row_offset) % output_max; + } + + // Next output_channel + ++output_start; + rhs_ptr += skip_post_rows; + } + + output_start += (2 * stride_x - 1) * output_channels; + lhs += 2 * input_channels; + } + + if (input_count & 0b1) + { + const int8_t *rhs_ptr = rhs; + + for (int32_t i_out_channel = 0; i_out_channel < output_channels; i_out_channel++) + { + int32_t index = output_index; + rhs_ptr += skip_pre_rows; + + for (int32_t i_row = 0; i_row < rhs_rows_count; i_row++) + { + int32_t *output_ptr0 = output_start + index; + + for (int32_t i_col = 0; i_col < rhs_cols; i_col++) + { + const int8_t *lhs_ptr0 = lhs; + + int32_t result0 = 0; +#if defined(ARM_MATH_DSP) && !defined(ARM_MATH_MVEI) + const int16_t lhs_offset_s16 = (int16_t)lhs_offset; + const uint32_t lhs_offset_s16x2 = PKHBT(lhs_offset_s16, lhs_offset_s16, 16); + + for (int32_t channel_count = input_channels; channel_count > 3; channel_count -= 4) + { + const int8_t *lhs_temp = lhs_ptr0; + int32_t lhs00 = arm_nn_read_s8x4(lhs_temp); + int32_t lhs01 = SXTAB16_RORn(lhs_offset_s16x2, (uint32_t)lhs00, 8); + lhs00 = SXTAB16(lhs_offset_s16x2, lhs00); + lhs_ptr0 += 4; + + int32_t rhs0 = arm_nn_read_s8x4(rhs_ptr); + int32_t rhs1 = SXTB16_RORn((uint32_t)rhs0, 8); + rhs0 = SXTB16(rhs0); + rhs_ptr += 4; + + result0 = SMLAD(lhs00, rhs0, result0); + result0 = SMLAD(lhs01, rhs1, result0); + } + + for (int32_t i = 0; i < (input_channels & 0b11); i++) + { + const int8_t *lhs_temp = lhs_ptr0; + const int32_t lhs_val00 = *lhs_temp + lhs_offset; + lhs_ptr0++; + + const int32_t rhs_val0 = *rhs_ptr++; + + result0 += lhs_val00 * rhs_val0; + } +#else + #if defined(ARM_MATH_MVEI) + int channel_count = input_channels; + for (int channel_i = 0; channel_i < (input_channels + 15) / 16; channel_i++) + { + mve_pred16_t p0 = vctp8q((uint32_t)channel_count); + channel_count -= 16; + + int8x16_t v_lhs00 = vldrbq_z_s8(lhs_ptr0, p0); + lhs_ptr0 += 16; + int8x16_t v_rhs0 = vldrbq_z_s8(rhs_ptr, p0); + rhs_ptr += 16; + + result0 = vmladavaq_s8(result0, v_lhs00, v_rhs0); + + int32_t rhs_sum = vaddvaq_s8(0, v_rhs0); + result0 += rhs_sum * lhs_offset; + } + + rhs_ptr += channel_count; + #else + for (int32_t channel_count = 0; channel_count < input_channels; channel_count++) + { + const int32_t lhs_val00 = *lhs_ptr0; + lhs_ptr0++; + + const int32_t rhs_val0 = *rhs_ptr++; + + result0 += (lhs_val00 + lhs_offset) * rhs_val0; + } + #endif +#endif + *output_ptr0 += result0; + output_ptr0 += output_channels; + } + + // Next row, wrapping around the circular buffer + index = (index + row_offset) % output_max; + } + + // Next output_channel + ++output_start; + rhs_ptr += skip_post_rows; + } + } + return ARM_CMSIS_NN_SUCCESS; +} + +/** + * @} end of Doxygen group + */ diff --git a/Tests/UnitTest/CMakeLists.txt b/Tests/UnitTest/CMakeLists.txt index 0f0f6575..7e7d99b5 100644 --- a/Tests/UnitTest/CMakeLists.txt +++ b/Tests/UnitTest/CMakeLists.txt @@ -104,6 +104,7 @@ add_subdirectory(TestCases/test_arm_maximum_minimum_s8) add_subdirectory(TestCases/test_arm_max_pool_s16) add_subdirectory(TestCases/test_arm_max_pool_s8) add_subdirectory(TestCases/test_arm_pad_s8) +add_subdirectory(TestCases/test_arm_reverse_transpose_conv_s8) add_subdirectory(TestCases/test_arm_softmax_s16) add_subdirectory(TestCases/test_arm_softmax_s8) add_subdirectory(TestCases/test_arm_softmax_s8_s16) diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/biases_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/biases_data.h new file mode 100644 index 00000000..fccb843e --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/biases_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_1_biases[2] = {-6396, 6329}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/config_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/config_data.h new file mode 100644 index 00000000..6992478b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/config_data.h @@ -0,0 +1,26 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#define REVERSE_TRANSPOSE_CONV_1_OUT_CH 2 +#define REVERSE_TRANSPOSE_CONV_1_IN_CH 32 +#define REVERSE_TRANSPOSE_CONV_1_INPUT_W 3 +#define REVERSE_TRANSPOSE_CONV_1_INPUT_H 5 +#define REVERSE_TRANSPOSE_CONV_1_DST_SIZE 30 +#define REVERSE_TRANSPOSE_CONV_1_INPUT_SIZE 480 +#define REVERSE_TRANSPOSE_CONV_1_OUT_ACTIVATION_MIN -128 +#define REVERSE_TRANSPOSE_CONV_1_OUT_ACTIVATION_MAX 127 +#define REVERSE_TRANSPOSE_CONV_1_INPUT_BATCHES 1 +#define REVERSE_TRANSPOSE_CONV_1_FILTER_X 2 +#define REVERSE_TRANSPOSE_CONV_1_FILTER_Y 2 +#define REVERSE_TRANSPOSE_CONV_1_STRIDE_X 1 +#define REVERSE_TRANSPOSE_CONV_1_STRIDE_Y 1 +#define REVERSE_TRANSPOSE_CONV_1_PAD_X 0 +#define REVERSE_TRANSPOSE_CONV_1_PAD_Y 0 +#define REVERSE_TRANSPOSE_CONV_1_OUTPUT_W 3 +#define REVERSE_TRANSPOSE_CONV_1_OUTPUT_H 5 +#define REVERSE_TRANSPOSE_CONV_1_INPUT_OFFSET 128 +#define REVERSE_TRANSPOSE_CONV_1_OUTPUT_OFFSET -111 +#define REVERSE_TRANSPOSE_CONV_1_DILATION_X 1 +#define REVERSE_TRANSPOSE_CONV_1_DILATION_Y 1 +#define REVERSE_TRANSPOSE_CONV_1_PAD_X_WITH_OFFSET 1 +#define REVERSE_TRANSPOSE_CONV_1_PAD_Y_WITH_OFFSET 1 diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/input_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/input_data.h new file mode 100644 index 00000000..a5a6b790 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/input_data.h @@ -0,0 +1,32 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_1_input[480] = { + 114, -27, -60, 88, -51, -35, -97, -48, 35, 58, -76, -117, -4, 90, 54, -37, 100, -118, 52, + 14, -34, 120, 109, 58, -49, -44, 40, -84, -78, 62, 59, -31, 55, 101, -73, -100, 61, 56, + -23, 4, -5, 118, 84, 22, 123, 63, -42, -60, -105, 46, -83, -108, -11, -67, -54, 88, 68, + 99, -56, 9, 87, -6, -29, -117, -5, -76, -120, -79, 42, 98, 64, -83, -127, -63, -54, 7, + 30, -111, 118, 22, 43, 81, -74, -99, -31, 29, 36, -24, -96, 26, -79, -73, -92, -29, 116, + 23, 18, -17, 54, -112, -87, 44, 38, -38, 18, 76, -75, -65, 61, -51, -31, 45, -62, -106, + 82, -84, -93, 7, -111, 85, -71, 67, -60, 72, 36, 52, 5, 52, -26, -30, -37, 123, 40, + -84, -56, 92, 24, -49, 66, -29, 72, 93, -69, -69, -119, 87, 81, -112, -110, -43, -112, -113, + -61, -24, -105, -51, 111, -28, 59, -92, 108, 81, -82, 91, 69, 87, -23, 105, -118, -77, -29, + 106, 69, 20, -8, 98, 24, 57, 16, -18, -117, 47, 52, -21, -43, -107, 29, 41, 30, 126, + 47, 9, 32, -97, -31, 57, -9, 48, 32, -77, -34, 38, 81, -59, 26, -92, 70, 11, 5, + -95, -20, -72, 30, -4, -28, 126, 98, 11, 58, -56, -54, 94, 96, 46, -36, -86, -127, -104, + -64, -53, -57, 80, -101, 93, -120, 80, -24, -48, -41, -9, 51, 36, 18, -16, 21, -61, -78, + -105, -99, -48, 26, -26, 9, -7, -9, -97, -50, 98, -111, -39, -127, -74, -22, 123, 30, -38, + 30, -38, -83, 64, 85, 80, 41, 70, -39, 80, 31, 21, 115, 28, -17, 33, 20, -75, -53, + -77, -118, 16, 112, -112, -118, 9, 80, -39, -92, 44, -49, 115, 13, 3, 122, 63, -3, 104, + -85, 19, 24, -20, -80, 119, -4, 17, -63, -98, -103, -80, 2, 116, 54, 47, 77, 42, -33, + -45, 39, 102, -111, -67, -112, 80, 65, -127, -56, -76, -91, -81, -119, -38, 9, 91, -45, -63, + -63, 14, -8, -84, 93, -61, -50, 13, 117, -89, -14, 2, 61, 53, -33, -85, 85, 2, -128, + 107, 50, 43, 75, 9, -62, 64, 25, -104, -115, 12, 109, -27, -80, 87, -58, 119, 18, -40, + 69, 15, 63, 38, -104, 47, -60, 1, 80, 120, -9, 53, 71, 40, 18, -62, -114, 63, -30, + -59, -66, -54, 59, -60, 56, 85, -111, 33, 77, -23, -60, 113, 30, 30, -74, 41, -46, 19, + 8, -19, -31, -83, 79, -27, -42, -30, 4, 83, 94, -39, -70, -66, -32, 80, -111, 48, -88, + 64, 40, -26, 113, -42, -115, 26, 14, -24, -126, -90, 41, 75, 101, 107, 59, 84, -80, 108, + -113, -4, -23, 117, -95, -75, -12, 44, 92, 86, -128, 66, 27, -77, 17, -42, 63, -67, -66, + 69, 95, 38, -16, -23}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_mult_data.h new file mode 100644 index 00000000..998b4c2a --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_mult_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_1_output_mult[2] = {1607027642, 1596345723}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_ref_data.h new file mode 100644 index 00000000..6de0bd40 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_ref_data.h @@ -0,0 +1,8 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_1_output_ref[30] = {-89, -128, -96, -81, -85, -97, 34, 33, -15, 13, + -9, -42, -66, 12, -69, -32, 9, -28, -24, 25, + -61, -11, -56, 0, -10, 1, -18, 13, 63, -31}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_shift_data.h new file mode 100644 index 00000000..85898118 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/output_shift_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_1_output_shift[2] = {-10, -10}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/test_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/test_data.h new file mode 100644 index 00000000..575a0f2b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/test_data.h @@ -0,0 +1,9 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#include "biases_data.h" +#include "config_data.h" +#include "input_data.h" +#include "output_mult_data.h" +#include "output_ref_data.h" +#include "output_shift_data.h" +#include "weights_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/weights_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/weights_data.h new file mode 100644 index 00000000..831e3dd7 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_1/weights_data.h @@ -0,0 +1,19 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_1_weights[256] = { + -91, 34, 111, 24, 2, -19, 0, 65, 8, -113, -30, 109, 120, -14, 94, 103, 20, 84, 99, 118, + -123, -118, 76, 64, 38, -26, 12, 87, 122, -21, -91, -3, -44, -6, -109, 9, 55, 64, 30, -103, + -55, -90, -110, 65, 103, 127, -85, -16, -32, -62, 75, 78, -30, -115, -28, 65, 15, -108, -80, -29, + 110, 78, -46, -97, 62, -41, 64, 99, 60, -44, -39, 60, -73, -25, 73, 121, 93, 110, -91, -75, + 94, -85, 43, -27, 120, 42, 112, -107, -101, 81, 71, 20, -97, 124, 0, -84, -2, 31, 3, -47, + -119, 7, -53, -86, 23, 116, 108, -60, 83, -80, 49, -29, 82, 43, -4, -115, 65, 110, 74, -58, + -124, -125, 35, -3, -47, -118, 89, -54, -13, -49, 103, 37, 119, 0, -12, -103, -120, -61, 122, -29, + 94, -112, 30, -109, -7, 23, 106, -41, -102, -127, -18, 114, 54, -43, -47, 71, -34, 112, -120, 44, + -41, -74, -13, -41, -22, 66, 22, 31, -20, 43, 89, 1, -114, 61, 34, 7, 84, 81, -69, -107, + -14, 113, -81, 78, -44, 72, -22, -47, -75, 12, 118, 40, 9, 109, -103, 119, -47, 82, 55, 27, + -72, 118, 66, 34, 32, 29, 49, 18, 87, 50, 6, 40, 25, 68, 2, 58, 112, 41, 118, 42, + 31, 123, -1, -87, -44, -89, -116, -62, -97, 5, -57, -60, 75, 5, -39, 14, -79, -10, -90, 31, + -102, 39, 53, -123, 38, 63, 55, -40, -115, 114, 127, 48, 93, -118, 10, 86}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/biases_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/biases_data.h new file mode 100644 index 00000000..26d96cad --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/biases_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t *reverse_transpose_conv_2_biases = NULL; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/config_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/config_data.h new file mode 100644 index 00000000..0288899d --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/config_data.h @@ -0,0 +1,26 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#define REVERSE_TRANSPOSE_CONV_2_OUT_CH 5 +#define REVERSE_TRANSPOSE_CONV_2_IN_CH 17 +#define REVERSE_TRANSPOSE_CONV_2_INPUT_W 2 +#define REVERSE_TRANSPOSE_CONV_2_INPUT_H 1 +#define REVERSE_TRANSPOSE_CONV_2_DST_SIZE 40 +#define REVERSE_TRANSPOSE_CONV_2_INPUT_SIZE 34 +#define REVERSE_TRANSPOSE_CONV_2_OUT_ACTIVATION_MIN -128 +#define REVERSE_TRANSPOSE_CONV_2_OUT_ACTIVATION_MAX 127 +#define REVERSE_TRANSPOSE_CONV_2_INPUT_BATCHES 1 +#define REVERSE_TRANSPOSE_CONV_2_FILTER_X 1 +#define REVERSE_TRANSPOSE_CONV_2_FILTER_Y 1 +#define REVERSE_TRANSPOSE_CONV_2_STRIDE_X 2 +#define REVERSE_TRANSPOSE_CONV_2_STRIDE_Y 2 +#define REVERSE_TRANSPOSE_CONV_2_PAD_X 0 +#define REVERSE_TRANSPOSE_CONV_2_PAD_Y 0 +#define REVERSE_TRANSPOSE_CONV_2_OUTPUT_W 4 +#define REVERSE_TRANSPOSE_CONV_2_OUTPUT_H 2 +#define REVERSE_TRANSPOSE_CONV_2_INPUT_OFFSET 128 +#define REVERSE_TRANSPOSE_CONV_2_OUTPUT_OFFSET 31 +#define REVERSE_TRANSPOSE_CONV_2_DILATION_X 1 +#define REVERSE_TRANSPOSE_CONV_2_DILATION_Y 1 +#define REVERSE_TRANSPOSE_CONV_2_PAD_X_WITH_OFFSET 0 +#define REVERSE_TRANSPOSE_CONV_2_PAD_Y_WITH_OFFSET 0 diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/input_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/input_data.h new file mode 100644 index 00000000..ad8ff879 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/input_data.h @@ -0,0 +1,8 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_2_input[34] = {9, -22, 6, -73, -65, -79, 49, 112, -23, -18, -65, 0, + 120, -108, -24, 36, -128, -71, -86, 61, 118, 53, 18, 104, + 23, -100, 51, 24, -7, 107, 65, 20, -110, -54}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_mult_data.h new file mode 100644 index 00000000..62f1aed8 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_mult_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_2_output_mult[5] = {1826938627, 1902512782, 1805863611, 1778340174, 1743584998}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_ref_data.h new file mode 100644 index 00000000..f299073c --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_ref_data.h @@ -0,0 +1,8 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_2_output_ref[40] = {58, 38, 69, 68, -52, 31, 31, 31, 31, 31, 102, 30, 104, 68, + -53, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_shift_data.h new file mode 100644 index 00000000..8255a993 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/output_shift_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_2_output_shift[5] = {-10, -10, -10, -10, -10}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/test_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/test_data.h new file mode 100644 index 00000000..575a0f2b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/test_data.h @@ -0,0 +1,9 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#include "biases_data.h" +#include "config_data.h" +#include "input_data.h" +#include "output_mult_data.h" +#include "output_ref_data.h" +#include "output_shift_data.h" +#include "weights_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/weights_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/weights_data.h new file mode 100644 index 00000000..f3f2a005 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_2/weights_data.h @@ -0,0 +1,11 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_2_weights[85] = { + 79, -93, 103, 44, 82, -127, 86, -72, 11, 119, 65, -91, 17, 124, -45, 62, 89, + 113, 17, 108, 4, -100, -39, 77, -46, 112, 35, -108, -48, 17, 90, -127, -86, -64, + 84, -112, -55, 17, 77, -61, 112, -89, -60, 29, 38, 110, 107, 74, 127, -12, -38, + -37, -39, 51, 27, -30, -69, 72, -25, -127, 58, -60, 9, 126, -35, 53, 113, 60, + -92, 34, -61, -127, 24, 15, -124, -21, -116, -69, 22, -7, -44, 55, -91, -104, -80}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/biases_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/biases_data.h new file mode 100644 index 00000000..5e712c3b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/biases_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t *reverse_transpose_conv_3_biases = NULL; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/config_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/config_data.h new file mode 100644 index 00000000..35ddc9eb --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/config_data.h @@ -0,0 +1,26 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#define REVERSE_TRANSPOSE_CONV_3_OUT_CH 17 +#define REVERSE_TRANSPOSE_CONV_3_IN_CH 17 +#define REVERSE_TRANSPOSE_CONV_3_INPUT_W 2 +#define REVERSE_TRANSPOSE_CONV_3_INPUT_H 2 +#define REVERSE_TRANSPOSE_CONV_3_DST_SIZE 136 +#define REVERSE_TRANSPOSE_CONV_3_INPUT_SIZE 68 +#define REVERSE_TRANSPOSE_CONV_3_OUT_ACTIVATION_MIN -128 +#define REVERSE_TRANSPOSE_CONV_3_OUT_ACTIVATION_MAX 127 +#define REVERSE_TRANSPOSE_CONV_3_INPUT_BATCHES 1 +#define REVERSE_TRANSPOSE_CONV_3_FILTER_X 2 +#define REVERSE_TRANSPOSE_CONV_3_FILTER_Y 2 +#define REVERSE_TRANSPOSE_CONV_3_STRIDE_X 1 +#define REVERSE_TRANSPOSE_CONV_3_STRIDE_Y 2 +#define REVERSE_TRANSPOSE_CONV_3_PAD_X 0 +#define REVERSE_TRANSPOSE_CONV_3_PAD_Y 0 +#define REVERSE_TRANSPOSE_CONV_3_OUTPUT_W 2 +#define REVERSE_TRANSPOSE_CONV_3_OUTPUT_H 4 +#define REVERSE_TRANSPOSE_CONV_3_INPUT_OFFSET 128 +#define REVERSE_TRANSPOSE_CONV_3_OUTPUT_OFFSET 5 +#define REVERSE_TRANSPOSE_CONV_3_DILATION_X 1 +#define REVERSE_TRANSPOSE_CONV_3_DILATION_Y 1 +#define REVERSE_TRANSPOSE_CONV_3_PAD_X_WITH_OFFSET 1 +#define REVERSE_TRANSPOSE_CONV_3_PAD_Y_WITH_OFFSET 0 diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/input_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/input_data.h new file mode 100644 index 00000000..a8c293a9 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/input_data.h @@ -0,0 +1,9 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_3_input[68] = { + 34, -72, -27, -111, -115, 60, -68, 99, -2, -121, 61, 24, 108, -121, -35, 81, 1, 99, -56, -14, 44, 45, -51, + -49, 91, -48, -79, 102, 9, -78, 58, -61, -85, 60, -10, 74, 83, -10, 12, 71, -86, 20, -119, 30, 10, 79, + 74, -112, -9, 86, 2, 35, 61, 84, -47, 25, -88, -123, 20, 30, 102, 83, 1, 91, 115, -65, 75, 82}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_mult_data.h new file mode 100644 index 00000000..210e4cec --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_mult_data.h @@ -0,0 +1,22 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_3_output_mult[17] = {1512193441, + 1506177117, + 1456897250, + 1492571761, + 1502670526, + 1496410280, + 1473528442, + 1505342992, + 1490353138, + 1510912200, + 1490827346, + 1511484551, + 1502786700, + 1459833733, + 1503933466, + 1503011873, + 1510006128}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_ref_data.h new file mode 100644 index 00000000..4f59c30b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_ref_data.h @@ -0,0 +1,12 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_3_output_ref[136] = { + 8, 19, -21, -39, -10, 23, -30, -18, -22, -51, 62, 7, 74, -24, 29, 4, 56, 20, -1, -34, -73, 9, 56, + -59, -34, 16, -44, 39, 46, 68, 28, -18, -15, 30, 25, 10, 39, -21, 2, 75, 5, 11, -21, 42, -3, -8, + -11, -17, -47, -9, 5, -14, -13, 58, -11, -44, 67, 48, -5, -66, 9, 31, -13, 66, -73, -58, -27, -18, 8, + 4, -45, -56, -30, 46, -45, -14, -24, -42, 43, 20, 80, -40, 20, 9, 76, 43, -11, -63, -72, -17, 60, -61, + -42, 0, -70, 37, 18, 102, 50, -1, -20, 57, 37, -1, 27, 6, 12, 59, 8, 10, -43, 49, -8, -35, -15, + -27, -36, -1, 18, 0, -33, 44, 4, -66, 60, 58, -30, -31, -18, -8, -34, 77, -72, -69, -32, -51}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_shift_data.h new file mode 100644 index 00000000..e2d0818d --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/output_shift_data.h @@ -0,0 +1,7 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_3_output_shift[17] = + {-10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/test_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/test_data.h new file mode 100644 index 00000000..575a0f2b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/test_data.h @@ -0,0 +1,9 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#include "biases_data.h" +#include "config_data.h" +#include "input_data.h" +#include "output_mult_data.h" +#include "output_ref_data.h" +#include "output_shift_data.h" +#include "weights_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/weights_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/weights_data.h new file mode 100644 index 00000000..2dd49295 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_3/weights_data.h @@ -0,0 +1,67 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_3_weights[1156] = { + 74, 123, 90, -102, -89, 50, -44, -116, 89, -54, -96, -16, -60, 93, -90, 95, 79, -26, -9, + 42, -9, 16, 8, -8, 79, 98, -87, -115, 78, 97, 7, 78, -80, 16, 48, -9, -48, 90, + 63, 99, 104, -54, 65, 33, -120, -39, 26, 90, 117, 38, 54, -88, -68, 16, -19, 79, 17, + 30, -89, 16, 114, 47, -127, -72, 1, -95, -29, -32, 62, 45, -2, 70, -116, 104, 93, -86, + 116, -82, -71, 53, 89, 47, -102, -52, -51, 117, -93, 23, 101, -108, 5, -112, -50, -108, -123, + -90, 80, 4, 86, -46, 113, -51, 22, 8, 34, -52, -105, 97, -6, 6, 69, 63, 34, -105, + -117, -126, 13, 27, 39, 81, -32, 100, -115, 5, -48, 33, 89, 56, -7, 34, -100, -93, 0, + -127, -32, 83, 115, -98, -121, -94, -5, 28, -77, -33, 106, 108, -25, -22, -3, 103, -81, -126, + -32, -23, -104, -72, -32, -53, -123, 59, -101, 119, -51, 28, 48, -114, -116, 111, -23, 94, -39, + -102, 125, -126, -114, 48, 71, 45, -31, -2, -10, 124, -10, 127, 42, 125, -89, 74, -126, 55, + 109, -84, -1, 48, 102, -56, -102, 119, -40, 110, 50, -111, 71, 10, -114, -97, -56, -8, 1, + -110, -106, -76, -48, -109, 52, -56, 29, -24, 79, 39, -61, -127, -68, -91, 24, -17, -119, -1, + 39, -95, 115, 45, 16, 77, 90, 87, -55, 30, 113, 56, 123, 31, 20, -123, -19, -40, -37, + 61, 43, -17, -103, -29, 60, -70, -54, -94, 67, 94, -66, -66, 13, -9, -91, -64, 75, -100, + -127, 68, -97, 0, -16, 91, 16, -122, 112, 0, 121, -113, -127, 58, 77, -109, 57, -125, -85, + -111, -37, 93, -87, 4, -119, 95, 21, -64, 104, -104, 52, 125, 34, -70, -57, -47, -50, 79, + -6, 73, 109, -43, 82, -68, -109, 97, -73, 6, -112, 57, -49, 87, -106, -127, 124, -24, -83, + -108, -102, 15, -84, 82, -59, 31, -17, 118, 72, 25, 22, -17, -88, 59, -82, -38, -47, 45, + -43, 126, -55, 48, 117, -105, 5, 115, 84, 63, 33, 87, 57, -30, 65, -30, 57, -28, -92, + -13, -122, -77, 73, 120, 80, 64, 107, -28, 28, -70, 45, -40, -23, -118, 27, 100, -96, 124, + 122, 44, 55, -21, -5, 68, 87, 72, 124, 77, 34, -63, -18, 87, -59, -60, 127, 10, 23, + 44, -8, -70, 30, -33, -98, -127, 63, 80, 83, -90, -11, -86, -54, -16, -78, -93, 100, 22, + -53, 117, -110, 85, -84, -70, -6, -47, 38, -107, 53, -73, -37, 95, 26, -62, 66, -94, -28, + -3, -123, -51, -124, 41, 40, 74, -119, 64, -2, 17, 120, -63, -19, 4, 104, -100, -127, -40, + 101, 107, 1, 3, 4, 17, -112, 118, 67, 16, -92, -14, 112, 42, 107, -38, 63, 69, 121, + 66, 33, 36, -16, -51, 50, 52, 66, -74, -63, -51, -126, -100, 50, -110, -26, -8, 33, 56, + 59, -23, 14, -25, -77, 13, -5, 63, -10, -99, 9, 60, 109, -76, 54, 10, 19, -77, -127, + -67, 119, 23, 42, -16, -44, 51, 5, 117, 66, 13, -89, -8, 4, -21, -78, 115, -116, -115, + -70, 74, -64, 127, -38, -92, 72, -96, -66, -24, 48, 21, 56, -92, -84, 68, -55, -82, -86, + 65, -109, 103, -23, -56, -31, 77, 2, -40, 80, 5, -64, 70, -13, -95, -32, -118, 34, -77, + -34, 34, 104, -94, 26, -44, 97, 19, 26, -50, -63, -126, -80, 14, -41, -89, -56, 40, 102, + -114, 99, -47, 39, -95, -89, -119, 127, 93, 5, 63, 10, 118, -71, 68, 57, 58, -65, -68, + 59, 113, -106, -3, -90, 31, -95, -44, -28, 81, -6, -114, -58, 54, -29, -120, -43, 127, 24, + -65, 39, 91, -93, -52, 1, -68, -71, 62, 12, 42, -34, -29, -113, -73, 102, 39, 66, 50, + -66, 73, 65, 74, -42, -17, 36, 99, 41, 51, 71, -38, 100, -104, 81, -30, -39, 106, -16, + -108, 3, -106, 103, -29, -46, 65, -94, 63, -92, -15, -125, -92, -35, -127, 81, 99, -60, -75, + -99, 125, 63, 98, -27, -108, 21, 116, -58, -28, 37, 108, -41, -88, 50, 107, 15, 26, 90, + -16, 39, -49, -82, 5, 35, -50, 17, -25, 100, -79, 127, 74, -72, 59, 6, -43, 87, -45, + 34, -65, -17, -67, -59, -95, 104, 64, -125, 86, -34, -2, -48, -22, 78, 51, 17, 80, -7, + 42, 90, 71, 43, -2, -116, -4, -27, 117, 120, 99, -57, -120, -21, 84, 5, -89, 14, 93, + -96, -8, -31, 18, -24, -117, 67, -79, -71, 69, 41, -96, 103, 85, -54, 54, -86, 86, 45, + -93, -36, 116, 115, -62, -86, -15, -77, -72, -70, -56, -19, -108, 61, 66, -66, -49, 91, 48, + -110, 41, 21, 55, -99, 118, 68, -127, 19, -57, -31, 18, -63, 5, 82, -73, -12, 59, 58, + 112, 7, -25, 79, 22, 12, 94, 35, -5, 79, 45, 43, 5, 50, 66, 26, 117, -113, 102, + 23, 127, 114, -3, -95, -110, 10, 8, -10, -37, -111, -92, 69, -81, 23, -48, 17, 36, -116, + -94, 69, 54, -16, 69, -62, 73, 14, 69, -39, -97, -11, -100, 66, 115, -68, 123, -113, 115, + 113, 70, 73, 25, 39, 79, -93, 91, 121, 29, -76, -70, 5, 6, -117, -94, 107, 30, -19, + -35, -113, 1, -12, 110, -84, -15, 116, -11, 121, 106, -76, 56, 20, 65, -22, -76, 36, 91, + 18, 12, -28, 92, 107, -9, 52, -64, 124, -80, -89, 89, 63, -64, -101, -32, 33, -79, -17, + -121, -92, -70, -58, -98, 109, -95, 32, 127, -5, 124, 65, -109, -110, -110, 69, -59, 26, 66, + -60, -81, 18, -126, -71, -18, 71, 69, -63, 26, 66, 34, -69, 127, 30, -36, -27, 118, -103, + -101, -76, 102, -90, 64, -126, -100, 108, -39, 111, -72, -77, 95, 61, 56, -78, 89, -120, -77, + -110, 74, 90, -127, -19, -72, -8, 60, -77, -15, 86, -125, 86, -25, -60, 76, -26, 49, -57, + -101, -55, 80, -6, -15, -67, -127, 66, -12, -108, -17, 126, -123, -11, 67, 75, -41, -95, 120, + -80, -45, 60, 59, 59, -18, -64, 96, -60, -101, 60, -35, -57, 0, -22, 11, -111, 115, -68, + 73, -126, -97, 106, 32, -90, -125, -114, 110, -117, -7, 76, 32, -27, -66, -35, -97, -12, -80, + 71, 46, -33, -111, 111, -8, 73, -53, 50, -42, -70, -83, -49, 112, -5, 93, 119, -18, 26, + -127, -48, -32, 67, 49, -32, 81, 124, -9, -17, 55, -25, 58, -61, -4, 21, 73, 75, -31, + 125, 72, -88, -43, -22, -13, -67, -61, 6, -63, 38, -90, 28, -59, 43, -30, 110, 79, 120, + 39, -69, -29, -69, -60, 118, 123, -120, 64, -30, 37, -38, 93, -90, 76, 33, -6, 29, -22, + -96, -110, -71, -100, -30, 94, 108, -113, 77, 57, -108, -100, -109, -15, -124, 127}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/biases_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/biases_data.h new file mode 100644 index 00000000..a0ecfc2b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/biases_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t *reverse_transpose_conv_4_biases = NULL; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/config_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/config_data.h new file mode 100644 index 00000000..94f231aa --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/config_data.h @@ -0,0 +1,26 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#define REVERSE_TRANSPOSE_CONV_4_OUT_CH 1 +#define REVERSE_TRANSPOSE_CONV_4_IN_CH 1 +#define REVERSE_TRANSPOSE_CONV_4_INPUT_W 2 +#define REVERSE_TRANSPOSE_CONV_4_INPUT_H 2 +#define REVERSE_TRANSPOSE_CONV_4_DST_SIZE 40 +#define REVERSE_TRANSPOSE_CONV_4_INPUT_SIZE 4 +#define REVERSE_TRANSPOSE_CONV_4_OUT_ACTIVATION_MIN -128 +#define REVERSE_TRANSPOSE_CONV_4_OUT_ACTIVATION_MAX 127 +#define REVERSE_TRANSPOSE_CONV_4_INPUT_BATCHES 2 +#define REVERSE_TRANSPOSE_CONV_4_FILTER_X 3 +#define REVERSE_TRANSPOSE_CONV_4_FILTER_Y 3 +#define REVERSE_TRANSPOSE_CONV_4_STRIDE_X 2 +#define REVERSE_TRANSPOSE_CONV_4_STRIDE_Y 1 +#define REVERSE_TRANSPOSE_CONV_4_PAD_X 0 +#define REVERSE_TRANSPOSE_CONV_4_PAD_Y 0 +#define REVERSE_TRANSPOSE_CONV_4_OUTPUT_W 5 +#define REVERSE_TRANSPOSE_CONV_4_OUTPUT_H 4 +#define REVERSE_TRANSPOSE_CONV_4_INPUT_OFFSET 128 +#define REVERSE_TRANSPOSE_CONV_4_OUTPUT_OFFSET 26 +#define REVERSE_TRANSPOSE_CONV_4_DILATION_X 1 +#define REVERSE_TRANSPOSE_CONV_4_DILATION_Y 1 +#define REVERSE_TRANSPOSE_CONV_4_PAD_X_WITH_OFFSET 0 +#define REVERSE_TRANSPOSE_CONV_4_PAD_Y_WITH_OFFSET 0 diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/input_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/input_data.h new file mode 100644 index 00000000..d5111fc4 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/input_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_4_input[8] = {-74, 126, -99, -126, -66, 6, -18, -87}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_mult_data.h new file mode 100644 index 00000000..887d63d6 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_mult_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_4_output_mult[1] = {1337651439}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_ref_data.h new file mode 100644 index 00000000..ba3b220c --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_ref_data.h @@ -0,0 +1,8 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_4_output_ref[40] = {28, 27, 39, 30, 36, 14, 43, -49, 105, -31, 18, 40, 9, 49, + -3, 26, 29, 23, 26, 26, 29, 27, 34, 28, 31, 15, 47, -16, + 68, -3, -2, 65, -18, 50, 2, 24, 36, 13, 30, 21}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_shift_data.h new file mode 100644 index 00000000..50a74f7d --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/output_shift_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int32_t reverse_transpose_conv_4_output_shift[1] = {-8}; diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/test_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/test_data.h new file mode 100644 index 00000000..575a0f2b --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/test_data.h @@ -0,0 +1,9 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#include "biases_data.h" +#include "config_data.h" +#include "input_data.h" +#include "output_mult_data.h" +#include "output_ref_data.h" +#include "output_shift_data.h" +#include "weights_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/weights_data.h b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/weights_data.h new file mode 100644 index 00000000..49b86632 --- /dev/null +++ b/Tests/UnitTest/TestCases/TestData/reverse_transpose_conv_4/weights_data.h @@ -0,0 +1,6 @@ +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. +#pragma once +#include + +const int8_t reverse_transpose_conv_4_weights[9] = {18, 7, 16, -103, 127, -93, -6, 36, -46}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/biases_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/biases_data.h index bee30e0d..e2366758 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/biases_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/biases_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_1_biases[3] = {-1073, -184, 11061}; +const int32_t transpose_conv_1_biases[3] = {19093, 24958, -17213}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/config_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/config_data.h index b5385497..c31b077a 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/config_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/config_data.h @@ -1,12 +1,12 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #define TRANSPOSE_CONV_1_OUT_CH 3 -#define TRANSPOSE_CONV_1_IN_CH 32 +#define TRANSPOSE_CONV_1_IN_CH 9 #define TRANSPOSE_CONV_1_INPUT_W 9 #define TRANSPOSE_CONV_1_INPUT_H 9 #define TRANSPOSE_CONV_1_DST_SIZE 1944 -#define TRANSPOSE_CONV_1_INPUT_SIZE 2592 +#define TRANSPOSE_CONV_1_INPUT_SIZE 729 #define TRANSPOSE_CONV_1_OUT_ACTIVATION_MIN -128 #define TRANSPOSE_CONV_1_OUT_ACTIVATION_MAX 127 #define TRANSPOSE_CONV_1_INPUT_BATCHES 2 @@ -19,7 +19,7 @@ #define TRANSPOSE_CONV_1_OUTPUT_W 18 #define TRANSPOSE_CONV_1_OUTPUT_H 18 #define TRANSPOSE_CONV_1_INPUT_OFFSET 128 -#define TRANSPOSE_CONV_1_OUTPUT_OFFSET -13 +#define TRANSPOSE_CONV_1_OUTPUT_OFFSET -6 #define TRANSPOSE_CONV_1_DILATION_X 1 #define TRANSPOSE_CONV_1_DILATION_Y 1 #define TRANSPOSE_CONV_1_PAD_X_WITH_OFFSET 2 diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/input_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/input_data.h index 48f9613b..deb786e7 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/input_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/input_data.h @@ -1,279 +1,83 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int8_t transpose_conv_1_input[5184] = { - -38, 4, 117, 109, 64, 108, 10, 75, -109, -110, 60, -108, 92, -38, -23, 72, 112, -11, 14, - -46, -103, 44, 89, -41, 71, -36, 114, 17, 97, -28, -59, 115, -69, -46, 119, 7, 31, 28, - -106, 30, 85, -126, -100, -94, -28, 99, -114, 118, 42, -4, -125, 93, -43, 29, -19, 54, -53, - -24, 18, -44, 21, -20, 58, -4, 25, -51, 36, -49, -51, 52, 7, -112, 60, -88, 45, 28, - 62, 34, -35, 62, 15, -33, -42, -112, 99, -41, -84, 1, -66, 55, -127, 54, 48, 34, 33, - 34, -125, 19, -71, 20, 93, 108, 109, -78, -24, -76, -49, 2, -64, -38, -82, -77, 81, -19, - 60, 38, 93, 80, 108, -64, -76, 122, -104, 62, -61, 117, 11, 22, 112, -77, -21, 109, 42, - 25, -82, -111, 88, 94, -65, -122, -73, -93, -112, -125, 126, -109, -14, -59, 49, -123, -96, 113, - 98, 97, -42, -106, 109, 94, 4, -75, 91, 113, 98, -47, 99, 11, -87, -33, -125, -21, -85, - -113, -102, 48, -102, -125, 11, -40, 44, -113, 9, -106, -126, -17, 90, 16, -19, 1, 95, 85, - 101, -97, 43, 87, 43, -44, 7, 83, -105, -70, 54, 5, -50, 63, -31, -17, 71, 26, 55, - -94, -109, -4, -91, -91, -2, -107, 65, -32, 79, -128, -121, -96, 99, 108, -121, 16, -54, 4, - -67, 18, -56, 43, -85, 111, -6, 57, -9, 83, -78, 74, 99, 23, 3, -127, -49, 20, 101, - 6, -72, 90, -75, -58, -106, -105, 103, 98, 71, 38, -14, -56, -28, 33, -107, -4, -69, -33, - -107, 53, -104, -25, 112, 47, 0, -16, 47, -11, 77, 39, 30, 57, 38, 24, -37, 56, -28, - 126, 126, -32, 20, 36, 13, 22, -46, -84, 79, -25, -23, -42, -106, 17, 20, -18, -57, -23, - 6, 50, -63, 44, -94, 78, 122, -19, 85, 89, 31, 33, -58, 99, 52, -29, -68, -60, 114, - 91, 21, 17, 70, -105, 90, -72, 100, -23, 53, 33, 22, 75, -60, 23, -50, -108, 123, -51, - -64, 117, 33, 19, 11, 17, 46, -19, -18, -90, -93, -40, 112, 87, -3, 11, -41, 61, 85, - -15, 89, 45, 30, -109, 78, -11, -127, 22, -88, 0, -57, -10, -16, 12, -71, 98, -91, -88, - 47, 93, 12, -86, 54, 106, 47, 14, 118, -101, -122, 0, -104, -78, 15, -56, -44, 96, -69, - 25, -112, -69, -18, 102, -62, 92, 44, 89, 66, 103, 57, 33, -49, 54, -13, -32, 69, -23, - 17, -69, -35, 79, 75, -86, -35, -102, 11, 18, -93, 13, -112, -40, 114, -7, 44, 96, 66, - -104, -121, 4, 3, -75, 26, 88, -123, -86, 57, 97, 121, 123, 52, -115, -89, 60, 111, 29, - 54, -113, -78, -68, 121, 111, 44, 116, 15, 19, 45, 89, 20, -14, -30, 57, -94, -128, -86, - 32, -3, 108, -52, 0, -78, 111, 103, -12, 23, 79, 60, 114, -111, -11, -43, 18, -85, -56, - -120, 91, 10, 34, -18, 32, -24, 90, -60, 115, -27, 104, -106, -124, -62, 119, -32, 87, 118, - 73, -31, 55, -74, 87, 112, 43, -83, -4, -77, -49, 46, 112, -94, -45, -20, -16, -28, -82, - 24, 87, 108, 6, -82, -38, 98, -95, 12, 40, 43, -79, 108, 79, 24, -119, -17, -38, -72, - 43, -50, 12, 56, -48, -61, 50, 72, 54, -28, 72, 124, 22, -97, 112, -126, -5, -96, 61, - 57, -107, 56, -65, 97, -117, -10, -49, -85, -106, 100, 104, -23, -84, 115, 50, -106, -7, 6, - -110, -88, -7, -45, 63, 19, 37, 33, 84, 110, -128, -91, 81, -20, 64, 46, -103, 85, 14, - 13, -114, 46, -102, 24, -15, 37, -32, -61, -102, 13, 48, -65, -46, 25, -126, -79, 96, 7, - 88, -47, 35, 31, -127, 122, 123, -57, 23, -49, 36, 3, 20, -81, -89, 0, -89, 20, 23, - -85, -75, 73, -35, 109, -107, -90, 63, -126, 71, -93, 101, 70, 108, -48, -91, -113, -63, -118, - -86, 32, 122, 31, 96, -2, 24, 111, -116, 20, -109, 125, -48, -50, 90, 50, 40, -118, 57, - 33, 58, -118, 16, -3, -7, -124, 101, 35, -103, -11, -117, -33, -35, 98, -25, -17, 109, 19, - 101, -64, 76, -1, -53, -17, -7, -71, -128, 33, 76, 65, 38, -91, 42, 6, -101, -23, -66, - 86, -25, -20, -39, -49, 91, 17, 90, 86, -118, -52, -74, -41, 15, -3, 125, 72, -26, -5, - -84, -60, -113, 39, 63, 104, 44, -34, 51, -118, 25, 81, -14, -25, -82, -121, -34, 56, 12, - -12, 79, -77, 120, -127, 0, 26, 42, -68, 77, -101, -126, -27, -90, 102, 44, -47, 88, 112, - -66, -30, -84, -96, -87, 44, 35, 3, -2, -75, -28, 0, 10, -55, -110, 24, -35, 37, 52, - -128, 38, -21, 102, 5, 39, -109, -75, -6, -66, -51, -26, -59, -66, -122, 3, -42, -9, 101, - 42, -73, -36, -73, 18, 107, -86, -51, 6, -39, 55, -74, 91, -120, -106, 86, -1, 83, -10, - 5, 79, 101, 35, -23, 52, -23, -96, -115, 101, -52, 114, -121, -81, 62, -124, -84, -15, -111, - 20, 34, -64, 53, 104, -91, 60, 46, 95, -39, 39, -126, 28, -38, -112, -125, 34, -58, 68, - 110, -105, 28, 35, -37, -52, 109, -4, 113, 121, -87, -20, 115, -45, -124, 27, 8, -105, 45, - -61, 107, 75, -45, 35, 123, 88, 81, -112, -35, -54, 1, 76, 81, -128, 90, -33, 19, 66, - -97, -86, -17, -75, 79, 28, -13, -48, -80, -58, 80, 120, -56, 34, -45, 76, -102, -115, 99, - -78, -71, -68, 104, 75, 9, 41, -79, -97, 106, -55, -104, -14, 72, -127, -57, -82, 8, -75, - -17, 95, 109, 98, 77, 115, 40, -70, 89, 1, 93, 102, 51, -29, 22, -59, -19, 108, 48, - -85, 103, -12, 118, 23, 110, 15, 74, 3, 31, -61, 44, 78, 45, -81, 67, 50, -111, -44, - -81, -12, 33, -121, -29, 102, 77, -31, 71, -74, 93, -31, 27, -64, -10, 66, -89, -58, 69, - -6, 2, 41, 102, -125, -76, 6, 124, -32, 79, -36, 88, 102, 64, -108, -21, -49, -88, -7, - -91, 89, -43, -69, -96, 114, 38, -115, -27, 1, -46, 103, -124, -126, 71, 102, -69, 54, -31, - 63, -127, -15, 101, 58, -33, -43, -97, -65, -42, 67, -39, -22, -115, 63, 83, 7, 29, 122, - -36, -85, -24, 75, 76, -51, 60, 76, -85, -106, -105, -88, 117, 9, -40, -105, -37, -107, 89, - 16, -12, 86, -17, -100, 32, -122, 76, 47, 43, -120, -120, -77, -13, 53, 76, 72, -107, 65, - -34, -106, 45, 82, 83, -26, -4, -6, 97, 3, -68, 95, -62, 40, -82, -85, -59, -116, -9, - 122, 77, -8, 125, -112, -23, 4, 27, -25, 0, -81, 67, -27, -31, -103, -116, -21, 26, -29, - 56, -120, -87, -57, -67, 74, 107, -34, 69, 95, -106, -120, 63, 84, 98, -65, -68, 9, 58, - -1, -46, -118, 76, 24, 79, -2, -50, -25, 79, 113, 111, 61, -90, -97, 22, 107, 45, -50, - 118, 37, -31, 19, -25, -32, -108, 104, 116, -36, -70, 120, -111, -18, -116, 60, 8, 87, 61, - -34, -113, 67, 119, 24, 2, -117, -4, -51, -85, -33, -50, 39, 14, -24, -74, -4, -59, -47, - -115, 98, 96, 105, -89, 116, -120, -15, -91, 12, -11, -58, 10, -110, -32, 70, 48, 125, 125, - -93, -12, -46, 11, 120, 122, 72, -65, 79, 111, 67, -120, 97, 7, -13, 85, -111, 101, 44, - -99, 119, -118, 11, -16, 26, -126, -30, -94, 46, -77, -78, -35, 19, 88, 52, 2, 68, -70, - 58, 80, -14, -39, -2, 29, -52, -67, 24, -89, 46, -92, 22, -41, -24, 81, 117, 62, -118, - -18, 62, -40, 33, -29, 65, -70, 73, -41, -69, 107, -78, -13, -111, -118, 13, 77, -20, 15, - 111, -27, -50, 96, 116, 2, 124, -120, 39, -109, 54, -105, 93, 36, -25, 32, -25, -101, -120, - -102, 26, 78, -52, 54, 85, 36, 83, 108, -43, -55, 26, 126, -118, 98, -2, -60, -108, -35, - -105, 87, 46, 85, -55, -2, 21, -21, -18, 18, 20, 64, 26, -103, -110, 16, 28, -48, -44, - -108, 61, -19, 92, -7, -86, -123, -34, 20, -124, -51, -36, -59, 55, -16, -100, -74, -111, 34, - 63, 109, 62, 93, -102, 101, 35, 55, -5, -5, -73, -91, -77, 102, -17, 67, -116, 32, 32, - -49, 43, -25, 18, -94, -85, 104, 2, 126, -115, 5, -19, 3, -25, 86, 7, 95, 94, -17, - -29, -34, -70, 76, -90, -67, -68, 35, 38, -54, -30, -74, 116, -30, 26, 68, -28, -10, -86, - -104, -13, 74, -95, -81, -35, -126, -28, -96, 90, -46, 68, -72, 44, 67, 20, 2, -62, 38, - 86, 122, 96, -69, -59, 2, -109, -59, -88, 42, -32, -68, -36, -92, 38, 0, 16, -99, -78, - -76, 77, -89, -27, 119, 98, 16, -7, 8, 65, -125, 126, 103, 52, 116, -77, -33, -102, -111, - -43, 93, 47, -7, 35, -58, -25, -93, 114, 51, -32, -93, -80, -116, 60, 123, -78, 15, -16, - 90, -59, -126, 101, 119, 59, 107, -104, -123, 101, -51, -49, -116, 21, 60, 69, -75, -21, -95, - -116, 14, 43, -29, 62, -33, -20, 106, -19, -110, 109, 23, 14, 36, -97, -51, 87, 56, 5, - 23, 31, 33, -73, -8, -42, -82, 102, 92, 123, 105, 93, 106, -50, 115, -9, 107, 104, -49, - -82, -54, 63, -27, -103, 62, -48, -45, -103, -113, 116, -59, 52, -17, 52, 29, -1, 34, 102, - -100, -107, 15, -103, 25, -25, -121, 76, -70, -20, -57, 10, 88, 29, -53, 32, -22, 111, -63, - 115, -60, -53, 50, -125, 87, 11, -94, -90, -37, 96, -44, 101, -78, -119, 27, -1, 18, 61, - 118, 95, 19, -110, 57, -17, -127, 23, 21, -5, -17, -52, 20, -97, -123, 34, 49, -91, -53, - 9, 9, 126, 100, -41, -98, -61, 125, 54, -90, 27, 86, -39, -70, -75, -50, -59, 115, 2, - 109, 51, -105, 12, 86, -7, -26, -72, 1, 103, 97, -53, -50, -120, 125, -37, 89, 12, 97, - -48, 121, 91, 94, 59, -66, 0, -63, -8, 5, -125, -6, -20, -54, 23, -99, -31, -27, 126, - 10, -73, -51, -75, -27, 14, -115, -93, 73, -99, -56, 115, -100, -88, -17, -92, 83, -1, -96, - 25, 114, -104, -107, 78, 111, 94, 54, 66, 111, -42, -63, -32, -62, 115, -57, -99, 42, 85, - 16, -109, -117, -79, 10, 107, 38, -106, 17, 119, -61, -49, -61, -14, -91, 80, -117, -119, 60, - -98, -49, 64, 59, -1, -3, 72, -90, 32, 42, -46, 123, 43, 81, -24, 98, 8, 55, -50, - -45, 65, 120, -27, -13, 55, -33, 32, 15, -34, -126, -40, -22, -53, 59, -105, 111, -17, -110, - -30, 24, -89, -62, 7, 34, -1, -45, 122, 93, -90, -85, -14, 48, 54, -69, -29, 54, -104, - 35, 106, -17, 52, 88, 40, -44, 69, 4, 21, -112, -74, -99, 21, -75, 108, -125, -84, 72, - 6, -108, -119, -75, 122, -3, -124, 86, 38, 61, 95, -120, -123, -49, -73, -50, -27, -32, 13, - -121, -86, 69, 11, -63, -23, -42, 112, -117, -91, 95, 122, 86, 92, -42, -32, -42, -126, -5, - -71, -45, -40, 126, 13, 58, 6, -106, 1, 75, -12, -97, -69, -102, -4, -16, -78, -51, 75, - 27, -104, -7, 91, -46, -128, -12, 21, -52, 92, -84, 122, -32, -47, -52, 59, 111, -59, -19, - -110, 53, 66, 33, 39, -119, -57, -86, -42, 36, -115, 17, -102, -5, 58, -25, 37, 15, 96, - -25, 68, -63, 117, 55, 17, -12, -4, 12, -49, 89, 124, -8, 65, -32, -79, 72, 2, 30, - 91, -2, 51, -14, -26, 20, -125, -11, 0, -88, 112, 95, 115, 107, 35, -63, -71, -7, 95, - 59, 110, -27, -76, -17, 109, -64, 123, 77, 123, 100, -49, 58, -12, -48, -21, -26, 58, 88, - 91, -52, -118, 116, 40, 87, 9, 60, 97, 49, 93, -123, -39, 22, -121, -63, -90, 116, -42, - 35, -49, 102, 50, -51, 16, 10, -109, -11, -64, 17, -54, 119, 103, -11, -76, 5, 11, -46, - -74, 101, 62, -86, 83, 20, -98, 1, 45, 19, 64, 106, 8, -118, 2, -107, -90, -66, -33, - 42, -30, 55, 3, 18, -104, -109, 98, -77, 83, -95, 9, 96, 41, -56, 100, 3, -19, 93, - 26, -43, 25, 17, -78, -65, -111, -24, -4, 54, -10, -85, 12, -105, 122, -84, 50, 105, 2, - 96, -8, -23, -73, -74, -94, 44, -117, -126, 67, 124, 111, 43, -61, -75, -45, 11, -106, 40, - 98, 39, -51, 20, 120, 117, -102, 16, 98, -18, -103, 55, -44, -32, 56, 116, 45, 95, 123, - 36, 0, 14, 74, -115, -2, -19, 22, -99, 125, 73, -73, 13, -124, 94, -23, -62, 125, 28, - 83, 44, -122, 67, -68, 13, -43, -61, 92, 119, 28, 47, 27, 80, 94, 101, 126, -20, 22, - 111, 60, -27, 15, -85, -9, -32, 81, 92, -106, -17, 116, 74, -26, 63, 92, 13, -123, -41, - -67, 102, 69, -42, 49, 115, 34, -78, -49, -114, -70, -19, 99, 12, 42, 48, -107, 103, 22, - -61, 121, -17, 72, 111, 120, 83, -19, 43, 15, 38, 58, -64, 61, 53, 42, 55, -105, -100, - -66, -45, 103, 11, 23, 90, -128, 52, -124, 98, -79, 51, 88, -127, 125, 41, 45, 48, 81, - -26, 30, -21, -49, -90, 32, -2, -51, 117, -54, -120, -48, -101, 15, 13, 16, 119, 55, 85, - 25, 44, 75, 88, 78, -116, 47, 77, -108, -52, 1, 93, -8, 52, 8, -46, 79, 70, 34, - 92, -127, -84, 50, 42, -37, 52, -103, 57, 12, 31, 103, -95, -38, 10, 100, -36, -73, -41, - -126, -60, 101, -107, -118, 28, 54, 101, -23, 83, -60, -5, -85, 54, -8, 11, -114, -128, -50, - 89, -59, -73, -65, -46, 87, 74, 50, 46, -52, -88, -46, -45, -85, 72, 77, 13, 22, 19, - -46, 112, -78, 86, -111, 112, -68, -89, -19, 62, 94, -66, 28, -76, -125, 32, 53, 14, 106, - -32, 73, -94, -14, -3, 18, -111, 68, 106, 36, 20, 16, -94, 22, 8, 120, 75, 15, -19, - 90, 122, -121, -50, 72, -54, 101, 94, -78, -120, -38, 69, -105, 23, -60, -63, -84, 48, 106, - 81, 114, -78, -23, 36, -99, 116, -54, -114, -58, 114, 2, -35, -86, 100, 117, -36, 78, 102, - 11, 42, 55, -54, -43, 5, -119, 111, -30, 42, 1, -105, -5, -73, 94, -53, 62, 85, 28, - -6, 48, -57, -89, -87, -110, 82, 49, -114, 69, 77, 63, 1, -58, -82, -105, -13, -128, -59, - -123, -49, -11, -63, -108, -29, -5, 21, -123, -31, -80, -116, -17, 80, 96, -80, 61, -36, 99, - -9, 48, 6, -120, 99, -65, -73, 68, 110, -56, 87, -47, -21, -31, -6, 75, 20, 67, 72, - -90, 95, 98, 70, 63, 2, -121, -55, -58, 21, 15, 38, -118, 64, -97, 32, 116, 71, 59, - -67, 124, -107, 45, -120, -32, 35, -26, 64, 112, 59, -58, 86, 16, -24, -13, 74, -12, -59, - 26, -82, -80, -3, -17, -33, 14, -77, -22, -81, 124, 117, 80, -7, -87, -52, -123, 33, -125, - 82, -116, 126, 82, -74, 3, -80, 7, 76, 91, 56, -103, 116, -94, -41, 100, -39, 63, 73, - -49, 3, -67, -16, 27, 101, 102, 34, -81, 88, -94, -6, -15, 77, -42, -93, 48, -93, 47, - 13, 46, -108, -42, 18, 20, -54, -66, 52, 94, 122, 81, -81, 49, 73, 44, -82, 75, 71, - -88, 47, 2, -37, -40, 75, 112, 65, -59, -8, -118, 42, 119, -58, 65, 74, 33, -84, 11, - -104, 84, 35, -8, 75, 38, 57, -92, 62, 68, -64, 79, 14, -67, -109, -45, 24, 78, -71, - -97, 61, 22, 31, -8, -22, -24, -126, -38, -112, 20, 9, 54, -57, -108, 93, -120, 78, -117, - -65, -48, 81, -2, 45, 99, -91, -61, 13, 78, 36, -20, -65, 56, 53, -50, -127, -112, 103, - -118, 96, -60, 116, 125, 14, -49, 30, -39, 75, 36, -99, -78, 68, -127, -72, 110, 17, -78, - -12, 84, -72, -29, 24, -80, -123, -32, 48, -35, -41, 44, -58, 92, -57, -9, 6, -118, 88, - -60, -91, 74, -120, -70, 32, -48, 77, 93, 91, -74, 27, -22, -20, 42, 58, -27, 72, 67, - -46, 62, -17, -85, 68, -55, -126, 52, 26, 23, -61, -13, 52, -99, 48, -118, -46, 50, 21, - -125, 39, 123, -86, 48, -61, 3, 103, -27, 98, 34, -38, -56, -22, 88, 87, 107, 120, 112, - -17, -46, 6, 112, -59, 69, -79, 68, -77, -100, -5, 115, 70, -117, -82, 49, -33, -68, 106, - 91, 125, -118, -121, -82, 99, -127, 11, 30, -26, -68, 0, -109, -58, -18, -36, 58, 89, 78, - 67, -3, -12, 8, -82, 79, 65, -105, -8, -22, 75, 86, -4, 37, -26, 93, 76, -51, 81, - 0, -5, -30, 105, 61, 72, 27, -126, -40, -13, 111, 35, -56, -46, -69, -28, 0, -40, -113, - 4, 56, 10, -87, 96, -113, 25, -35, -38, 88, 3, 50, -33, -47, 62, 118, 117, 78, 78, - -31, -68, -119, -87, 47, 30, -63, 97, -114, -8, -69, -5, 83, -49, -7, -122, -24, 63, 125, - -62, 36, -87, 7, 69, -103, -61, -88, -28, 48, -92, -28, -54, -127, 118, 84, 84, -124, -126, - -79, -26, -44, 111, 71, -97, -67, -40, 113, 53, -32, 122, -24, -47, 85, 106, 7, -25, -69, - -34, 72, 70, 59, 77, 67, 60, 57, 107, -92, 49, 57, 40, 2, 12, 6, 119, 113, 60, - 84, 63, 49, 53, 10, -15, -16, -22, -119, 32, 16, -5, -5, -44, -16, 91, 34, -93, -34, - -36, -45, -107, -121, -87, -51, 28, -66, 1, 82, 75, 22, 11, 64, 117, 76, 85, -119, 86, - -119, -67, -48, -90, -28, -122, 105, -74, 45, 119, -114, -46, 102, 30, -37, -5, -65, 48, -110, - -89, 48, -102, 93, 123, 126, 25, 64, 36, -52, 21, 61, 13, 28, 58, -37, -121, -114, 13, - -87, 54, -107, 65, 120, 120, 54, -93, 22, 123, 5, -95, -110, 97, -15, 68, 5, -32, -53, - -12, 12, 123, 57, 8, 41, 122, -39, 99, -41, 115, -78, 39, 61, 81, 54, 19, 105, -30, - 51, 4, 78, 23, -53, -13, 21, -42, -7, 10, -90, 55, 50, -1, -97, 61, 36, -6, 5, - 17, 18, 55, 51, -28, 47, -71, -112, 65, -8, -30, -108, 101, -54, 41, 80, 32, -108, 43, - 92, 4, 85, 58, 63, -125, -44, -47, 11, 4, 14, 3, 81, 43, 119, -107, -63, -49, 26, - 121, 39, -59, 16, -57, 17, 65, -26, 81, -9, -114, 76, 0, -35, 120, 99, -95, 54, -64, - -110, -107, 107, -6, -124, -77, -78, 115, -35, -52, 52, 38, 27, -42, -102, -98, 100, 113, 61, - 77, 53, 113, 4, 24, -2, -77, 73, 120, -86, 111, -47, 60, 78, 90, -123, -9, 121, 94, - -3, -71, -18, -40, -25, -85, 86, -123, 125, 113, 26, 16, 33, -75, -123, -70, 65, 78, -47, - 99, -9, 91, -40, 86, -27, 53, -96, 108, -34, 84, 61, 116, 62, -1, -59, -93, 97, 75, - 81, -70, -110, 9, 53, 71, -98, 18, -5, -91, 42, 96, -125, -85, 69, 55, 87, 90, -25, - 10, -94, 73, -94, -109, 59, -114, -26, 96, 17, -74, -81, 92, 113, -24, -34, 24, -51, 65, - -103, 111, -36, -117, 4, 121, -127, -83, 119, -1, -58, 122, -8, -23, -109, -117, -120, -72, 10, - -72, -31, -126, -81, -94, -32, 31, 83, -81, 98, 64, 60, -114, 82, 11, -87, -44, -28, -94, - 34, 76, 77, -104, -103, -78, -7, 26, 96, 66, -22, 24, 34, -58, 114, 83, 75, 20, 126, - 63, 42, -17, -106, -41, -26, -67, -43, -91, 112, -62, 28, -43, -30, -53, -52, -43, -91, -29, - -85, 116, 95, 100, 1, 40, 59, 11, 53, 75, 105, 6, -43, 23, 24, 45, -75, -127, -4, - -109, 50, 89, 97, -29, 65, 118, 111, -111, 22, -122, 12, 108, 22, -127, -13, -5, -47, -43, - -3, 88, 104, 122, 23, -63, 71, -35, -17, -68, 114, -30, 84, 113, -72, 7, -58, 36, -71, - 93, 65, 71, 9, -60, 71, -56, -22, -79, -52, -10, 100, -78, -102, 96, 5, 10, -87, -46, - 115, -99, 1, 74, 66, -17, 93, -66, -73, 88, -119, 111, 62, -56, 19, -13, -64, 110, 69, - 109, 109, 118, -18, -15, 71, -26, 28, -105, -68, 69, 26, 84, 93, 29, 125, -47, -127, -86, - 58, -103, -99, -91, 2, 87, 16, -57, -50, 27, 101, -128, -29, 18, 42, 11, 46, -24, 61, - -17, -96, -83, -29, -99, 47, -102, -86, -113, 126, 12, -46, -10, 29, -62, -119, 121, 67, 15, - -66, -82, 60, 80, -90, 16, 81, -25, 76, -118, 22, 120, -14, -116, -24, -35, -31, -119, -114, - -89, 3, -1, 72, 121, -123, -111, -61, -127, -112, -57, -117, -66, 56, 116, 15, 79, 73, -32, - -101, 76, -115, 32, -83, 78, 27, 117, 109, 62, 44, 114, -33, -71, 75, 122, 82, -16, -46, - -46, 51, -46, 95, 107, -91, 74, 18, 38, 17, 115, -87, 51, -58, -40, -125, -128, -4, 4, - 88, -33, -112, -93, 120, 32, 16, -58, -22, -92, -63, 51, 10, -7, 43, -75, 31, 84, 30, - 39, 89, -12, -93, -68, -44, -22, -82, -21, -12, -124, 111, -115, 31, 91, 8, -1, -128, 76, - 19, -52, -3, 75, 38, 99, -94, -93, -49, 41, -18, 5, -124, 51, 92, 50, 20, -67, 33, - 114, -69, 38, 100, 113, -101, -45, 31, 1, -117, -1, 76, 55, -45, -73, -26, -90, -4, 23, - 100, 34, 85, -83, -28, -84, -11, 79, 120, -84, 21, 40, 26, 12, 80, -88, 110, -93, -76, - -125, -22, -115, -67, -51, -22, 71, -30, 82, 89, -86, -98, -78, -27, -33, -72, -26, -117, -103, - -22, -82, -55, -93, 35, 11, 4, 72, 125, -82, 47, 121, -9, -10, 87, 51, 108, 78, -21, - 116, -40, -42, 55, 10, 30, 10, -20, 0, -93, -120, 123, -75, 64, 12, 86, -78, 21, 117, - 16, 14, 15, 112, -104, 117, -9, -122, 5, 36, 22, -108, 72, 96, 98, -60, 68, -113, -16, - -40, 3, -123, 48, -105, -14, -76, -70, 5, -117, 2, -86, -118, -22, -72, 84, -90, 79, -20, - 8, 96, 56, -42, -58, -108, -107, 115, -92, -56, 123, 121, -69, -8, -87, -45, 55, 51, 41, - 75, 68, 4, 55, 81, 56, -37, 6, 98, -100, -37, 55, -85, -115, -122, 104, -125, -34, -122, - 56, -55, 62, -29, 108, 33, -67, 11, -74, 46, -7, 46, -107, -98, -97, 18, 67, 90, 77, - 2, -46, -128, -84, 74, -50, -48, 116, 29, 115, 71, 79, -2, -94, 4, 83, 61, -12, -50, - -118, -21, -101, -16, 106, -85, 113, 99, 65, 68, -18, -63, -28, -3, 24, -91, 94, 34, 9, - 31, -79, -32, 30, 25, -74, 108, -92, -5, 14, 116, -76, -44, 80, 9, -46, 85, 20, 58, - 104, 95, -49, -110, -85, -57, 24, -88, -85, -12, 123, 23, 6, 49, 89, -58, -122, 102, -77, - 39, -41, -66, 93, 125, 28, 14, 44, -58, -61, -68, 32, 76, -26, -101, -106, 68, 97, -71, - 4, 36, 23, -99, 83, 66, 69, 23, -77, -40, 118, -91, 45, -10, 4, 112, -41, -102, -21, - -92, 122, 66, -7, -113, -111, 77, 49, -10, -77, -115, -83, 75, -29, 84, -8, -6, -5, -39, - -79, 27, -30, -127, 123, -63, -50, 113, 36, 114, -109, -73, 57, 74, -57, 79, -70, -64, -83, - -85, -70, 24, 5, 108, -56, -66, 68, -21, 44, -65, -39, 63, 98, 35, -44, 72, -121, 62, - -33, -98, 23, -77, -76, -112, -4, -67, -125, 101, -103, 57, 1, -99, 69, 85, 109, 12, -55, - 55, -83, 31, 97, -87, 24, 112, 59, -118, 24, -83, 33, 109, 17, -114, 60, 62, -45, 89, - -28, -57, -2, 80, 49, 98, -59, 125, 80, -58, 10, -43, -79, 16, 122, -99, 14, 30, -88, - -113, -37, -29, -120, 23, -104, -4, 111, -44, 84, -7, -88, 73, 53, 89, -117, -22, 65, -38, - 119, -107, 53, 1, 19, -114, -29, 88, 102, -7, -109, 5, -1, 62, 1, 97, -56, 41, 72, - 4, 106, 68, -123, -77, 95, -24, 21, -87, -126, 54, -120, -89, 1, -42, -107, 77, -123, 126, - -28, -65, -42, -17, 108, -108, -77, -75, 60, 80, 18, -40, 28, 59, 31, -108, -114, 25, -104, - 88, 99, -8, 45, -31, -58, -37, 22, 113, 101, 103, 122, 92, 30, -109, -4, -110, -8, -35, - -31, -65, 118, 54, -30, 47, -3, 91, -23, 97, -83, -93, 88, 62, 65, -73, -34, 33, -108, - -9, -75, 35, -29, -21, -55, 102, 64, -40, -124, -14, -57, -101, -116, 104, 16, -45, -3, -10, - -1, 9, 55, 42, 100, 28, 29, 29, -6, -51, 107, -123, -52, 70, 48, 120, -52, -101, 117, - -12, -16, 84, -43, -114, -13, 100, -59, -121, 87, -34, 112, -90, -26, 99, 123, -108, -19, -30, - 13, -20, -21, 37, 91, 74, -85, 116, -45, 64, 113, -3, -21, 98, -81, 54, -12, -111, 33, - 112, 91, 106, -53, -65, 53, 52, 64, -80, -17, 42, -85, -21, -87, -115, -9, 117, -50, -123, - -47, 92, -82, -49, -81, -10, 47, 23, 111, 51, 43, 81, -28, -20, -13, -63, -36, -11, 80, - -32, 121, -16, -12, 78, 104, -115, 116, 23, -3, 82, -9, -72, 7, 114, -107, -122, -67, 122, - -31, -53, -28, 51, -37, -114, -66, -65, -95, 126, -80, -20, 123, -32, 97, -127, 25, -118, -3, - -18, -63, -39, -127, 43, 5, -93, -117, 37, -86, 115, 105, 103, 69, -13, -88, -52, -33, -45, - 92, 2, 112, -99, 44, 27, 110, -88, -71, 94, 15, 46, -112, 28, -124, 42, -108, -116, 108, - 108, -50, -101, 38, -67, 57, 11, -31, -66, 23, 83, 11, 89, 5, -40, 49, 120, -80, -49, - 35, 19, -49, -122, 83, -117, 9, 119, -74, 109, 92, 111, 98, 17, 53, 31, 24, 22, -30, - -32, -23, -60, -118, 32, -53, 114, 100, 78, -80, -63, 88, 48, -63, -43, 46, -80, 13, 61, - -1, -86, 40, -105, -90, -41, 37, 71, -106, -10, -43, 126, -40, -128, -121, -103, -12, 17, 95, - 23, -56, 90, 7, -8, 81, 87, -126, -53, -83, 18, 106, 81, -29, 6, -9, -90, -84, 100, - -106, -42, 71, 41, -56, -99, -94, -124, -17, 6, 87, 36, -64, -105, 114, 19, 23, 83, -78, - -55, 50, -97, 13, 83, -113, 56, -108, -53, -128, -96, -50, -20, 0, 108, 27, -39, -35, 107, - 67, 26, 9, -84, -35, -99, 39, 35, 114, -81, 79, -121, 17, -25, -90, 17, 2, 4, -77, - -73, -124, 85, -104, 121, 89, 102, -111, -40, 77, -6, -14, 124, 18, -30, -40, 88, 29, 79, - -5, -118, -84, 118, -8, -77, 93, -122, 23, 84, -8, 41, -32, -22, -127, 79, 32, 85, -31, - -62, -25, -58, 112, -99, -107, 100, -63, -5, -7, 2, -34, 17, -95, 86, 89, -21, 121, 29, - -29, -125, 59, -24, -121, 92, -7, 73, 99, -85, -71, 68, 76, -16, 122, 88, -27, -92, -48, - -8, 60, 66, 24, 6, 13, -111, 66, -117, -110, -90, -41, 8, -9, 20, -48, -61, 71, -46, - -123, -45, -116, 46, -12, -123, 107, -94, 47, -128, 8, -63, 112, 56, -79, -59, -47, -46, -12, - -61, -109, -70, 114, 23, -39, -27, -109, -96, 61, 109, -7, 114, -48, -18, -113, 95, 24, 42, - -103, 63, 126, 98, -65, -125, -101, -47, 85, 107, -30, 36, -37, 21, 78, 111, 17, -40, 8, - 35, 81, -9, -51, 40, 80, 89, 15, -115, 16, 0, 97, -40, 80, 87, 67, -33, 23, 115, - -19, 38, 51, 10, 125, -51, -85, -61, 94, -54, -70, 82, -114, 62, 65, -29, -45, 102, 108, - -27, 39, 34, -104, -118, -4, 45, 73, 30, 52, -53, -43, -9, 73, 54, 73, 57, 112, 52, - 65, 10, -38, -11, 116, -1, 74, 84, 126, 26, -127, 94, 105, -59, -56, 27, -101, 31, -123, - 72, -39, -115, 60, -13, -11, 12, -104, 90, -84, -121, -58, -108, -31, -94, -71, 37, 80, -52, - -48, 2, -68, -28, -36, 78, 92, -38, -34, 45, -120, 24, -120, -69, 95, 16, 113, 96, 79, - -22, -116, 0, 78, 37, 48, -89, 24, -28, 27, -38, 72, 88, -70, -24, -120, 16, -42, 126, - 76, -75, 38, 124, 47, 108, 80, -48, -114, -8, 16, 43, 67, -87, -86, -116, -80, -35, 29, - 19, -102, 101, 21, -31, 98, -44, 6, -121, -128, -47, 9, 74, 98, 94, 73, -85, -95, 120, - -36, -86, 71, 87, -22, -114, 122, 47, -66, 3, -33, -86, 113, -18, 40, -27, -28, 125, -103, - -45, 31, 114, -76, -4, 17, 9, -40, 57, -108, -84, 11, 3, -119, -79, 65, 58, 70, -32, - 123, 6, 29, -74, 68, 62, -91, 95, 6, 75, 73, 42, -102, -98, -67, 20, -30, 71, 8, - 55, -42, 75, -119, 35, -45, 126, 112, 54, -45, -66, -53, 65, -8, -87, 123, -76, 45, 0, - -36, -74, 125, -118, -69, -109, -51, 58, -16, -83, 13, -62, 89, 121, -50, -109, -43, 5, 52, - -79, 120, 58, -36, 9, 17, 37, 83, 43, 83, -6, -102, 25, 42, -121, 0, -26, 54, -103, - -64, -6, -36, 80, -97, -7, 94, -120, 117, 37, 42, -5, 20, -8, 71, -57, 1, 114, -90, - 43, -78, 36, 4, -6, 21, 126, 23, 66, 23, 117, 88, 96, 105, -116, 83, -101, -12, 39, - 59, 0, 53, 61, 40, -20, -73, 53, 14, -10, 108, 52, -89, -79, 120, 106, 58, -48, -71, - -19, 18, 104, -96, 72, -87, 110, -60, 93, 17, -16, 35, 35, 32, -53, 12, -112, 95, 105, - -42, -3, -120, -94, -24, -69, 117, 61, -5, -119, -126, -8, 58, 114, 120, 41, 5, -96, -20, - 82, -25, 104, 3, 126, -4, 12, 97, 80, 109, -82, -11, 43, -107, -22, -90, 63, 102, -86, - 107, -15, 14, -72, -114, 72, -96, 43, 90, 85, -75, 43, 62, 7, -67, -4, -52, -29, -44, - 31, 2, 56, -36, 5, 51, 53, 50, -4, -69, -10, 73, 23, 74, 15, -57, -96, -86, -56, - 106, 15, -119, -69, -28, -107, -82, 119, -62, 17, -120, 49, 54, 117, 32, -21, 39, 99, -83, - -120, 80, -87, -93, -6, -33, -75, 93, -46, 105, -30, -104, -101, 70, -125, -86, 92, -125, -21, - 40, 19, -43, -31, -109, -18, -124, -95, -58, -90, -13, -8, 55, -72, -7, -37, 88, -52, -55, - 40, -86, -11, 72, -58, 53, -121, -73, -82, -101, -87, -78, -25, 28, 47, 75, -5, -74, 20, - 64, 109, 29, 114, -6, 17, 100, 83, 53, 20, 11, 40, 124, -6, -114, 14, -66, -100, -65, - 39, -14, -115, 55, -80, 53, 15, 56, 119, 1, 14, -72, -68, -100, -125, 113}; +const int8_t transpose_conv_1_input[1458] = { + 88, 37, -126, 74, -106, -18, 44, -49, -41, 126, -14, 126, -18, -74, 45, 96, 37, 86, 26, + -24, -45, 82, 64, 63, -89, 111, -8, -30, -96, -66, -32, 65, 42, 42, 61, 27, 19, -99, + 42, 70, -96, 79, -113, 50, 21, -26, -110, 93, 52, 105, 107, 91, -27, 43, -34, 52, -40, + -49, -24, -6, -17, -110, -111, 45, -75, -52, 24, 78, 65, -65, 107, 54, 88, 126, 39, 89, + -54, 38, 90, -31, -108, -53, -39, 104, 92, -9, 31, 124, -100, -112, 69, 13, -88, 26, -80, + 62, -57, 82, 97, 93, -101, 3, 52, 14, 30, 7, -107, 108, 87, 112, 70, -66, -18, 114, + 1, -98, 50, -25, -37, 112, 54, 62, 115, -4, 19, 107, 59, 1, 101, 13, -83, 84, 107, + -117, -87, -95, -23, 116, -112, 7, -102, 0, 65, -101, 93, -128, 16, -87, 50, -37, 89, -56, + 123, -60, -11, -41, -45, 41, -61, -95, 87, 45, 30, -82, -88, -3, -102, 112, 52, -76, 62, + 21, -44, -3, -58, 98, 20, -6, -64, -18, 37, 20, -51, 87, -63, 117, 71, 95, -48, -114, + -42, 44, -101, -67, -35, -12, 71, 63, -70, -111, -96, 43, 60, -102, 31, -2, -69, 124, 75, + 65, 30, -78, -8, -8, -101, -76, 12, 54, 111, -125, 87, 114, 93, -7, 59, -122, -110, 124, + -11, 118, 79, -3, 6, 60, 95, 95, -63, -44, -78, -99, -89, -76, 60, -38, -37, 113, 88, + 74, 89, -40, 40, 123, -48, -125, 76, 71, -26, 61, 14, -51, 57, 107, 58, 116, 125, 102, + 83, -84, 73, 31, -78, 66, -87, -97, 56, 49, -117, 89, 33, -38, -117, -35, -21, -104, 18, + -68, -56, 22, 76, 61, 42, 96, 40, 27, 38, -83, -55, -17, -80, -72, -59, 98, -85, -84, + -21, -54, 47, -70, 117, 115, -75, 91, -45, -45, -20, -66, 116, 3, 65, -1, 95, -69, 14, + 111, 116, 90, 79, 87, 18, -35, -9, 119, -85, 23, 6, -51, -89, 88, 41, 18, 116, 20, + 20, 5, 8, -78, -73, 105, 108, 124, -43, -11, 101, 17, -72, -21, 39, -20, 67, 25, -64, + 96, -9, -118, 43, 30, 32, -99, 94, -87, -39, -80, -2, 85, -96, -55, 26, -123, 38, 32, + 117, 28, -126, -57, -127, 33, 47, 43, 112, 122, 77, -64, -52, 46, -68, 61, 37, -65, 50, + 94, 113, 114, 83, -15, -10, -83, -55, -120, -83, 75, -65, 14, -19, 44, -82, 22, -14, 92, + 68, -97, -16, -119, -16, -18, 58, 34, 34, -44, -22, 32, 91, -122, -51, 112, 41, 119, 24, + 113, -12, -108, -59, 67, -4, -107, 32, 5, -64, -33, -44, -62, -67, -119, 29, 109, -64, 44, + 25, 111, 89, 106, 96, 72, 6, 50, -54, -76, -28, 25, -125, -83, 109, -90, 124, -6, 30, + -106, 81, 63, 107, 76, -43, 32, 18, -53, -66, 113, 106, 71, -9, -54, -114, 6, -10, 91, + 22, -74, -84, 67, -39, -10, 97, -82, 69, -47, 26, -127, -113, -72, -101, 125, 7, 105, 58, + 1, 4, 66, 123, -80, 105, 119, 99, -98, -94, -17, -41, -12, -20, -7, 22, -53, -55, 29, + 104, 12, -83, -64, 29, 55, -95, -127, 44, -71, 23, 1, -103, 40, 75, -28, 27, 24, 49, + -118, 50, 3, 61, -42, 59, 84, -49, -55, 4, 27, -62, -65, 20, 14, -95, 41, -93, -56, + -113, -120, 102, 45, -74, 89, -90, -123, -55, 119, 42, 81, -27, -24, 119, -90, 116, 40, 18, + 108, 123, 69, -68, -11, 24, -85, -11, 46, -97, 125, 90, -26, 83, -123, -55, -106, 28, 29, + -127, 93, 35, -63, -84, -120, 48, 45, 124, -124, 113, -84, 27, 92, 114, -26, 7, -62, 24, + 77, 84, -13, -10, -94, -54, 7, 83, 45, -41, -128, 105, -13, 22, -16, -128, 9, 77, -74, + 28, 71, -99, -73, -82, 72, -125, 82, 14, 124, -69, 63, -46, 108, -100, 93, 17, 116, 26, + 43, 113, 118, -127, 77, 103, -88, -40, 48, 72, -4, 43, -76, 25, -109, -91, 23, 91, -85, + -13, 42, 102, -55, 99, -37, 100, -21, 9, 45, 33, 52, 88, 22, 45, -80, 37, 13, 17, + 85, 77, 101, 75, -50, 68, 98, -41, -48, -95, 0, 40, 98, 17, 112, -49, -48, 115, 3, + 32, 54, 96, 32, 4, 90, 2, 35, -79, 34, -62, 98, -56, 69, -19, 30, 59, 3, -58, + 99, -99, 118, -48, 62, -61, -44, -100, -17, 4, -117, -91, -80, 31, -92, 66, -90, -5, -126, + -51, -61, 43, -24, -115, 112, 79, -75, 125, 33, 9, 74, 71, -65, 46, 51, 81, 21, -89, + 17, -44, 59, 10, -12, 121, -31, 12, -114, 93, 23, -6, 21, -70, 66, -66, -58, 3, 123, + 13, 21, -79, -78, 75, 126, 3, 40, -28, -104, 8, 105, -12, 109, -86, -54, -111, 21, -12, + 0, 28, -105, -126, 59, 10, 2, -50, 75, -29, -5, 18, -107, 41, -18, 3, 15, -39, -30, + 2, -53, 52, -112, 108, 36, -87, -34, -113, 48, -61, 51, -33, -45, 58, -95, 115, -14, -17, + -108, -54, -27, 26, -62, 69, 58, -119, 77, -67, 6, -91, 13, 17, 58, -86, -112, 105, 85, + -34, 28, -93, 57, 86, -1, -120, -17, 11, 4, -87, -44, 73, 86, 112, 35, 40, 117, -104, + -69, 19, 30, -33, -54, 14, -23, 71, -93, -30, -44, 27, -14, -127, 1, 81, 101, -81, -104, + 123, 98, -105, 66, -102, 96, 65, 80, 97, -74, -10, 122, -44, 87, -111, -125, 112, 42, 32, + 73, 37, 34, 116, 75, -108, -88, -80, -62, 121, -32, -125, -92, -18, -126, 68, -61, 51, 5, + 31, -50, -71, 40, 6, -28, 31, -21, 38, 115, -13, -4, -31, -114, -90, -57, -110, 79, -62, + -81, 27, -86, 18, -128, 81, -60, -34, 37, 24, -77, -111, 8, 68, -14, -8, 58, 56, -61, + 112, -1, 59, -24, 93, -1, -42, -73, -26, -62, -54, 30, -96, -3, 57, -122, -44, -41, -85, + -102, 85, 114, -65, 18, 36, 97, -62, 56, -88, -29, 12, -23, 109, -54, 43, 14, 61, -78, + 25, -13, -19, -97, -1, 63, -34, 124, 50, -13, 121, -51, -59, -69, 70, 52, 0, -116, -19, + 58, 57, 86, -104, 105, 33, -79, -24, -106, 41, 22, 33, 25, 63, 98, 37, -120, -61, 5, + -75, 124, -127, 9, 92, -36, 109, -95, 27, -45, -111, -103, 89, 74, -78, 105, -44, 66, 4, + -80, -26, 119, 18, 119, -122, 33, 57, 64, -85, -95, 99, 9, 120, 124, -70, -122, 55, 9, + 110, 84, 18, -107, -86, -14, 17, 10, 29, 12, -94, 122, 56, 22, -101, 23, -25, -124, -75, + 45, 35, -44, 119, 104, -63, 9, -127, -29, -44, 4, 108, 28, -67, 73, -68, -11, -73, -80, + -76, 80, 52, 110, 121, -128, -32, 10, 84, -62, 2, -112, -103, -16, 30, -125, 84, -7, -1, + 52, 87, -119, 7, 79, 54, 48, 67, -20, 38, 49, 114, 10, -50, -13, 110, -101, 55, 52, + -28, -121, 3, -112, 20, -62, 82, -94, -31, -67, 77, 36, -78, 87, 94, 88, 64, -104, 7, + -82, -69, 75, 38, -55, 30, -17, -126, -10, 37, -67, -13, 58, -120, -51, 32, 92, 22, -54, + -81, 95, 56, -16, 115, -50, -93, 88, 11, -26, -32, -33, 98, -120, 106, 67, -108, 85, -22, + 37, -25, 102, 80, -103, 69, 101, -66, -101, -127, 20, 22, -97, 44, 42, 109, 99, -65, -97, + -13, -112, 68, 87, -101, -2, 27, 71, -46, 54, -22, 98, 89, -105, 95, 93, -54, 25, -16, + 47, 46, -96, -40, 78, -126, -73, -66, 57, 19, 81, -111, -56, 41, 81, 60, 60, 6, -30, + -62, -43, -120, 110, -4, -15, 93, -9, -29, -92, -29, 23, -79, 63, 111, -101, -14, -76, 52, + -97, -16, 110, 7, 48, 79, 45, 50, 123, 119, -83, -102, 45, 113, 5, 86, -124, -26, -37, + 36, 49, 62, -59, -75, 23, 12, -70, 104, -94, -13, -76, -39, -21, -122, 112, 19, -67, -5, + -25, -90, -75, 49, 106, 37, 117, -5, 31, 13, -107, -104, -56, -25, 104, 61, 65, 58, -30, + 70, -127, 103, -2, -100, -74, 65, 62, 35, -81, 32, 74, 65, -107, -2, -57, 37, -86, -92, + 46, -64, -117, -44, 44, -93, 75, 43, -2, -12, 57, 56, -25, 58, -24, -5, -81, 86, -60, + 126, 90, 116, -10, 57, 114, 60, 78, 8, 50, 72, 27, 92, 96, 45, -36, -12, 2, -77, + -2, 44, -90, 46, -74, -87, 110, 50, -50, -96, -11, 82, -117, 57, -61, 78, 20, 47, -56, + -57, -53, 13, -38, 87, 58, -99, 21, 45, 20, -114, 79, 65, 32}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_mult_data.h index bc0b00f3..34bf1a5f 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_mult_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_mult_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_1_output_mult[3] = {2007829174, 2008826774, 2011503377}; +const int32_t transpose_conv_1_output_mult[3] = {1380963475, 1380691613, 1379205195}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_ref_data.h index 0090b969..3311ec93 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_ref_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_ref_data.h @@ -1,95 +1,91 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_1_output_ref[1944] = { - 41, -43, 0, -19, 57, 6, 44, -42, 61, -55, 58, 3, 34, -30, 60, -40, 28, 3, 25, -49, 17, -23, - 40, 3, 17, -50, 26, -35, 44, 5, 37, -77, 51, -57, 61, -18, 44, -40, 55, -82, 21, -17, 42, -62, - 53, -61, 42, -12, 16, -22, 47, -24, 49, 8, -15, -39, -17, 46, -49, 4, -3, -9, 2, 67, -42, 17, - -44, -15, 4, 62, -22, -8, -1, -26, -18, 55, -39, 5, 24, 7, -42, 70, -43, 30, -11, -22, -16, 28, - -28, 12, -26, -6, -51, 38, -28, -30, -24, -4, -39, 36, -67, 18, -43, -17, -18, 39, -33, 9, 65, -62, - 11, 27, 18, -39, 38, -23, 44, -2, 45, -9, 49, 19, 56, 1, 38, 6, 64, -26, 99, 9, 42, -28, - 74, -37, 33, -32, 71, 14, 53, -35, -14, 37, 38, -42, 82, -5, 35, -15, 49, -4, 47, -13, 78, 8, - 0, 16, 53, -1, 62, -22, 71, -45, -14, -10, -69, 73, -28, -20, -32, 61, -71, 28, 18, 68, -42, 64, - -63, 19, 17, 39, -35, 35, -28, 42, 6, 47, -32, 15, -59, 26, 22, 23, -15, 31, -80, 0, 21, 35, - -62, 6, -42, 29, -22, -2, -23, 22, -80, 32, -63, 18, -36, 31, -37, 17, 4, 42, 37, -43, 32, 8, - 30, 5, 53, -32, 62, -8, 58, -12, 57, -27, 57, -26, 13, -64, 71, -49, 37, -8, 34, -23, 31, -17, - 27, -19, 44, 7, 86, -16, 55, -29, 45, -40, 48, 5, 59, -23, 40, -49, 39, 3, 24, -14, 32, 9, - 35, -10, 31, -16, 42, -28, 13, 25, -37, 45, 8, 17, -23, 33, -53, 30, 17, 80, 6, 41, -50, 18, - 15, 53, 22, 44, -78, -27, -14, 21, -24, 47, -73, 5, -5, 73, -9, 5, -75, 65, 19, 32, -21, 41, - -67, 12, 14, 30, -17, 37, -99, 19, -26, 26, -39, 8, -34, 12, 4, 12, 76, -30, 1, 4, 24, -8, - 60, -37, 56, 16, -7, 28, 59, -72, 56, -6, 55, 3, 33, -37, 57, -41, 23, -22, 65, -16, 95, 1, - 18, -2, 76, -29, 57, -42, 43, -54, 21, 15, 69, -23, 16, 9, 34, -8, 43, -23, 42, -12, 13, -35, - 44, -11, 38, -39, -18, 9, -40, 32, -13, 48, -45, 27, -34, 55, 28, 16, -57, 45, -98, 34, 37, 57, - -69, 49, -52, 18, -13, 69, -39, 41, -42, 53, 0, 57, -43, 30, -74, 14, -6, 53, -27, 58, -19, 47, - -9, 67, -12, 41, -52, 44, -6, 54, -28, 3, -27, 8, 22, 43, 76, -63, 21, 14, -10, -36, 53, -50, - 52, 9, 24, -58, 18, -6, 86, 14, 53, -27, 69, -15, 60, -48, 87, -34, 22, -27, 60, -13, 55, -34, - 72, -11, 44, -54, 8, 14, 20, -50, 92, -28, 24, -4, 37, -26, 58, 22, 22, -36, 1, -30, 27, 23, - 39, -21, 4, 10, -55, 46, -38, 9, -19, 37, -100, 1, 14, 48, 6, 33, -58, 35, 11, 79, -3, 79, - -73, 43, 20, 29, -32, 57, -80, -21, 12, 49, -13, 10, -74, 27, 2, 36, -24, 12, -42, 21, -41, 30, - -44, 28, -59, 13, -2, 74, -63, 10, -55, 25, 34, 30, 82, -56, 33, 20, 65, -40, 96, -18, 64, -38, - 46, -26, 37, -26, 51, 4, 37, 0, 69, 6, 66, 12, 54, 14, 81, -23, 12, -43, 18, -20, 23, -37, - 71, -6, 67, 8, 62, -40, 39, 1, 30, -54, 66, -38, 70, -10, 62, -20, 11, -50, 47, -16, 52, -37, - -11, 54, -16, 9, -26, -10, 4, 41, -64, 28, 18, 13, -41, 33, -52, 47, -43, 16, -71, 45, -42, 9, - 9, 93, -50, 32, -59, 63, -66, 15, 1, 40, -56, 33, -9, 21, -10, 36, -40, 27, -12, 66, -11, 25, - -51, 50, 22, 39, -41, 28, -37, 12, 5, 31, 52, -41, -26, -15, 39, -27, 101, -14, 30, -4, 51, -3, - 52, -30, 41, -29, 31, -32, 82, -60, 65, -26, 33, -39, 72, -50, 50, -24, 45, -3, 54, -7, 70, -66, - 27, -22, 38, 0, 71, 29, 82, -41, 102, -28, 19, -16, 77, -3, 34, 4, 20, -21, 17, -5, 13, 8, - -40, 30, -43, -9, -41, 26, -75, 67, 2, 20, -43, 48, -94, 51, -9, 37, 24, 30, -47, 23, 15, 30, - -18, -6, -54, 23, 22, 30, -15, 5, -63, 84, 7, -4, -26, 51, -36, 42, 10, 35, -31, 40, -80, 62, - -1, 23, -52, 7, -17, 30, -16, 58, 62, -46, 22, 0, 13, -37, 56, -11, 19, -79, 39, 0, 53, -38, - 42, -20, 27, 20, 23, -57, 34, -38, 56, -28, 75, 3, 41, -54, 29, -12, 34, -10, 88, 23, 52, -47, - 72, -20, 72, -19, 53, -30, 58, -34, 34, -9, 73, 12, 65, -7, -1, -16, 14, -35, -4, -7, -43, 76, - -11, 8, -11, 67, -55, 36, -3, 29, -19, 19, -80, 38, 9, 47, -65, -5, -64, 21, -15, 18, -70, 36, - -84, 83, 11, 47, -25, 43, -43, 47, -19, 68, -32, 25, -50, 35, 0, 47, 7, 21, -56, 4, -8, 65, - -30, 20, -43, 13, 4, 4, 25, -12, 25, 36, -12, -27, -3, -8, 49, 28, -8, -17, 37, 4, 59, 39, - -6, -37, 17, -8, 61, 63, -5, -48, 38, 16, 39, 37, -8, -29, -6, 5, 35, 63, 9, -34, 32, 10, - 59, 40, 5, -49, 11, -8, 50, 9, 24, -23, 15, -13, -7, 33, 22, -54, -11, 12, -46, 60, 18, 9, - -59, 8, -98, 15, 22, 42, -30, 16, -66, 17, 10, 37, -7, -7, -63, 2, 49, 29, -41, 54, -105, 0, - 16, 36, -9, 31, -76, -5, 33, 56, -57, 33, -68, 15, 36, 24, -31, 57, -102, 22, 64, 37, -25, -3, - -54, 13, 20, 20, 62, -62, 21, -23, 47, -12, 10, -53, 49, -32, 62, -8, 61, -33, 68, -40, 45, 17, - 43, -54, 53, -50, 55, 4, 14, -70, 69, -16, 64, 5, 61, -53, 47, -47, 60, -1, 39, -65, 63, -44, - 54, 3, 64, -67, 61, -60, 50, 2, 6, -43, 39, -13, 39, -4, -22, 10, -11, 23, -46, 2, -27, -10, - -45, 21, -43, -14, -11, 1, -23, 53, -58, 9, 1, -19, -72, 51, -21, -18, -16, 1, -44, 30, -27, 16, - -15, -15, -10, 77, -14, 7, -20, -17, -18, 59, -27, -14, 26, -20, -26, 42, -62, -1, -33, 6, -32, 27, - -38, 0, 77, -80, -8, 23, 44, -34, 79, -14, 27, -28, 59, -14, 47, -16, 33, -72, 15, -14, 76, -13, - 52, -10, 47, 1, 53, -37, 73, 8, 60, -40, 38, -41, 108, 25, -7, 2, 60, -16, 76, -11, 19, -27, - 84, -50, 33, -28, 29, -44, 40, -33, 12, -19, 56, -24, -13, 8, -37, 45, -47, 10, -37, 22, -74, 43, - -11, 74, -19, 3, -54, 63, -26, 75, -34, 26, -26, 69, 8, 12, -47, 24, -62, 52, -23, 32, -47, 56, - -66, 10, 20, 59, -30, 26, -101, 50, 33, 65, -6, 31, -62, 46, 28, 35, -61, 26, -41, 28, 2, 28, - 54, -30, 37, -15, 29, -27, 57, -29, 59, -33, 16, -23, 54, -17, 47, -4, 22, -12, 102, -38, 67, -23, - 66, -6, 54, -8, 66, -21, 52, 14, 91, -29, 74, 8, 14, -20, 83, -2, 44, -25, 48, -40, 16, -70, - 64, -24, 35, -56, 47, -35, 20, -8, 48, -37, 29, 8, -46, 75, -14, 9, -7, 44, -46, 47, -1, 13, - -13, 32, -83, 42, -1, 81, -1, 36, -13, 35, 40, 70, -2, 46, -35, 22, 27, 18, -4, 46, -96, 45, - 6, 61, 3, 55, -81, 14, 19, 23, -19, 2, -58, 39, -7, 22, -38, 8, -26, 14, 16, 25, 49, -42, - -7, 16, 27, -40, 38, -39, 54, 34, 37, -30, 39, -61, 46, -49, 36, -30, 51, -28, 1, -28, 31, -15, - 41, -52, 71, -14, 5, -4, 61, 6, 59, -8, 26, -46, 19, -47, 21, -38, 69, -16, 39, -50, 70, -12, - 61, -62, 23, -21, 43, -26, 16, -31, 24, -3, -34, 14, -43, -13, -41, 32, -75, 48, 4, 27, -12, 52, - -23, 18, 23, 56, -14, -20, -59, 36, 31, 36, -58, 40, -79, 50, 0, 43, 12, 37, -50, 45, 33, 32, - -10, 36, -62, 40, 13, 15, -24, 31, -56, 0, 6, 53, -58, 22, -9, 41, 3, 44, 55, -37, 6, 9, - 3, -47, 51, -22, 50, -35, 17, -12, 28, -40, 41, 17, 22, -16, 73, -16, 64, 15, 29, -34, 66, -50, - 80, -37, 30, -36, 42, -29, 65, -10, 44, -31, 15, -38, 49, -31, 9, -6, 47, -28, 60, -6, 63, -36, - 15, -45, 11, -7, 33, 18, -10, 28, -25, 30, -9, -9, -24, 29, -34, 43, 18, 21, -49, 46, -70, 44, - -16, 34, -14, 46, -67, 79, 4, 31, -6, 25, -66, 35, 13, 39, -22, 10, -62, 13, 16, 40, -14, 7, - -51, 15, 6, 57, -57, 27, -29, 24, 2, 33, -37, 14, -56, 7, 31, 20, 46, -26, 34, -4, 24, -41, - 78, -44, 67, -69, 63, -18, 50, -15, 70, 16, 35, 8, 28, -5, 55, -8, 37, -11, 33, 43, 59, -9, - 20, 25, 47, -16, 47, -5, 55, -32, 67, -25, 59, 12, 43, -6, 85, -13, 35, -34, 40, -8, 58, -45, - 27, -11, 15, -22, -4, 19, -17, 53, -16, 8, -9, -41, -45, 41, 5, 25, -23, 45, -55, 43, -11, 84, - -27, 24, -77, 16, 12, 42, -24, 25, -48, 51, 15, 24, -36, 80, -55, 54, -42, 49, -15, 85, -47, 47, - 49, 73, 1, 81, -78, 34, 7, -1, -51, -11, -48, 29, 8, 12, 37, -66, 19, 36, 8, -51, 82, -17, - 58, -17, 45, 2, 45, -50, 14, -17, 42, -5, 11, 8, 78, -36, 25, -32, 75, -12, 55, -20, 20, -18, - 37, -29, 67, 11, -16, -28, 28, -27, 52, 10, 4, 1, 45, -54, 30, -9, 32, -10, 36, -21, 40, 0, - 27, -26, -8, -9, -38, 48, -64, 9, -36, 31, -49, 34, 0, 49, -44, -3, -92, 37, 17, 57, -21, 41, - -81, 48, 11, 67, -32, 10, -73, 54, 21, 42, 2, 27, -73, 22, -10, 37, 2, 25, -76, 35, -12, 79, - 11, 13, -63, 5, -7, -2, -38, 14, -17, 14, -21, 36, 90, -36, 16, 14, 23, -24, 48, -15, 64, -34, - 0, 17, 60, -44, 88, -32, 48, -35, 84, -22, 63, 19, 38, -23, 29, -61, 50, -31, 34, -16, 72, -33, - 90, -27, 79, -11, 75, -35, 47, -23, 38, 6, 61, 9, 44, -7, 59, -39, 31, -18, 62, -13, 11, -64, - -20, 21, -59, 47, -8, 34, -10, 52, -63, 15, -21, 11, -24, 34, -44, 22, -11, 16, -18, 22, -59, 1, - -20, 38, -4, 24, -66, 7, -3, 67, -20, 45, -48, 7, 24, 48, -30, 39, -20, 49, 5, 66, -83, 27, - -67, 16, 16, 36, -40, -5, -30, 14, -27, 21, 26, 5, 20, 30, 7, -21, 26, -26, 35, 52, 35, -20, - 20, 13, 43, 35, 41, -56, 31, -4, 21, 3, 20, -67, 20, -2, 40, 51, 25, -39, 9, -6, 48, 22, - 2, -24, 4, -9, 10, 13, 9, -43, -13, 11, 28, 27, 68, -59, 27, 8, 28, 26, 30, -47, -11, 48, - -60, 33, 28, 2, -72, 32, -63, 0, 44, 30, -52, 43, -97, 3, 3, 43, -40, 5, -81, 10, 15, 47, - -10, 41, -70, 26, 32, 26, -18, 10, -84, 6, 39, 62, -28, 50, -63, -11, 41, 10, -9, 18, -70, -15, - 46, 34, -30, 11, -36, -6, 11, 30}; + 13, 31, -47, 9, 4, 7, -12, 43, -51, 58, -10, 40, -43, 40, -41, 49, -13, 41, -7, 42, -45, 39, -18, + 49, -20, 53, -30, 69, -16, 32, -5, 25, -43, 20, -32, 47, -27, 11, -18, 65, -23, 41, 4, 13, -45, 10, + 0, 28, -34, 20, -20, 48, -20, 30, -15, -41, -1, 13, 12, 0, 15, 2, 37, -41, -15, 1, 11, 6, 29, + -44, 1, 1, 35, 2, 18, -52, -35, 2, 35, 10, 48, -44, -14, -1, 36, -2, 26, -20, -30, -13, 25, -10, + 10, -54, -23, 5, 22, -12, 7, -19, -25, -34, 19, 27, 4, -36, -41, -34, 12, 65, -44, 25, 26, 8, -48, + 24, -36, 66, 21, 30, -21, 16, -36, 76, 25, 80, -53, 25, -29, 68, 7, 25, -46, 27, -25, 78, 12, 50, + -43, 12, -15, 55, 7, 35, -45, 40, -15, 63, 13, 44, -11, 46, 0, 74, -10, 64, -15, 12, -30, 20, 1, + 43, -16, -37, 10, -38, -10, 25, 30, -16, 20, -43, 15, 40, 75, -19, 2, -65, -10, 6, 47, -11, 23, -68, + -21, 35, 65, -3, 1, -64, -6, 5, 57, -2, -14, -67, -13, -6, 65, -11, 30, -71, -20, 1, 52, -14, 26, + -53, -15, 7, 32, 39, 26, -77, 0, -16, -8, 60, -47, 52, 42, 3, -29, 60, -16, 74, 3, 50, -23, 27, + -26, 57, 17, 41, -51, 36, -19, 82, 4, 47, -26, 53, 0, 47, 0, 66, -18, 35, -20, 53, 28, 32, -54, + 30, -32, 96, -20, 58, -43, 32, -20, 56, 24, 32, -18, 11, -14, 54, -18, 36, 1, -41, 12, 9, -1, 29, + 25, -14, 29, -55, -27, 5, 13, -3, -15, -42, -2, 5, 44, -2, 33, -75, -1, -2, 29, -33, -10, -59, -2, + 0, 37, -8, -7, -63, 12, 5, 75, -39, 9, -76, -31, 35, 45, 3, 5, -60, -4, -8, 37, 24, 15, -60, + -2, -19, 8, 76, -51, 26, 28, 14, -47, 9, -7, 84, 12, 59, -39, 40, -15, 74, 9, 67, -29, 7, -27, + 74, -9, 31, -7, 18, -14, 42, 3, 22, -41, 35, -31, 82, 9, 42, -58, 37, -27, 61, 18, 29, -3, 46, + -3, 69, -1, 31, -24, 20, -4, 62, -16, 45, 11, -15, -11, -43, 9, 4, 57, -35, 11, -81, -34, 25, 35, + 7, 24, -78, -13, 15, 78, 11, -1, -66, -35, -10, 57, -26, -2, -75, -22, -12, 47, -24, 1, -60, -4, 30, + 42, -20, 11, -68, -11, 9, 35, -19, 12, -67, -19, 9, 28, 20, 29, -29, -9, -18, -23, 69, -48, 35, 34, + 22, -59, 51, -3, 69, 2, 49, -59, 25, -20, 86, 12, 67, -40, 29, -19, 57, -22, 40, -23, 34, -11, 72, + -21, 40, -54, 21, -22, 57, 24, 52, -46, 44, -38, 36, 4, 17, -45, 43, -44, 89, 29, 30, 9, 24, -7, + 53, 4, 51, -2, -20, 0, -21, -3, 22, 59, -11, 15, -49, -9, -27, 36, -4, 18, -65, -11, -8, 44, -6, + 38, -50, 21, -42, 55, -29, -11, -69, 14, 3, 16, 10, 2, -66, -15, -9, 31, -33, -16, -58, -26, -4, 57, + -13, 30, -69, -11, 35, 40, 42, 14, -44, -29, -32, -8, 33, -56, 14, 27, 26, -31, 35, -4, 73, 14, 42, + -28, 19, -16, 62, 12, 26, -19, 24, -32, 74, -28, 38, -31, 13, 7, 72, -9, 33, -25, 29, -12, 31, 3, + 34, -29, 42, -26, 67, 8, 10, -37, 26, -39, 73, 16, 56, -41, 11, -9, 55, -8, 47, 9, -31, -10, -56, + -9, 8, 45, -48, -9, -92, -22, -10, 28, -11, 14, -75, -19, 21, 24, -13, -7, -58, -16, 4, 34, -11, 10, + -68, 3, 2, 29, -49, 12, -45, -20, 8, 49, -2, 15, -68, -8, 5, 51, -14, -11, -73, -12, 0, 24, 14, + 2, -61, 7, -12, 11, 62, -48, 29, 24, 8, -39, 51, -16, 86, 4, 44, -27, 36, -28, 56, 4, 44, 2, + 44, -24, 51, 3, 44, -71, 21, -4, 61, -2, 57, -35, 24, -11, 59, 0, -5, -19, 12, -41, 70, 15, 62, + -38, 37, -18, 61, 10, 45, -25, 30, -8, 30, -1, 48, 7, -30, 27, -34, 4, 20, 52, 3, 24, -71, -16, + 5, 40, -34, 39, -48, -5, 15, 46, -9, 46, -52, -24, -20, 28, -31, 22, -40, -16, 5, 22, -27, -19, -44, + -11, -13, 40, 7, 6, -65, -4, 14, 50, -31, 11, -60, 6, -6, 19, 35, 4, -50, -26, -25, -11, 36, -41, + 45, 6, 14, -24, 16, -47, 48, 22, 55, -19, 28, 3, 82, 5, 31, -48, -1, -11, 92, -13, 40, -30, 16, + 1, 62, -6, 24, -18, 58, -11, 58, -5, 51, -50, 48, -10, 83, 3, 38, -25, 26, 5, 91, -10, 75, -29, + -2, -18, 46, -7, 29, 25, -16, 6, -32, 6, 37, 29, -37, -3, -31, -1, 25, 43, -2, -1, -93, -23, -12, + 55, 12, -3, -77, -11, 10, 33, -39, -6, -59, -16, -5, 26, -28, 15, -54, -37, -21, 2, -13, 18, -52, -3, + 26, 50, -30, 8, -63, 2, -11, 29, 34, 2, -34, -18, -17, -11, 34, -47, 31, 42, -2, -8, 19, -21, 67, + 1, 26, -53, 27, -29, 38, 10, 40, -39, 7, -11, 52, 30, 14, -15, 19, -29, 62, 5, 21, -52, 11, -31, + 47, 34, 2, -47, 19, -41, 54, 14, 13, -23, 8, -17, 62, 23, 29, -26, 18, -10, 21, -11, 25, -10, -20, + 8, -9, 17, 18, 33, -18, -5, -59, 11, 9, 40, -25, 12, -43, 4, 2, 33, -6, -12, -48, -6, -4, 57, + -24, -4, -78, -23, 10, 46, -26, 4, -65, -19, 17, 43, -1, 21, -66, -22, -1, 36, -17, 0, -66, -12, 14, + 35, 29, 10, -24, -2, -22, 19, 56, -51, -4, -6, 17, -21, 31, -26, 51, -28, 41, -36, 22, -27, 33, -2, + 16, -19, 22, -38, 14, -15, 12, -26, 49, -38, 22, -6, 48, -14, 15, -43, 51, -13, 33, -17, 32, -48, 53, + -14, 41, -29, 18, -23, 27, -9, 32, -16, 29, -24, 29, -29, 38, 12, -18, 16, -23, -21, -3, 11, -12, 17, + -24, -10, -8, 10, 7, 11, -2, -25, -26, 24, -1, 17, -25, -21, -7, 4, -33, 11, -22, -4, 6, 15, 7, + 39, -19, -4, -28, 14, -5, 34, -39, 5, -7, 14, 4, 3, -47, -15, 1, 25, 36, 32, -42, -12, -40, -25, + 38, -47, 24, 27, 3, -35, 42, -10, 60, 23, 36, -30, 17, -18, 52, -7, 30, -68, 36, -36, 51, 35, 39, + -6, 27, -10, 73, 18, 37, -14, 5, -3, 94, 3, 35, -22, 40, -8, 77, 24, 36, -13, 28, -4, 71, 18, + 16, -11, 7, -1, 31, -25, 56, -8, -44, -1, -31, 14, 11, 42, 8, 3, -80, -32, -1, 44, 14, -6, -58, + -12, 12, 50, -32, -9, -41, -27, 7, 11, -16, 26, -87, -17, -4, 44, -12, -6, -51, -10, 18, 38, -3, 10, + -57, 17, 6, 38, -23, 4, -63, -6, 7, 41, 8, -3, -30, -22, -9, -3, 64, -38, 28, 18, 13, -35, 27, + -42, 53, 13, 28, -21, 57, -15, 56, 11, 64, -41, 22, -19, 88, 17, 29, -65, 30, -34, 60, -19, 41, -22, + 13, 4, 82, 0, 45, -14, 37, -15, 57, 8, 36, -54, 19, -14, 71, 1, 47, -8, 12, 0, 33, -31, 45, + 14, -29, -18, -20, 5, 22, 53, -14, 0, -44, -8, 18, 28, -35, 29, -46, -20, -3, 29, 0, 17, -82, -11, + -2, 37, -15, 22, -62, -4, -7, 28, 3, 3, -74, 16, -16, 12, -22, -23, -46, -18, -1, 28, 14, 20, -45, + -6, 16, 30, 13, 39, -56, 18, -40, -13, 34, -37, 25, 38, 10, -30, 41, -53, 33, 6, 30, -51, 33, -34, + 41, 0, 27, -34, 17, -30, 76, 32, 63, 9, 54, -26, 63, 1, 61, -37, 19, 10, 71, -21, 48, -28, 40, + -32, 55, 8, 45, -20, -10, -37, 37, -1, 41, -12, 15, -5, 49, -25, 45, -2, -26, 18, -2, -6, 34, 50, + -2, 30, -39, -4, -14, 48, -21, -6, -94, 6, 1, 63, -31, 19, -66, -6, 16, 28, -14, 33, -78, -16, -7, + 46, -16, 18, -40, -28, -14, 26, -6, 20, -36, 5, -9, 52, -16, 9, -79, -12, -22, 29, 17, 3, -60, -24, + -32, -10, 37, -41, 25, 38, 1, 5, 29, -8, 50, 6, 58, -23, 33, -15, 76, 11, 51, -46, 36, -5, 68, + 8, 46, -43, 40, -30, 74, -2, 43, -56, 14, -2, 82, 15, 45, -7, 34, -16, 43, -12, 38, -28, 33, -27, + 84, -28, 36, -15, 20, -14, 47, -5, 24, -14, -14, 13, -53, 1, -6, 32, -33, -11, -67, 3, -23, 29, -19, + 24, -52, -24, 19, 17, 4, 27, -66, -25, -29, 46, -17, 24, -83, 2, -15, 69, 1, 18, -88, -18, 2, 14, + -27, 27, -32, 19, 4, 35, -33, 22, -66, 7, 15, 13, 28, 9, -53, 3, -7, -20, 69, -53, 22, 13, 2, + -33, 29, -18, 89, 2, 39, -29, 15, -11, 63, -11, 19, -52, 24, -5, 80, -15, 31, -28, 31, -12, 65, -2, + 44, -11, 13, -47, 73, 28, 50, -17, 39, -25, 75, 2, 39, -35, 34, -7, 80, 16, 9, -9, 11, -20, 14, + -18, 20, -4, -37, 28, -11, -10, -4, 9, -23, -31, -70, 8, 32, 60, -20, -6, -45, -28, -22, 29, -21, 7, + -83, -23, 15, 36, 8, -4, -69, 5, 23, 55, -27, 2, -75, 18, 9, 36, -24, -7, -66, -11, 25, 53, 0, + 11, -50, -32, 11, -6, 18, 17, -24, 1, 8, -2, 47, -43, 41, 21, -13, -44, 32, -9, 61, 23, 36, -33, + 48, -32, 70, -16, 33, -11, 46, -27, 60, 2, 57, -24, -6, -18, 63, 17, 41, -28, 55, -20, 94, 21, 63, + -33, 34, 2, 62, 8, 46, -41, 18, -22, 51, 8, 48, -22, 16, -14, 45, -29, 25, 3, -33, -10, -13, -9, + -1, 29, 3, 33, -97, -20, 11, 43, -19, 28, -58, 26, 20, 62, -18, 15, -69, -6, -21, 21, -24, 9, -69, + 11, 18, 60, -25, 6, -60, -17, 16, 35, 23, 34, -48, 1, 17, 48, -37, -8, -21, -18, 19, 6, 25, -6, + -26, -25, -22, 10, 53, -46, 26, 38, 13, -51, 23, -40, 65, 24, 39, -24, 39, -38, 58, 1, 45, -62, 52, + -23, 70, -23, 38, -59, 25, -10, 78, 11, 47, -23, 20, -17, 67, 6, 48, -25, 18, -25, 65, 12, 50, -10, + 50, -9, 42, -13, 35, -26, 25, -5, 42, -23, 34, 7, -17, -24, -19, 10, -7, 47, -46, 24, -63, -1, 17, + 39, -26, 10, -71, -33, -6, 19, -19, 5, -40, 6, -9, 20, 12, 23, -41, -16, 14, 28, -16, 17, -85, 12, + 13, 45, -5, 10, -58, -12, -2, 33, -11, 15, -66, -31, -23, 14, 38, 14, -29, -12, -28, -17, 19, -41, 25, + 15, -3, -23, 28, -29, 58, 14, 13, -40, 13, -26, 51, 24, -6, -19, 45, -34, 44, 8, 25, -40, -8, -37, + 55, 25, 20, -48, 13, -5, 60, 21, 44, -30, 13, -30, 46, 36, 24, -48, 27, -26, 35, 4, -1, -27, 2, + -18, 19, 2, 23, -18, -21, 14, -18, -10, 13, 34, -19, 3, -63, 4, 2, 39, -28, -1, -70, -11, 15, 50, + -19, 13, -51, -30, 5, 43, -12, 14, -53, 2, 9, 38, -20, 23, -62, -9, -3, 38, 4, -16, -55, 15, 7, + 78, -27, -8, -58, -19, 5, 44, 24, 2, -37, -9, 10}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_shift_data.h index 12feee06..8505c1cd 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_shift_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/output_shift_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_1_output_shift[3] = {-12, -12, -12}; +const int32_t transpose_conv_1_output_shift[3] = {-11, -11, -11}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/test_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/test_data.h index 3d785ca4..575a0f2b 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/test_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/test_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #include "biases_data.h" #include "config_data.h" #include "input_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/weights_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/weights_data.h index a86b6470..7f5ff720 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_1/weights_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_1/weights_data.h @@ -1,188 +1,58 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int8_t transpose_conv_1_weights[3456] = { - -81, -119, 98, -16, -57, -43, 82, -41, -22, -27, 12, 81, -36, -90, -70, -41, 67, -59, 55, - -11, 88, 115, 86, 20, 100, 17, 110, 29, 87, 73, 118, -74, -51, 24, -10, -94, -14, -14, - -92, -94, 95, 110, -20, -46, -121, -5, -61, 22, -16, -70, -37, 98, 37, -15, 43, 37, -93, - -115, -111, -121, 67, -96, -78, 83, 90, -55, -12, 41, -99, 102, 18, 73, 113, 126, -48, 82, - -32, 57, -1, 124, -10, 1, 66, -109, 46, -116, -68, -41, 20, -1, 114, -30, -62, -51, -1, - 75, 24, 67, 47, -104, -85, 8, -107, -51, 42, -48, -113, -83, -17, -32, -27, 104, 35, 111, - -21, -36, 25, 74, 116, -48, -17, -118, 111, 82, 89, -86, -98, 20, -81, 80, 100, -58, -127, - 44, 95, -76, 17, 9, 72, 122, -108, -84, -75, 78, -69, 85, -8, -56, 123, -69, 113, -118, - 119, -72, 103, 99, 107, 50, 25, -115, 10, -48, -43, -85, -67, -23, 51, -124, -47, -114, 104, - -121, -65, -117, -52, -83, -122, 56, -44, -73, -12, -13, -45, 3, 45, 5, 89, -83, 34, 1, - 26, -13, -86, 106, 76, -124, 1, -72, 122, 67, -97, -43, 76, 35, -33, -112, 123, -5, -37, - 91, 5, -62, 98, 94, 105, 95, -7, 19, 2, 51, 35, -87, 95, 33, 122, -19, 90, -51, - 21, 78, 17, 32, 45, -99, 120, 36, -31, -125, -24, -62, -9, -52, 25, -8, 69, 52, -13, - 44, -72, 44, 78, -10, -36, 56, -19, 21, -19, 33, -18, -3, -69, -64, -11, -105, -124, -90, - 97, -44, 22, -45, -99, 31, 14, -66, 94, 45, -8, 23, -61, 6, 106, 4, -26, 99, -69, - -90, -125, -39, -115, 73, 0, -37, -81, 94, 85, -119, 88, -76, 12, 122, -40, 109, 96, -56, - 12, 81, -118, -11, 68, 88, -52, -55, 16, -115, -42, 12, 93, -3, -66, 66, -101, -61, -37, - -60, 113, -125, 24, 76, -57, 74, -63, 32, -11, 32, -23, -3, 15, 81, -3, 70, 60, 116, - 75, -106, 78, 90, 32, 54, 81, 30, 0, -54, 12, -105, 103, 72, 99, -33, -1, -5, 77, - -69, 23, -81, 54, 31, -59, 119, -1, 81, 105, 64, -117, 83, 94, -105, -113, 72, 88, -98, - 105, 52, 17, -120, 11, 82, -90, 42, -89, -62, -126, -15, 49, 20, 100, 61, -22, 22, 116, - -13, 126, -78, -75, 67, 42, 62, 13, 118, -114, -90, 89, 104, 61, -2, 113, -46, -104, -108, - 82, -105, 44, 51, 45, 100, 51, 26, 122, -5, 53, 34, -44, -42, 3, -6, 18, 14, -107, - 6, -81, 89, 107, 77, 122, 55, -94, 127, -82, 2, 70, 95, -38, -14, -79, 9, 30, 101, - 107, -68, 74, 110, -80, 95, -122, -110, 79, 87, 66, 50, -85, 40, -20, 92, 111, -66, -39, - -31, -46, 55, 38, 117, 63, -22, -64, 59, 71, -70, 118, -115, 69, -28, 2, -35, 103, -90, - 22, 46, 20, 84, 20, -20, 61, -29, 98, 22, 6, 1, -120, 16, -30, 127, -88, 54, 34, - 37, -62, -5, -2, -61, 7, -48, -62, -47, 43, -92, -86, 70, 25, 42, -105, -16, 60, 55, - -33, -51, 85, -49, -82, -30, -66, 64, 55, -96, 90, -81, 21, 124, 8, -42, -59, -120, -84, - 48, -65, -90, -19, 6, 118, 41, 4, 104, 97, 81, 101, 50, -6, 71, -92, -14, -108, -23, - -15, 72, -116, 116, -49, 24, 122, -126, -97, -82, 63, 79, 5, 11, 10, 123, -118, 11, -123, - -32, -114, -93, 86, -6, -59, 12, 75, 27, -111, -66, 121, 35, -68, -5, 100, -23, 25, 102, - -11, -45, -18, -5, 68, -41, 65, -61, 90, -16, 48, -7, -117, 96, -9, -2, -55, 119, 21, - -117, 108, 117, -36, -33, -28, -100, 59, -61, 47, 101, 80, -93, 108, -35, -126, 48, 23, 100, - -118, 58, 125, 122, -69, -10, 71, 86, 70, -68, -24, -53, -64, 71, -58, 94, -104, 53, -16, - -106, 53, 17, 73, -51, -123, -4, 40, 45, 18, 73, 80, 38, 3, -121, 86, -118, 55, 42, - -52, -65, 93, 70, 71, -102, 76, -102, -45, 106, 102, 26, -9, -10, 121, 117, 117, 59, 44, - 0, 108, -76, -90, 82, 75, -50, -49, -96, 56, -17, -13, 34, -25, -115, -79, -72, -56, 106, - 36, -92, 98, -72, -46, -50, -14, 51, 126, 48, -93, -101, -42, -44, -92, 0, 91, 68, 52, - 8, 20, -69, -71, -51, -32, -29, -5, 79, 99, 13, 19, 26, -5, 28, -16, 75, -17, -26, - -57, 103, -65, -89, 13, -50, 17, -66, -79, -76, 77, -48, -98, 34, 97, -58, -111, -83, -102, - 72, 111, 1, 66, -9, -18, -71, -53, 36, 81, -31, -4, -6, 117, 105, -6, 109, 55, -79, - -36, -43, 76, 14, 99, -67, 119, 92, -24, -4, 76, 79, -43, -65, 87, -120, 42, -8, 56, - -8, 106, -71, -49, -44, -23, -112, -61, -18, -31, -57, -79, 0, 87, -62, 88, -52, 41, 46, - -19, -4, 90, -14, 99, 12, 2, -52, 11, -83, 103, -3, 49, 46, 45, 62, -107, 71, 0, - -100, -36, 118, 32, -104, -101, 50, 89, 48, -73, 120, 125, 56, 101, 121, 29, -10, 3, -52, - 112, 63, 42, -50, 92, 37, -41, -10, 115, 24, -9, 19, 59, 72, -92, -5, 75, 90, -87, - 4, -37, -116, -9, -88, 116, -125, 79, 119, 96, 44, -18, 35, -106, -118, -116, -104, -34, -122, - 108, 18, -85, -61, 100, -113, 5, 110, 113, 30, 24, -86, 27, 27, 39, 93, -35, -25, -73, - 38, 126, -83, -80, -86, 108, -39, -35, 44, 34, -4, 117, -89, 97, -15, -80, -78, 78, 2, - 103, 120, 99, -58, -71, -31, -18, -123, 35, 26, 97, 11, 90, 2, -94, 42, 75, -58, -49, - -79, -92, -81, 111, -100, 112, 98, -10, -109, 69, 26, 8, 49, -56, -77, 105, 60, 64, -10, - -19, -28, -28, 50, -127, -56, -15, 124, 111, -122, 87, 65, -17, 12, -22, 3, -29, 79, -20, - 112, -125, 6, 23, 30, -27, -70, 84, 23, -80, -8, 111, -127, 126, -91, -23, 30, -10, 67, - -52, -1, -109, 95, 86, 91, -80, -92, -86, -79, 53, -65, 119, 116, 92, -124, 8, -105, -78, - 100, 67, 108, 66, 76, 33, -115, -67, -113, -36, 112, 30, 8, -72, 14, 27, -89, 57, 34, - -34, 3, -42, 11, 121, -68, 19, 75, 99, 90, 96, 118, 30, -123, 82, -103, 114, -20, -89, - -40, 82, -6, -3, -44, -121, -1, 31, 90, 37, -110, 117, 22, -53, -23, 115, -107, 100, 9, - 8, -111, -91, -98, -10, 17, -10, -79, -52, -124, -110, -16, -70, 53, -46, -5, 18, 120, 83, - 27, -110, -106, 112, 10, -106, -57, -85, 116, -116, 65, -83, -117, -58, 33, -105, 65, 102, -91, - 0, -73, -54, -7, -79, -80, -47, 101, -7, -73, -79, 103, -9, -86, -50, 8, 72, -4, -111, - 112, -72, -10, 86, -102, -108, 70, -27, -126, -98, -17, -87, 121, 41, -84, 102, -67, 55, 57, - 14, -67, -86, 62, -33, 62, -110, -53, -66, -41, 124, 16, 53, -78, 93, -101, 90, 86, 49, - -86, -123, 25, 119, -41, -44, 32, 42, 120, 72, 90, -1, 66, 64, 62, 62, -124, -44, -121, - 9, 29, -72, -59, 72, -13, 111, 15, -38, -68, 69, -94, 88, 95, -125, -43, 47, -3, -18, - 14, -125, -18, -122, -113, -14, -71, -10, 35, -57, -20, -93, -76, -53, -82, 41, -85, -79, 54, - -10, 72, 65, 114, 69, 48, -85, 116, 60, 56, 0, 47, 76, 42, 35, -29, 47, -87, 76, - -83, 87, 0, 39, -12, 120, -14, 72, 14, -94, 93, 30, -50, -47, 108, 33, 13, 58, -62, - 77, 31, -30, 9, -73, 75, -24, -95, -22, 78, 88, -116, -15, -11, -23, 72, 35, 57, -102, - -96, -120, 84, -81, 112, -115, -78, 25, -118, -83, -43, -4, 68, -70, 57, -88, -35, 89, -13, - 118, 29, -6, -9, 11, -30, 30, -34, 64, -70, 11, 117, 83, 64, -40, -121, 48, -85, 30, - 6, -70, 30, 100, 7, -1, -106, 48, 127, -12, 56, 67, 40, -108, 124, 31, -13, 51, -98, - 18, 91, 51, -35, -21, -51, -91, 68, -26, 26, -62, -19, -1, -31, -126, -66, 4, 52, 99, - -61, 119, -81, -66, -112, -73, -72, -118, -43, 58, 86, -15, -27, -126, 25, -107, 69, -106, 51, - 74, -11, -30, 65, 65, -113, -95, 70, -48, 126, -19, 109, -71, -68, 71, 122, -124, -102, -9, - -70, -76, 83, 72, -15, -90, 58, 73, 5, -74, -47, 84, -46, 92, -62, -125, 84, -41, 34, - 0, 70, -22, 32, -99, -90, 4, -104, 41, 38, 15, 106, -27, -17, 87, -119, -101, -126, -86, - -50, -60, 98, -110, 124, -101, 3, 12, 118, -108, -36, -75, -125, 27, 66, 16, 114, -92, 82, - -90, 33, 83, 95, 104, -5, 105, 17, 59, 100, 77, -106, 78, -70, -36, 64, -91, 0, -45, - 103, -101, 3, 103, 107, 14, 90, 56, 35, -108, -84, 75, 11, -119, -33, 97, 75, 107, -41, - 25, 11, -56, 35, 112, -73, -6, -79, -123, 95, 26, -39, -37, 14, 35, 58, -88, -70, -37, - -117, 121, -53, 24, 126, -30, -12, 40, -96, 32, -19, -78, 56, -36, -18, -111, -44, -79, 76, - -8, 116, -104, 48, 109, 87, -102, 125, -4, 117, 46, -50, 106, 83, 50, 8, 51, 5, 40, - 98, 96, -47, 65, -18, -21, 22, -99, 16, -88, 115, -76, 42, -61, -62, 115, -65, 62, -65, - -53, 7, 26, 31, 118, -91, -119, 104, 61, 26, -18, 96, -44, -92, 126, 15, -127, -118, 60, - 90, 14, -80, -36, 68, 41, 60, 96, -98, 50, -78, -61, -103, -15, -56, -51, -22, -42, -32, - 40, 41, 5, 88, -101, 109, -11, -5, -63, -36, -77, 116, 48, -35, -25, -55, 107, 118, 5, - -39, 50, 78, 118, 122, -23, -27, 57, -126, 71, 122, -96, 87, 97, 69, 109, -109, -102, -85, - 43, -17, 101, 21, -71, 83, -49, 97, 45, 55, -68, 107, 29, 29, 15, -73, 44, -73, -63, - 2, -8, 49, -108, -16, -17, 63, 37, 75, -47, 44, -12, -103, 19, 30, -55, 79, 117, 75, - 25, 113, -112, -96, -90, 18, 3, 88, -21, 95, 33, 44, 26, 119, -52, 109, -121, -21, 50, - 123, -110, 19, 63, 98, -71, 124, -54, 71, 67, -45, -77, -12, 70, -100, -74, -23, 85, -71, - -33, -8, 87, -77, 81, 91, -111, -65, -112, 68, 24, 48, -83, 108, 98, 1, -37, 120, 96, - 88, 1, 45, 0, -41, -69, -98, -21, -66, -91, -38, -86, 45, 90, 38, 103, 67, 40, -26, - -16, 42, -117, -54, -6, -38, 23, -118, 85, 83, -119, -109, -1, 40, -69, 4, 69, 2, -123, - -17, 107, -28, -90, 43, -1, 73, 80, -99, 83, 107, -103, -94, 94, -90, 119, -112, -114, -67, - -65, -56, 2, 52, 82, 106, -52, -76, -2, 86, 122, -61, 49, -94, -20, -70, -76, -70, 83, - -47, -3, -45, 45, -68, 64, -15, -80, 78, 49, 98, -79, -94, -102, 76, -52, -37, 13, 37, - 88, -35, -70, -40, -4, -57, 103, -114, -28, 75, 24, 105, -86, 116, -78, 32, 102, -48, -38, - 32, -30, 46, 121, 19, -55, 28, 99, -105, 11, 65, -15, -11, -110, -118, 52, -93, -36, -52, - 78, 82, 35, -8, -117, 100, 104, -19, -100, 42, -24, -101, 82, 77, 122, 39, 124, -126, -65, - -58, -74, 64, -61, 81, -101, -16, 62, 102, -110, 55, 92, -43, 79, 11, 10, 62, 110, 48, - -85, -108, -107, -9, 93, -23, 106, -96, 7, 32, 49, -24, 100, -51, 19, 122, -101, -118, -106, - -19, 53, -54, -49, -13, -120, 43, 65, 13, -111, 77, 14, 56, -62, -74, -57, -79, -90, -77, - 75, -79, -71, 77, 61, -24, -99, -81, 107, -108, -74, -67, 62, -70, -61, -86, 59, 116, -117, - 20, 65, 63, 11, -83, -2, 44, -35, 34, 15, 63, 40, -64, 67, -93, -77, -10, 47, 83, - -23, -54, 115, -64, -89, 16, -27, -114, 76, 91, -87, -120, -117, -92, 14, 15, 12, 106, 17, - 76, -44, -68, 75, -73, 19, 106, 100, 8, 87, -120, 121, 121, 13, -116, -9, 119, 70, -118, - -53, -1, -119, 87, 99, 126, 28, -11, 120, 55, 105, 74, 107, 52, -82, -69, -88, 63, -50, - 107, 67, -127, -40, 22, -65, -81, 88, 94, 106, 66, 75, 26, -5, -46, 94, 50, -58, 58, - 62, -123, -75, 56, 23, -91, 96, -3, -9, 4, -38, 98, -115, -82, 42, -7, -116, 79, -126, - 44, 74, 13, 46, -66, 115, 116, 10, 46, 94, -125, -32, -120, 27, 118, -9, 125, 98, 1, - -77, 69, -64, -68, -55, -71, 50, 61, 81, 89, 67, 121, -65, 52, -116, -88, -76, -95, 58, - 18, 74, 87, 61, 100, 106, 45, 6, 13, 95, 63, 19, -107, 17, 55, 43, 66, 105, -105, - 18, -65, 112, -57, -89, -2, 53, -40, 0, 94, 117, 52, 115, -102, 55, -11, 115, -60, -123, - -73, 100, -95, -100, -26, -91, -87, -47, 95, 107, 120, 119, -102, 44, 74, 96, -122, 51, 46, - 60, 53, -70, 106, -16, -81, 78, -116, 126, 43, 26, -16, -84, -17, 102, 4, 99, 119, -1, - -99, 125, -60, 86, 83, 49, 106, -46, -46, 31, 82, -125, -56, -21, 113, -112, -89, 6, 19, - 83, -8, -120, 86, -65, 63, 82, 23, 91, 121, 72, 11, -56, 119, 33, 30, 65, -83, -69, - -90, -59, 41, 18, 14, -54, -53, 86, -29, 120, -2, 110, 65, -47, 123, -12, 77, 107, -10, - 13, 64, 68, 111, 76, 14, 13, 6, -23, 45, 48, 28, 101, -99, -43, -115, 114, -82, -110, - -85, -127, 10, 12, 39, -91, -98, -61, -21, 25, -37, 67, -19, -92, 122, -11, -26, 58, 69, - 54, -5, -114, -81, 122, 4, 7, 88, 84, 88, -79, 59, 3, -18, -119, 6, 49, -71, -120, - -61, 66, 23, 86, 37, -71, -42, 24, -28, -107, -19, 65, 71, 110, -9, -44, -29, -104, -102, - 107, -45, 7, 90, 79, -4, 82, 13, -26, 23, -81, 53, -110, -11, 103, 8, -68, 122, 124, - 63, 11, -114, -22, -125, 59, -125, -90, 99, -119, -71, -69, 126, -99, 0, 24, -24, 66, -102, - 40, -51, -69, -54, 41, 53, -77, -9, 71, -72, -114, 17, -85, 66, -104, -55, 115, 110, -61, - 112, -64, -69, 107, 108, 85, 7, -71, -79, -26, -57, -99, -6, -102, 64, 57, -113, -46, -80, - -38, -49, -30, 122, -114, -22, 9, -63, 102, 21, 71, 94, 93, -3, 52, 58, 105, -51, 123, - -18, 61, 112, 50, 32, -7, -46, 119, -78, -118, 77, 118, 96, 126, 0, 7, 116, -1, -12, - -113, 66, -92, -26, 120, 105, 84, 65, 31, -52, 107, -83, 115, -47, 9, 24, 71, -73, 60, - -65, 31, 74, 117, 55, 29, -65, -91, 25, 96, 83, -83, -38, -27, -120, -49, -76, 111, 66, - 74, 12, -93, 46, -17, 50, 50, 13, 14, -125, -112, 100, 22, 35, 23, -97, 24, 53, -113, - 97, -92, -99, -56, -55, 0, 37, -107, -83, 125, 93, 41, 31, 70, -47, 127, 63, -16, -81, - 71, 43, 22, -95, 127, 103, 6, 5, -94, -89, 86, 97, 91, -2, 40, 119, 78, 20, -52, - 108, 26, -40, 40, 68, 114, -82, 27, -35, 107, 112, -124, 95, -87, -124, 21, -108, -3, -34, - 84, -105, -95, -119, 127, 40, -26, 74, 84, -37, -17, 49, 115, -127, 116, 125, 108, -51, -110, - -93, -106, 76, 39, -50, 89, 11, -102, -53, -88, -98, 71, 81, -21, -121, 120, 65, -51, -2, - -93, -34, -2, -127, 27, 127, -33, -68, -91, -103, 60, 103, 2, -12, 32, -38, 122, 51, -119, - -54, 62, 13, 10, 77, -43, 38, 97, 4, 61, -106, 12, -57, -12, 84, 30, 13, 1, -75, - -11, 88, -24, 26, -40, 105, -23, 19, 6, 38, 1, 107, 29, -82, 48, -38, 87, 89, -6, - -12, 86, -1, 51, -120, 63, -87, 38, -54, 87, -35, 18, -68, -114, 32, 116, 46, -28, -73, - -15, 110, 101, 104, 41, -65, 110, 35, 112, -18, 46, 101, -66, -25, 72, 109, 49, 89, -117, - -44, -86, -106, 95, -47, 109, 54, 34, 19, -75, -44, 86, -97, -98, 9, 18, 2, 113, 107, - -10, 110, 32, 75, 14, 108, -67, 119, -97, 117, 23, -38, 27, -20, -52, -57, 99, -102, 104, - 107, 4, -73, -76, 93, -48, 14, -110, -12, -11, 91, 119, -48, -45, 88, 126, -64, -55, 53, - 50, -49, -38, 43, 39, 63, -46, -74, 116, 17, -24, 16, -88, 15, -35, -1, 16, 109, 122, - 94, 61, 72, -30, 61, -35, -50, 101, -102, -73, -44, 121, 8, 77, -52, -113, 39, -115, -46, - -93, 43, 100, 34, -85, -91, 84, 98, 63, -75, -51, 22, 22, 70, 16, 92, 114, 121, 96, - -104, 55, 124, -33, -65, -109, 53, 40, 60, -114, 70, -6, -57, 76, 112, -19, 89, 68, -102, - 17, 68, -59, -100, -17, 106, -86, -31, -104, -45, 108, -70, 112, 71, -14, -28, 18, 1, -96, - -115, 8, 4, -108, 123, -119, -33, -76, 19, -125, 19, 100, 38, 35, -87, -44, -99, 9, 15, - 104, -2, -89, -58, 50, -91, -102, -103, -87, -99, -48, 103, 81, -94, 107, -122, -88, -61, -53, - -89, 122, -5, 75, 54, 90, -117, 43, 5, 73, 26, -86, 26, 56, 44, -43, 53, -48, 41, - -29, -87, -123, -12, -104, 5, 109, -6, 103, -94, 71, -39, -46, 80, -71, 88, -124, 28, -17, - 125, -51, -13, 13, 120, -36, 81, 43, -12, 98, -5, -118, -72, -23, 1, -94, -5, -79, 60, - 13, -13, -19, -8, 55, -118, -84, -27, -90, -31, 97, 90, -114, -99, 72, -20, 81, -26, -36, - -76, 62, -81, 117, -50, -21, 9, 43, -119, 79, 116, 77, -35, 61, -111, 82, -115, 85, 114, - 7, -70, 46, -41, 106, -122, -126, -67, 15, 45, 99, 55, -61, 104, 111, -92, -17, 30, 97, - -80, 23, 84, 13, 22, -118, -46, -121, 104, -119, -115, 12, 74, -28, -81, 69, -71, -6, -98, - 19, -7, -48, 53, 85, 109, 112, -114, -88, 76, 30, -25, 54, -63, -100, 75, 28, -74, -112, - -86, -37, 75, 6, -28, -121, 61, 13, -2, -112, 72, 115, 90, -17, 31, -24, 26, -76, -103, - 88, -5, 113, -2, -20, 25, -53, -28, -79, -29, 27, 70, 4, -117, 107, 73, 53, 103, -2, - 81, -122, 70, 123, 103, -115, 37, -23, -73, -29, 123, -73, 70, -18, -28, 81, 72, 93, 43, - -87, 44, 52, -112, -12, 62, 79, -52, 94, -66, 55, -113, -57, -96, -119, 61, 45, -69, -12, - -115, 4, 29, -97, -20, -63, -26, -123, 77, -9, 8, 60, -3, 116, 22, -60, 101, -43, -38, - -79, -66, 67, 121, 16, 87, 18, 5, 126, -17, -83, -30, -44, -104, -73, -118, -75, 99, -101, - 99, -114, -42, -48, -71, -22, -96, -28, 72, -102, -25, 44, -52, 101, 78, 33, -95, -81, 49, - 91, 80, 14, -94, -124, -66, 80, -48, -42, -5, -78, -45, 24, 30, -108, -127, 43, 120, -48, - 106, 120, 81, 22, 102, 127, 37, -97, -81, 57, 97, -121, -60, -47, -102, -49, 39, -49, 22, - -8, 79, -23, 22, 26, -68, 106, -69, 24, -61, -3, -88, -95, 51, 34, -75, -37, -79, -14, - 69, 16, -65, -33, 125, 88, 70, -30, 29, -73, 57, -40, -23, 109, 103, -46, 24, 81, -9, - -77, 34, -50, -10, -79, 93, 57, -65, 69, -79, -103, 122, -42, 88, 25, -78, 29, -74, 29, - 41, -61, 116, -108, -61, -102, -125, -11, -54, 84, 41, 33, -76, -5, -108, 89, 4, 125, -70, - 31, 105, 62, -2, 92, -52, -41, 31, 7, 93, -76, -96, -58, -127, 54, -39, -8, -41, 85, - 119, -54, 81, 23, -60, -117, 10, -8, -44, 49, 99, -125, -23, 71, -42, -104, -35, 37, -41, - -9, 25, -6, 56, -64, -120, 120, 12, 90, -29, -74, 18, -93, -65, 33, 98, 55, -14, 117, - -103, 101, -25, 44, -95, 127, 59, 95, -3, 95, 120, -102, -14, 7, -101, 30, 33, 21, 8, - -79, -77, -63, 72, -102, 56, -101, 31, 77, 125, -39, -107, -18, -29, -75, 28, -28, -9, 123, - -1, -18, -15, -51, 43, -83, 53, 120, 10, -14, -116, -83, 89, -125, -32, -122, -99, -25, 93, - 23, 0, 121, 44, -26, 88, 1, 95, -126, -22, -107, -113, 19, 90, 79, 99, 44, 7, -13, - -85, 104, -81, 103, -121, -31, 39, 2, 1, -50, -1, 116, 99, 87, 115, 88, 92}; +const int8_t transpose_conv_1_weights[972] = { + -31, -114, -44, -15, -35, 13, -127, 70, 98, -5, -6, 63, 115, -18, 124, -96, -116, 6, 56, + 97, 0, -64, -6, 95, 27, -123, 107, -84, -122, 50, 121, 34, -60, -50, 124, -25, -126, 71, + 99, -125, -45, 124, 1, -6, -114, 91, 126, 106, -13, -20, -65, 106, -65, 62, -110, 57, 66, + -81, 84, -27, 87, 75, 76, -94, 31, 11, 107, -78, -116, 39, -42, 94, -96, -1, -78, -54, + 24, 72, -65, -100, -63, -122, -114, 127, 105, 87, 106, 41, -32, -62, 93, 50, 106, -116, 60, + -32, 104, -116, -15, -103, -81, -93, 23, 15, -11, -14, 55, -89, -33, 22, -52, 38, -124, 98, + 31, 9, 60, -47, -66, -88, -18, 110, 109, -62, 110, 44, -87, -114, -10, 82, -12, 89, 124, + -116, 49, -28, 32, 13, 35, -73, 126, -5, -70, 42, -98, -118, -42, -28, -7, -119, -44, 15, + -92, -97, 103, 34, 127, 35, -10, 25, 73, 125, -9, -117, 108, 104, 93, 4, -32, -82, -99, + 1, 113, -94, -125, -20, -58, 45, -103, -18, 93, -99, 93, -73, 69, 64, -42, -58, 97, 78, + -100, -122, 76, -100, 36, 22, 37, 37, 118, 16, 81, -124, 63, 75, -60, 108, 1, 42, -76, + -22, 93, -44, -42, -88, -126, -116, -42, 25, 14, -42, 78, -115, -6, -127, -89, -88, 24, 5, + 66, 110, 85, 70, 66, 13, -99, 64, -43, 81, -64, 106, -47, -8, 69, -119, 19, -22, 55, + -70, 32, 55, 44, -5, -16, -16, -31, -108, -70, 56, 80, 80, -42, 114, -29, 75, -2, -25, + -12, 89, 39, 37, -2, -26, 53, 7, 103, -75, 75, 97, -80, 120, -48, -124, 10, -102, 11, + -20, -38, 63, -113, -38, 92, -53, 5, 33, -30, 100, -78, -46, -37, 49, -71, -120, -15, -96, + -108, 105, 76, -79, 77, 87, 83, 39, 64, 126, 46, -122, 13, -86, 116, -96, 56, -95, -102, + 68, 69, -41, 77, 46, 98, 91, 34, -86, -116, -25, 89, -115, -26, 4, 48, -84, -105, 106, + 35, 26, 110, 31, 49, 36, -70, 106, 74, 48, 24, -69, -103, 57, 99, -80, 87, 22, -63, + 54, -124, 17, 38, 57, -103, -84, 85, 23, -50, 48, 41, -35, -116, -110, -112, -3, -26, 113, + -107, -64, 103, -18, -18, -96, -97, 121, -57, -35, 35, -73, 87, -108, -21, 42, -29, 29, -47, + 87, -103, 66, -5, 37, 103, 15, 55, -100, 109, 18, -13, 52, -107, -85, 94, -114, 73, -115, + 113, -21, -36, -38, 89, -74, 101, -87, 75, -60, 99, -23, -50, -54, 97, -97, 8, -56, -14, + 68, -36, 91, -83, 69, 90, 73, -37, 20, 62, 35, -72, -42, 89, 21, 96, 76, 121, -105, + 14, 99, 120, 35, -105, -72, 89, 1, 51, -86, -36, -71, -1, -112, -85, -63, -56, -44, 18, + 73, -93, -8, -46, -16, 71, -61, -95, 28, -124, 103, -89, -106, -37, -18, 63, -41, -110, -17, + 38, -38, 67, -102, -82, -4, 59, 86, -118, 95, -1, -69, 86, -46, 23, 36, -91, 61, -42, + 81, 10, -70, -24, -75, -54, -106, 1, 71, -78, 97, -16, 104, 54, 38, 98, -53, 40, -18, + -15, 62, -94, -70, 1, 81, 10, -45, 118, -4, 50, 113, -13, -75, 65, 14, 51, 32, -25, + 38, 117, 120, -51, -60, 127, 12, -79, 63, -76, -19, -59, 74, -9, -98, 119, 66, -77, 9, + 124, 63, 119, 63, -73, -30, 32, -24, 102, -58, 121, -53, -96, -10, -118, -22, -9, 26, 71, + 13, -119, -15, 92, -42, -55, -75, -97, -16, 82, -11, -102, -89, -37, -119, 13, 27, -26, 68, + 94, -8, -22, -41, 39, -101, 65, 34, -87, 82, -89, 26, -7, 58, -18, -75, -1, 24, 118, + 126, -121, 93, -43, -62, -45, 107, 127, 4, -76, 59, 25, 74, -10, -25, -107, -1, 11, -126, + 20, 33, -22, 6, -76, 7, 37, 104, 73, -21, -110, 9, -94, 71, 36, 114, 67, -105, 27, + -71, -43, -54, -41, 67, 96, -24, -19, 52, -82, 17, -19, -103, -26, 67, 80, 97, 119, -115, + 9, 100, 111, -109, 52, -93, -28, 42, 41, 39, 40, 20, -54, 126, 123, 102, -16, 44, 116, + -52, -22, 100, -15, -25, 11, -127, -121, -51, 38, 33, 87, -48, -9, 57, -98, 112, -86, 62, + 4, 66, -95, 113, 110, -93, 117, -39, -62, -10, -120, 22, -15, 54, -58, -42, 66, 115, 88, + -126, 91, 67, -89, -93, -51, 71, -61, -38, 118, -40, 105, -97, -126, 49, -111, -34, 29, -65, + -1, -54, -123, 85, -18, -16, 70, 5, -51, -24, 101, -105, 123, 2, -63, -100, -87, 15, 20, + -75, 35, -114, -111, -35, -64, -120, 126, 77, -46, 107, 15, 91, -80, 4, 2, 65, 37, 103, + 113, -73, 6, 108, -18, 114, -52, -7, -28, 109, 74, 1, -86, 29, -63, -4, -27, 127, 24, + 103, -38, -22, -38, 31, 106, 91, 87, -119, 19, 89, 12, -30, 58, -7, -44, 2, 6, 116, + 93, 116, -63, -35, 24, -87, 72, -18, -66, 63, 109, -107, 69, 80, -86, 79, 68, 8, -46, + 5, -83, 106, 41, -101, -98, -59, -114, 111, -17, 86, 111, 110, -36, -27, -112, 62, -91, -58, + -109, -68, -45, 109, 105, 67, -53, -93, -123, -35, -77, 23, -32, 54, -5, 31, 35, 34, -44, + 70, 76, 112, 56, -94, 12, -58, -98, 111, 119, -18, 60, 86, 85, -50, 51, 80, -16, 115, + -90, 64, 35, -47, -124, 50, -31, 34, -120, 103, 29, 23, -118, 2, 47, -8, -47, 69, -78, + -10, 113, 79, 39, 84, 125, 39, -99, -85, 106, 22, 64, -37, -121, 114, -30, 32, -6, 12, + -47, 125, -1, -15, 56, -14, -92, 79, 72, -32, -4, -44, -86, -15, 18, -115, -75, -26, 107, + 67, 63, -41}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/biases_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/biases_data.h index af83c92e..dbff0a00 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/biases_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/biases_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/config_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/config_data.h index b1685f77..ba691d29 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/config_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/config_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #define TRANSPOSE_CONV_2_OUT_CH 4 #define TRANSPOSE_CONV_2_IN_CH 15 @@ -19,7 +19,7 @@ #define TRANSPOSE_CONV_2_OUTPUT_W 36 #define TRANSPOSE_CONV_2_OUTPUT_H 14 #define TRANSPOSE_CONV_2_INPUT_OFFSET 128 -#define TRANSPOSE_CONV_2_OUTPUT_OFFSET -16 +#define TRANSPOSE_CONV_2_OUTPUT_OFFSET 13 #define TRANSPOSE_CONV_2_DILATION_X 1 #define TRANSPOSE_CONV_2_DILATION_Y 1 #define TRANSPOSE_CONV_2_PAD_X_WITH_OFFSET 0 diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/input_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/input_data.h index 83de4e6c..4662ab09 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/input_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/input_data.h @@ -1,120 +1,120 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_2_input[2160] = { - 96, 3, -73, 92, -6, -71, -94, -17, 9, -101, -121, -73, -86, -126, -121, 49, -18, -114, -29, - 104, 80, 19, -116, 26, 126, 89, -117, -8, -44, -61, -42, 18, -42, -109, 65, 117, 122, -29, - -36, -42, 50, -109, -116, 36, 7, -37, -99, -3, 0, -106, -123, 39, 83, -84, -124, 85, -40, - -114, -60, 83, -84, -103, 103, -79, 79, -117, -106, 9, -88, -125, -12, -9, 115, -43, -54, -113, - -98, 40, 117, -60, 95, -50, -82, 58, 38, 79, 42, -13, -39, 96, -9, -67, -117, 3, -81, - -70, -118, -113, -45, -94, 46, 119, 12, -59, -57, 50, 29, -87, 116, -98, -118, -116, -118, 63, - -38, -48, -65, -106, 92, -85, -127, -20, -91, 47, -45, 122, 63, -99, 114, 88, 82, -110, -51, - -29, 4, 15, -12, 72, -117, -58, -105, 9, 88, -50, -124, -60, 102, 88, 74, -20, -5, -125, - -25, -23, 46, 65, 26, -21, -53, -30, -127, -94, -91, -93, -83, 63, -105, -77, 64, -114, -51, - -103, -87, 1, -84, -18, -11, 66, -66, -47, 89, 100, 84, -9, 88, 30, -119, -16, 111, 39, - -34, 100, -9, 57, 3, 68, 91, -81, -72, -59, 4, -37, 64, -56, 12, -20, 73, 91, -32, - -65, -107, -71, 8, -3, 55, 91, 115, 73, 50, 36, -128, 76, -33, -102, -20, 124, 73, 109, - -109, -33, -96, -5, 109, -68, -98, 98, -96, 90, 82, 124, 7, 96, 85, 5, -1, 50, -41, - -76, 116, -82, 101, -110, -109, -19, -1, 68, 71, 19, -20, -94, 87, 9, 102, 120, 32, 72, - 104, 40, 94, 57, -92, 34, 61, -89, -108, 34, 64, 13, -40, -12, -59, 106, -112, 117, -41, - -126, 20, 75, -49, 121, 111, 7, -103, -59, 56, -69, 38, -108, 119, 101, 68, -53, -35, -87, - 97, 15, 77, 111, -96, -2, 43, 15, -7, -56, -113, -47, -38, -64, 21, 65, 86, -74, 112, - -126, 38, 72, -1, -97, -35, 72, 100, -77, -12, -78, 3, 82, -26, -45, 78, -53, -33, -110, - -96, -123, -86, 28, 118, -58, -33, 30, -7, 25, 111, 58, 49, 43, -105, -41, -67, -20, 121, - 70, 106, -101, 92, -61, 5, -49, 52, -107, 91, -86, -68, -104, 104, 119, -35, -5, -65, 27, - 92, 3, -36, 33, -30, -89, 77, 108, 108, -21, 30, 86, -7, 77, 70, -124, -89, 114, 8, - 101, 0, -81, 106, 91, 77, -28, 123, -117, 67, 25, -89, -106, 72, 105, 26, 109, 111, -76, - 119, 41, -66, 102, 97, -88, 122, -106, 1, -55, -49, 68, 42, -22, -52, -28, -58, -100, 124, - -68, 53, 21, 8, 84, -61, 24, 57, -81, -17, 14, -51, 13, 106, 120, -37, -20, 61, -15, - 67, -125, -124, -106, -96, -47, 105, 77, -65, 15, -22, 54, -5, 20, 32, 59, 15, 56, -21, - 86, -94, 45, -75, -60, 92, 117, 89, 57, 110, 42, -26, -35, 36, -88, 68, -79, -63, 92, - 0, -30, -29, 91, -40, -108, 21, -18, -97, -89, 124, 78, -127, -10, 119, 26, -65, -20, -5, - -109, -87, 39, 23, -38, 13, 121, -50, 90, -14, 108, -68, 114, -56, 113, 40, 103, -115, 121, - 84, 123, 106, 58, -93, 46, -59, -30, 77, -9, -124, -81, 65, 71, -93, -2, 37, 9, 61, - 29, -127, -63, -3, -120, -41, -31, -7, 45, -125, -4, -97, 53, 102, -44, -19, 42, -30, 35, - -35, 76, -115, 19, -113, -55, -121, -81, 52, 17, 110, -122, 68, -118, 110, 6, -66, -20, -50, - 33, 86, -19, -26, 80, -27, 108, -125, -6, -70, -67, -29, 36, -40, 125, 98, -14, 18, 3, - 111, -68, 119, 98, 76, 37, -22, 126, 2, -57, 109, 90, -89, 31, -124, 117, -47, 101, -40, - -69, -22, 44, 80, 101, 11, -27, 16, 22, 35, 117, 68, -49, 98, -110, -68, 44, -39, -97, - 75, -17, 52, 2, -70, -26, -78, 36, -121, 26, -96, 122, 5, -86, -93, -74, -60, 81, -92, - -32, -128, -97, -115, 92, -27, 30, 31, -71, -78, 33, -111, 16, -2, -65, 16, 94, -111, -92, - -51, -108, -111, -43, 21, 73, 70, -126, 20, 80, -3, 72, -70, 84, -52, -75, 91, -89, -78, - -72, -52, -20, 9, 76, -12, 67, -93, 54, 91, -51, 113, -115, -35, -126, -36, 43, 17, 5, - -125, 90, 22, 102, 96, -113, 64, -63, -8, 107, 63, 116, 101, 72, -122, 94, 63, -25, -86, - 97, 113, -7, 100, -113, -1, 89, 13, 2, 64, -25, -58, -98, 103, -121, 115, 77, 77, 114, - -97, 20, 125, 92, -35, -75, 57, 4, 113, 17, 49, -44, -116, -82, 102, 78, 23, 40, -56, - 108, -123, -106, 36, -120, 39, 116, -43, 13, 82, -25, -14, 118, -56, 90, -100, 79, 114, -28, - 100, 22, 15, 15, -46, -42, -53, 26, 100, 106, -108, 114, 21, -128, -44, 10, -48, -127, 92, - -73, -86, 52, -21, -74, 32, 22, 50, 32, -17, 47, -44, -34, 108, 115, -62, 95, 9, 5, - 51, -48, -115, -20, 72, 0, 20, -119, -33, -87, -87, -55, 56, 97, -65, 99, 116, 75, -77, - 126, 81, 47, -42, 117, -6, -36, 94, -91, 23, 101, -110, -107, 17, -77, 78, 45, -49, 61, - 15, -64, -106, -111, 57, -13, 105, 26, -126, 60, -41, 12, -124, 36, 114, -95, 87, 15, 84, - 65, -84, -97, -53, -40, 4, -78, 25, -127, -68, -48, 29, -67, 68, 108, -39, 81, -104, 7, - 42, -56, 63, -119, -80, -33, 38, -38, -106, 86, -78, 48, 101, -74, -126, -96, -75, -76, -3, - 40, 116, 73, 46, 85, -16, -39, 73, 15, -94, 89, 107, -9, -79, -93, -33, -70, 68, -122, - -122, -48, 95, -7, -65, -85, 102, 62, -28, 78, 23, -128, 65, -84, 48, -69, -111, 14, 122, - 22, 80, 105, -23, 53, 48, -93, 95, -38, 97, -4, 75, 21, 31, -104, 31, 89, -35, -40, - -20, 95, -103, -122, 85, 5, 91, -23, -29, 51, 64, -125, 73, 118, 36, -123, -81, 98, -91, - 101, 120, 54, -103, -126, -20, 119, 7, -6, 55, 82, -56, -42, 17, 64, 83, 27, -64, 69, - -84, 0, -14, -3, -35, -23, -77, -21, 123, 52, -101, -31, 61, -115, -13, 111, 115, 7, -64, - -103, -74, 2, 12, -27, -73, 37, -97, -71, -119, -27, -123, -72, 4, 74, -105, 96, -117, 118, - -56, 25, 118, 88, 53, 90, -95, 101, -52, -81, 22, 49, 84, -41, -77, 25, -111, 25, -104, - 63, 6, -65, 118, -22, -37, 123, 18, -75, -105, -117, -127, -70, -17, -110, 3, -42, -93, -36, - 45, -46, -66, 22, -7, -27, 17, 36, -78, -22, -53, -77, -123, -17, -89, -108, 63, 56, -16, - 104, 104, -38, 4, 14, -116, -101, 29, 22, -109, 3, -82, 88, -66, 29, -58, 90, 70, -98, - -96, -90, -10, -39, -125, -62, -78, 56, 126, 86, -6, -112, 32, 56, 46, -84, -82, -89, 96, - 103, -24, -103, 109, -69, -62, 52, 27, -114, 61, 89, 93, -59, 28, 54, -12, 5, 120, -57, - 48, -104, 31, -44, 93, -8, 88, -81, -102, -94, 80, 40, -101, -5, 43, -22, 100, 7, -99, - 44, -106, -113, -128, -103, 77, 43, -97, -7, -44, -68, -128, -120, 39, 119, -91, -29, -63, 18, - 96, 36, 41, 37, 119, -49, 61, -39, -37, 43, -29, 77, 68, 103, 63, -90, -104, 57, 99, - 107, 30, -3, -37, -120, 101, -72, 3, 34, 43, -23, 83, 73, -66, -68, -83, -2, 119, 39, - 79, 78, 78, 59, 4, -91, 57, -83, -127, 95, 4, 41, 42, 65, 1, -29, 92, 47, -30, - 12, 66, -33, -28, 37, 89, 60, -78, 88, 70, -125, 56, 20, -69, -72, -74, -65, -48, -94, - 3, -114, -69, -6, 118, 100, 62, 0, -103, 117, -108, 80, 38, -18, 123, -78, -57, 19, 108, - -95, -72, -95, -32, -31, -82, -26, 8, 123, 107, -32, -57, 112, -57, 73, -83, -9, 117, -31, - -60, 116, -66, 22, -48, 43, -59, 89, -65, 36, -15, -46, 46, -20, 122, 64, -104, 11, -69, - 125, -2, 67, 26, 3, -99, -31, 77, -104, 71, 15, 64, 72, -68, -15, -25, -116, 122, -40, - -44, 86, -51, 65, 126, -7, -48, 106, 55, -4, 0, -127, 27, -42, 4, -43, -13, -3, 107, - -77, -74, -86, -107, -47, -120, -40, -92, 81, -48, -128, -33, 46, -98, -77, -4, -94, 53, -46, - -90, 48, 92, 22, -32, -21, 99, -63, -26, 58, 44, -23, -63, 31, 95, -34, -60, 94, 114, - 22, -32, 73, -105, 126, 31, 23, -112, 92, 101, 21, -69, 69, 74, -49, -52, 41, 11, -72, - 62, 111, 107, 61, 11, -127, -36, 116, -117, 73, 3, -7, 37, -41, 116, 51, -40, 66, -9, - -52, -98, 81, -113, 53, 119, -6, -101, 0, 55, -50, 67, 19, -31, 117, 5, 34, 16, 89, - -116, -58, -67, 89, 13, -38, 112, -53, 122, 64, 9, -120, -72, 39, 28, 100, 111, 26, 64, - 7, 108, -39, 115, 85, -84, 90, -108, -2, -21, -72, -44, -45, -28, -89, -37, -18, 13, 49, - 78, -40, -102, -119, -77, 42, 107, -60, 83, 54, -62, 68, 25, -71, -93, 30, 22, -93, -117, - -97, -78, -84, -17, 122, 23, 73, -105, 37, -74, -75, 7, -114, -13, 122, -81, -125, -65, 11, - 38, -116, -21, 55, 40, 109, 20, 58, 61, 81, -9, -29, -19, -65, -61, -61, -21, -92, 28, - 13, -108, -28, 117, -123, -9, 27, -111, 68, -122, 91, 10, 95, -98, 8, -88, 96, 9, -22, - -57, -17, 66, -112, -9, -24, 18, 41, 106, 77, -127, 30, -110, -25, -48, 81, 84, -118, -105, - -79, 100, -114, -69, -73, 54, -96, 71, 106, 118, 93, -102, -113, 26, -64, -22, 39, 38, 57, - -24, -71, -118, -79, -59, -19, -47, -123, -18, 71, 58, -27, -84, 40, 0, 12, 116, 37, -70, - 32, 115, 119, 41, -112, 113, -113, 60, 76, -98, 13, -14, 88, -20, 103, 89, -30, 82, -124, - 22, 67, 5, 98, -14, -42, -95, -15, 48, 35, 51, 98, -89, -125, -53, 1, 29, -126, -120, - 78, -20, -51, -46, 126, 114, 29, -73, -75, -66, -8, 83, 115, 94, -27, 76, -73, 29, 57, - 82, -68, -44, -94, -116, -63, -110, 26, -14, -30, 99, -46, 116, -85, -115, 24, 5, 81, 30, - 118, 50, 45, -80, -95, -66, -22, -91, 94, -13, 48, 72, 62, -35, -51, 5, -123, 118, 76, - -81, 82, -111, -95, 71, 26, -7, -22, -96, -33, 50, -13, 112, 40, -12, -61, -75, -38, -40, - -53, 52, 49, 3, -116, -96, -127, -90, 9, 90, 58, 4, -58, -93, -18, -80, 105, 48, 1, - -27, -117, -105, -60, -34, 83, -92, 39, -98, -43, 90, -45, 57, 27, -109, -97, 20, 41, -85, - 73, -11, 67, -114, -110, -21, 43, 75, 101, 32, 16, -96, 75, -80, -32, 86, 43, -117, 109, - 87, -100, -102, -101, -85, 51, -106, -46, -52, 113, 56, 37, -34, -60, 123, 126, 38, -116, 120, - 31, -83, -29, -84, 71, -119, 56, -110, -108, 54, -40, -44, -86, 126, -121, -50, 120, 42, 95, - -98, 68, 54, 39, 86, 111, -123, 54, 123, 115, -93, -4, 60, 124, -52, -57, 59, 125, -13, - -36, -99, 12, 114, 60, -36, -69, 14, 24, 104, 88, -117, 68, -23, 107, 58, -122, 40, -63, - -71, 21, 36, 67, 34, -49, 32, 3, 15, 123, -59, -80, -62, -12, 77, -49, -66, 64, 27, - 33, -106, 5, 115, 44, -62, 110, 35, -73, 38, 122, -122, -72, -117, 105, 69, -91, -42, -35, - -21, 78, -123, 36, -109, -73, -47, -53, 45, 76, -13, -66, 38, 41, 60, -20, 16, -57, 74, - -113, 35, 98, -89, -81, -123, -93, 33, 105, -52, 43, 7, 58, 99, 50, -77, 6, 61, 31, - -6, 109, -78, -88, -85, -81, 70, -39, 109, -26, 96, 27, 14, 0, -97, -4, -87, -101, 68, - -53, 0, 119, -51, 66, 28, -10, -110, -49, 107, -68, 32, 23, -27, 79, 29, 125, -100, -14, - 49, -122, -9, -46, 37, 82, -15, -108, 101, 90, 13, -95, 46, -7, 12, -112, 43, -109, -40, - 18, 14, 112, 20, -53, -59, -47, 85, 29, -119, 90, 9, -33, -53, -124, -22, -101, 20, -56, - -53, 97, 117, -101, -108, -7, -103, 71, 123, -96, 58, 75, -66, 77, -5, -32, -1, 117, 2, - -34, -12, -98, 100, -99, -68, -9, -1, 65, -119, 117, 33, -107, -122, -34, 42, 75, 93, 18, - 77, -15, -86, 121, -79, 63, 103, 9, 31, 48, -121, -44, 35, 20, -14, 108, 22, 37, 101, - -100, 41, -22, 38, -5, -39, 12, 35, -14, -99, 1, -48, 71, 45, 119, -3, 102, -15, 85, - -14, 27, -13, 11, 11, 48, 57, 122, 19, 121, 29, -71, -15, 14, 45, -64, 28, -37, -22, - -20, -28, 99, -91, -27, -29, -48, -65, -91, 31, 24, 119, -66}; + 25, 25, 39, -39, -111, 109, 89, 4, -42, 55, 36, -78, -76, 125, -122, 104, -9, -19, -116, + 26, -116, 47, -94, 29, 55, -13, 113, -102, 60, 14, -114, -99, 74, -72, -2, -65, 26, 5, + 78, 64, -10, -52, 46, -12, -29, -83, 109, 5, -44, 48, -96, 56, -91, 28, -92, -95, 66, + 124, -28, -10, 41, -112, -10, 57, 36, -3, -46, 120, -67, -93, 6, -50, -101, 62, 76, 37, + 111, -32, -121, -87, 34, -66, -26, -110, -49, 93, 41, -89, 111, -47, 110, 59, -73, -25, -117, + -31, -38, 44, -27, 42, -67, -121, 52, -101, 105, 50, -120, -84, -80, 49, -107, -34, -29, -91, + 89, -102, 5, 41, 49, -26, -16, -1, 0, -67, -62, 84, 43, -5, 20, -43, 69, -46, -82, + -104, -40, 109, 20, -113, -92, 61, 72, 62, -59, -67, 12, -19, 79, -25, 125, 76, -93, -3, + -58, -19, -28, -94, 106, -53, -29, 126, -79, 101, -56, 77, 43, 81, -33, -22, 88, -67, -65, + 63, -34, 115, 79, 103, -38, 102, 104, 104, -75, 52, 119, 52, -123, 26, -123, -124, -113, 20, + -81, 81, 95, -76, -23, -108, 43, -110, -29, -58, 2, -92, -67, -3, -29, -60, -81, 77, -48, + -96, -65, 65, 20, 79, 31, -6, -111, -39, -44, -9, -67, -19, 81, 73, 78, -76, -14, 31, + 51, 33, -70, -101, -95, -95, 14, 42, 13, -121, 62, -111, -85, 10, 111, 13, -125, -85, 89, + 44, 79, 104, 36, 50, -81, -124, -93, 59, -35, 108, -93, 117, 82, -105, 56, 72, -23, 83, + 77, -11, -1, -91, 30, -89, -58, -55, -93, -123, 71, 91, 126, -108, -61, -125, 122, -62, 18, + -60, -126, 65, 31, 90, 39, 53, -106, -23, -17, -42, -28, -92, -71, -73, 74, -108, 44, -42, + -86, -82, -124, -20, 109, 31, 57, -98, -127, -90, 34, 6, -55, 124, 82, 74, 106, -3, -45, + -1, -77, 83, -41, -28, 100, 73, -38, -56, 7, 76, 58, -58, 42, 66, -44, -47, 74, -5, + -23, 28, -33, -85, -49, 95, -49, 4, -21, 122, -91, -61, 47, 97, 18, 75, -20, 50, 13, + -115, 70, 87, 34, -12, 3, -122, -20, -91, 16, -101, 115, 92, -20, 79, -12, -78, 112, 34, + 120, 8, 88, -94, -110, -110, 78, -56, 121, 33, -118, -111, 8, 37, -93, -87, -105, 29, 0, + -28, -48, -61, -31, 77, 105, -92, 109, 11, -22, -39, 16, -94, 88, 83, 115, 106, 85, -97, + 54, -116, -108, 122, -111, -47, -84, 0, -75, -1, -61, -50, -93, -81, -46, 108, -8, -44, -96, + -40, 36, -79, 35, -25, -96, 104, 74, -103, 122, 42, 26, -78, 63, -121, -1, 42, 63, 47, + 76, -31, -33, -1, -128, 14, -53, 91, -11, 82, 41, 86, -86, 37, -32, 45, -91, -20, 112, + -18, -21, -90, -45, -80, -43, 105, 88, 15, -115, 7, -1, -128, 49, 65, 124, -118, 14, 69, + 101, 101, 19, 55, -72, 25, 19, -28, 33, -64, -38, -36, -86, 70, 77, 22, -4, -17, 98, + -25, 61, 76, -31, -84, -20, 58, -99, 100, 53, -94, 51, -127, -39, -109, 100, 54, 46, 59, + 8, 9, -65, -26, -29, -43, -77, -83, 108, 72, 27, 88, -119, -116, -12, 31, 1, 90, -109, + 24, 103, -17, -55, 88, -65, -101, 45, 20, 119, 47, 125, -30, 107, 54, 67, -51, -30, 98, + -67, 30, 57, -43, -73, 98, -124, -104, -53, -71, 4, -47, -101, -92, 85, 101, -28, -126, -37, + 61, 4, 121, -42, 123, 54, -80, -15, -8, -82, -46, 31, 81, -31, -127, 65, -66, -48, -102, + -127, 45, 98, -15, 7, -73, 48, -87, 16, 74, 38, 61, -38, 119, -15, -62, -93, 67, -22, + -97, -11, 32, 26, -45, -57, 38, 79, -74, 44, 85, 16, 57, -113, -92, 42, 69, 102, 15, + -62, 50, -1, 80, -35, -128, -93, -90, 0, -33, -8, -115, -55, -2, 34, 20, -121, 34, 53, + -111, 110, 118, -87, -114, 41, -70, 99, 111, -91, 20, 15, -82, 62, -42, 92, -58, -46, -121, + -91, -12, 39, -42, 60, -43, -99, 86, 75, -128, -77, 31, 52, -44, 78, -23, -24, -49, 50, + 120, -81, -6, 114, 44, 120, 27, 116, 95, 21, 32, 29, -21, -120, -111, -15, -88, -17, -38, + -27, 6, 78, 72, -112, 50, 111, 109, -65, 122, 59, -4, 3, -63, 88, 86, -2, -27, 7, + 107, -4, -27, 23, 84, -105, -4, -21, -128, -122, -76, -27, -86, -73, -119, -1, -23, 124, -49, + 106, 24, 52, -9, 17, -125, -13, -4, 62, -28, 46, -13, -109, 11, -65, -83, 55, -86, 13, + -63, -47, -96, 53, -63, -9, -60, 99, 37, -43, 119, -77, -83, -82, 102, -80, 19, 22, 95, + 52, 6, -52, 20, -93, 95, -85, -66, -4, -33, 53, -65, -48, 42, 123, -78, 33, 14, -81, + 63, -93, -10, 49, -54, 95, -26, 2, 55, 12, -9, -25, 24, -103, 10, 82, 123, -43, -27, + -80, -20, 42, 22, -11, -123, 5, -60, -13, 84, -117, 11, 22, 37, 57, -99, -75, 27, 42, + -92, 120, 56, -75, -39, -110, 1, -23, -86, 5, -104, 9, 59, -6, -55, -7, 121, 72, 62, + -48, -14, 48, -16, -15, -7, 54, -88, -3, 101, -121, 41, 24, 30, -95, 85, -17, 58, 51, + -105, -35, -124, 112, -123, -42, 52, -79, -73, 101, -88, 89, -99, 6, -56, -10, -79, 71, 107, + 9, -2, 86, -22, -108, 42, -88, -78, -28, 34, -19, -86, 20, -50, 109, 106, 83, 15, -82, + -122, 69, 50, 62, 106, -67, 125, 118, -96, -13, -8, 52, 56, 78, 112, -83, -78, 104, 22, + 64, -45, -63, -62, -87, -19, -77, 119, 40, 33, -26, -30, 31, -19, 44, 21, 57, -119, -35, + 6, 120, 35, 10, 22, -113, 96, 123, -83, -77, 34, 87, 41, 3, -96, 89, -57, -124, 108, + 87, -29, -39, -2, -11, 81, 112, 24, 5, 28, -4, -59, -60, -92, 68, -66, -4, -107, 8, + -19, 20, -74, 98, -67, -41, -80, -100, 102, -86, 48, -69, 107, -54, -65, -122, 51, -6, -68, + -51, 93, 12, -4, -79, 61, -68, 80, 81, 61, 51, 95, 5, 56, -73, -33, 62, -65, 3, + -46, 8, -126, 107, 90, 30, -56, 122, 24, -49, -112, 113, -70, 6, -118, -15, -13, 28, 35, + 56, 11, 55, -82, 28, 52, 106, 115, 102, 32, -64, -124, 7, -86, -127, 112, 107, -15, 114, + -39, -109, -42, -42, -104, 115, -116, 26, 97, -10, -72, 47, -3, 3, -20, -125, -27, 53, 99, + -101, -121, 71, 104, -90, -42, -30, -20, -119, -3, -31, -4, 30, -85, -7, -114, 109, 107, 76, + 92, -61, 67, -55, 68, 7, 84, 75, 94, 86, -75, 122, -48, 100, 44, -2, -30, 65, -46, + 76, -14, 78, -36, 18, -122, 14, -75, -56, 107, -8, 27, -71, 124, -32, -113, 42, 45, 32, + 92, -103, 23, 52, -105, -7, -80, 17, 78, -71, -49, -31, 103, -127, -33, 16, 122, 98, -12, + -32, 57, -53, 58, 78, 27, 86, 58, -72, 3, 8, -118, 36, 90, -126, -15, -122, 30, 25, + -67, -95, 26, -75, 8, 115, -116, 108, -57, 70, -46, -45, 56, -28, 57, -21, -96, 58, 10, + 16, 70, 48, -84, -76, -114, 108, -115, -6, -88, -10, -89, -62, -16, 32, -63, -65, 14, 66, + -63, 76, 94, -77, 16, -81, -42, -54, -106, 70, -74, -9, -127, 21, -37, 110, -78, 6, -31, + -125, -85, 107, -93, -38, -3, -128, 80, -59, 55, -76, -29, 36, 66, 60, 79, -94, -53, -4, + -74, 58, -75, -24, 80, 125, 91, 36, -40, 106, -125, 117, 38, -8, 10, 75, -53, -42, 48, + 88, -34, -91, 89, -121, 100, -71, 36, -23, 8, 109, 61, 87, 13, -56, -84, 41, -52, -93, + 72, -101, -74, 87, 39, -35, 71, -70, -127, 126, 62, 0, 4, -27, 104, 36, 109, -70, 110, + -81, 77, -20, 37, -77, -115, -33, 109, -114, 100, -6, -87, 120, -27, -84, -27, -22, 34, -66, + -34, -19, -5, -11, 60, -36, -66, 86, 20, -12, 47, -34, 34, 17, -5, -119, -104, 83, -103, + -102, 105, 107, -89, 92, 110, -8, -108, -39, 40, 27, -55, -115, 12, 41, 107, -34, -34, 97, + -76, -38, 114, 126, -64, 49, -39, -92, 122, -87, -70, -120, -83, 103, -106, -118, -127, 26, -43, + 74, 27, 12, 4, -127, 13, 9, 31, 44, -102, -45, 107, 82, 1, 35, -59, 3, 91, -82, + -75, -71, -8, 78, -14, -127, 94, 3, 19, 95, -63, -110, 17, -24, -37, 93, 94, 123, -109, + -42, 54, -46, -83, -126, 12, -22, -100, 115, 10, 34, 1, -8, 43, 103, 104, -3, 71, 73, + -6, 14, 103, 10, -64, 56, -109, -100, 71, 101, -48, 79, -78, -117, 14, 82, 106, 114, -42, + 55, -5, -66, -102, -40, 86, 8, 90, 23, 104, 81, -93, 30, 63, 124, -91, -52, -27, -22, + -50, 37, -127, 35, -96, -100, 55, 16, -2, 49, -108, -43, 86, 106, -93, -70, 103, 46, -23, + 41, 13, -122, 94, 60, 114, -112, -121, -113, -58, 26, -89, 95, 61, 29, 114, 24, -23, 9, + -20, 122, 56, 18, -111, 78, 67, 59, -98, -50, -14, 10, -41, 82, 83, -28, 95, -11, -20, + 20, -4, 68, -69, -4, -80, -125, -115, -116, 48, -52, 19, -113, -54, 35, 22, -120, -125, -26, + -63, 86, 88, -97, -85, 78, -64, -30, 81, -93, 63, 77, -34, -28, -35, -77, -52, -63, -84, + -78, -60, -72, -62, -76, -3, -32, -93, -110, -10, -98, 113, 95, -42, -114, 59, 4, -34, 111, + -91, 48, -74, 3, -62, 14, -19, 100, 6, 81, -84, -7, -30, -39, -103, 52, -115, -81, -76, + -56, 39, -126, -51, 96, -92, -73, 4, 7, -90, -4, 83, -107, -107, -32, -42, 87, 39, -46, + -26, 34, -37, -68, -118, 80, 75, -41, -42, -117, -71, 0, 21, -39, -111, 111, 89, 10, -98, + 56, 112, -58, 10, -65, 69, -58, 70, -64, 47, 56, 108, 115, -59, 30, 95, 93, -80, -55, + 108, -1, 105, 110, -4, 3, 44, -8, -97, 100, -40, 18, -122, -86, 79, -41, 45, -110, 71, + -33, 38, -9, -108, -27, 18, 46, -90, -65, -18, 86, 67, -16, 111, 72, 20, 58, -39, -53, + 2, 12, 14, 115, -34, -35, -62, -81, -110, -111, 62, -55, -37, 107, -95, -90, 108, 53, -126, + -106, -100, -33, 101, -42, 54, 49, 104, 52, 126, 122, -6, -99, 82, -34, 8, -109, 5, -81, + -80, -70, -7, 106, -35, 10, 78, 78, -46, 31, 39, 118, 5, -59, -102, 40, 11, -94, -68, + -20, -36, -111, 40, -37, 88, 120, 40, -40, 1, -12, 26, -81, 83, -118, 52, -98, 62, -83, + 40, -108, -4, -1, 57, 73, -90, 20, -86, -18, 114, 14, 62, 85, 110, -125, -55, -126, 107, + 114, -113, 39, 120, 123, 94, 59, -91, -53, 117, -123, 58, -66, -64, 86, -69, -59, -79, 8, + -62, -122, 106, 108, 64, 74, 93, 55, 57, 51, -17, 81, -87, 11, -80, -87, 6, -29, 31, + -87, 123, 110, -99, -15, -2, -56, 53, -112, -80, -33, -112, -99, 32, 61, -79, 116, -80, 62, + 116, -12, -85, 35, 40, -54, 124, -118, 18, -80, -27, -40, -62, -111, -31, 126, 102, 71, -105, + -26, -56, 97, 21, -105, 88, 93, -80, -120, -50, 115, -95, -38, -44, -113, -118, -50, 126, 17, + -87, 33, 45, -62, 28, 74, 68, -87, 119, 19, -100, 99, 74, 38, -88, -106, 19, -40, 80, + 116, 70, 124, -84, 44, 108, -91, 86, 88, -120, -101, -117, 85, -57, 97, 105, -85, -52, -17, + -48, -96, 9, 16, 77, -128, -118, -55, 92, 24, 64, 25, -92, 98, -45, -37, 58, -37, 77, + -47, 118, 15, 69, -111, -121, -23, -1, 35, -37, 43, 46, 50, -52, 15, -19, 66, -38, 3, + -31, 9, -49, -10, 101, -36, 96, -54, 56, -52, 126, 123, 115, -37, -68, 102, 24, -19, -83, + -64, 49, 86, -77, 29, -67, -40, 34, -89, 63, 33, -103, -97, -10, 90, 22, 114, -20, 34, + 96, -22, 52, -70, 94, -65, -27, -119, 78, 30, -65, -124, -57, -63, -122, -57, -102, 89, 19, + -18, -60, 32, 29, 106, 17, -57, -91, 50, 83, 122, 107, 12, 37, 65, 60, -44, -60, 93, + -96, 87, -33, 80, -108, 5, -79, -108, 68, -67, -101, -96, -111, 123, -97, 30, -33, 94, -49, + 15, -10, -74, 49, 122, 20, -61, 29, 53, 74, -41, -105, 75, 52, -118, 49, -89, -23, -22, + 22, 19, 29, -124, -119, 108, -4, -29, 95, -98, -69, 104, 43, 12, -102, -11, -3, 54, 72, + -67, 124, -51, 13, -45, -41, -9, -28, -101, -58, 18, -121, -91, 29, 28, 122, -70, -74, 7, + 109, -40, -122, -73, -74, -24, -127, 12, -46, 53, -29, -126, 4}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_mult_data.h index ecdff0b7..83baecf3 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_mult_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_mult_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_2_output_mult[4] = {1433646258, 1431851272, 1425239838, 1410280738}; +const int32_t transpose_conv_2_output_mult[4] = {1359593517, 1360656977, 1365784228, 1367247032}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_ref_data.h index 19d551f7..b3149d3a 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_ref_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_ref_data.h @@ -1,98 +1,98 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_2_output_ref[2016] = { - -5, 3, -38, -46, 17, -11, -21, 16, -8, 3, -74, -11, -26, -21, -22, -38, 6, 20, -3, 42, -17, -5, - -57, -15, -11, -24, -9, -39, -19, 4, 1, 30, 7, 26, -47, -9, -27, -1, -44, -42, 7, 6, 0, 23, - 26, 32, -23, -5, 3, 17, -19, -27, 2, -18, -3, -5, -3, 5, -59, -32, -4, 11, -25, -44, 16, 6, - 3, 42, 21, -3, -51, -25, -15, -9, -39, -29, -5, -5, 4, 23, -16, -5, -47, -20, -7, -25, -21, -58, - 22, -9, -35, 24, -17, -4, -55, 1, -17, -5, -8, -49, 2, 7, -6, 41, 12, -10, -46, -5, -4, 5, - -29, -51, 3, -27, -1, 19, 2, 24, -68, -19, -9, 9, -31, -36, 5, -6, 1, 9, 0, 2, -63, -18, - -16, 1, -40, -46, 18, -9, -3, 22, -5, -16, -62, -10, -4, -17, -18, -60, 0, 6, -18, 15, 6, 41, - -57, 14, -19, -16, -36, -60, -44, -3, -4, 6, 32, 27, -51, 36, -15, 43, -18, -50, -28, -9, -1, -20, - 43, 38, -62, 17, -37, -27, -5, -41, 1, 27, -38, 14, 14, 57, -37, 31, -18, -13, 10, -50, 14, 15, - -21, -13, 50, 48, -58, 20, 0, 8, -33, -52, 6, 14, -21, 35, 71, 29, -35, 46, 0, -14, -25, -35, - -27, 5, -19, -12, 22, 38, -25, 7, -2, -39, -3, -29, -9, 12, -16, -13, 23, 44, -36, -6, -33, 9, - -39, -37, -23, 11, 9, 4, 38, 39, -37, 42, -52, 9, -37, -1, 12, 66, 6, -26, 17, 64, 0, -22, - -21, -1, -8, -62, -20, -2, 6, -10, 27, 17, -54, 37, -32, -7, -39, -38, 5, 38, -17, 5, 34, 37, - -30, 24, -16, 0, -24, -52, -41, 3, -25, -18, 90, 82, -51, 30, -29, 43, -34, -50, -33, 28, 34, -25, - 15, 76, -51, -11, 3, 62, -10, -39, -36, 45, 30, -36, 54, 77, 8, 3, -50, 3, -47, -51, 11, 31, - -38, -19, 29, 52, -39, 50, 5, 23, -15, -52, -17, 6, -15, -20, 61, 80, -41, 31, 1, 67, -11, -38, - -74, 8, 5, -60, 51, 62, -28, 45, -13, 29, -10, -50, -35, -19, -33, -35, -4, 44, -81, 4, 10, 16, - -19, -78, -48, -17, -8, 10, 101, 25, -65, 48, -4, 6, 14, -69, -77, 29, 30, -28, 27, 83, -52, 51, - 7, 17, -14, -87, -47, 12, 2, -9, 57, 8, -38, 24, -18, 25, -16, -42, -51, -2, 47, -15, 37, 31, - -29, 16, -62, 61, -36, -96, 5, 7, -37, -1, 52, 60, -78, 65, -32, 12, -24, -32, -63, 40, 13, 40, - 55, 77, -49, 45, -12, 64, -21, -42, -27, 34, 10, -85, 58, 52, -59, -22, -47, 9, 5, -52, -24, 23, - 22, -24, 61, 22, -33, 23, -1, 26, -8, -70, -35, 36, -6, -37, 76, 66, -50, 51, -3, 30, -35, -76, - -49, 12, 11, 2, 63, 74, -53, 62, -19, 32, -29, -83, -40, 30, -2, -16, 70, 60, -59, 49, -42, -25, - -37, -76, -24, 34, 32, -9, 57, 55, -45, 49, -7, 40, 23, -34, -82, 10, 59, -38, 50, 63, -36, 44, - -23, 29, -44, -43, -2, 13, 20, -60, 53, 24, -32, 6, -2, -7, -18, -58, -13, -20, 22, -30, 70, 40, - -70, 19, -42, 42, -43, -44, -6, 34, 33, -24, 62, 48, -29, 11, -39, 33, -1, -59, -44, 51, 21, -58, - 61, 106, -56, 31, 25, 65, -45, -68, -97, 14, 22, -31, 51, 70, -56, 33, -30, 87, -39, -67, 11, 22, - 12, -18, 95, 56, -83, 4, 5, 43, -43, -76, -20, 16, -3, 14, 62, 64, -87, 16, -5, 28, 2, -51, - -78, 2, 42, 35, 67, 38, -63, 9, -1, 47, 13, -54, -46, 33, 38, -38, 34, 84, -36, 32, 13, 11, - -34, -34, -80, 46, 25, -11, 64, 80, -76, 42, -70, 36, -56, -38, -27, 52, 24, -28, 53, 85, -26, 29, - -31, 41, -46, -75, 11, 27, 37, -19, 86, 75, -64, 35, 10, 16, -54, -74, -27, 4, 21, 31, 48, 37, - -45, 8, 18, -14, -45, -56, -28, 66, 26, -27, 52, 86, -37, 38, -23, 12, -11, -56, -53, 40, 33, 2, - 13, 32, -49, 39, -2, 90, -19, -119, -28, 8, 14, -55, 60, 41, -81, 42, -29, 55, -36, -34, -20, 22, - 15, -51, 71, 65, -27, 2, -47, 64, 14, -65, -40, 47, 22, -84, 27, 52, -45, 32, 9, 49, 19, -81, - -41, 10, 14, -75, 47, 89, -118, 27, 20, 58, -77, -62, -15, 9, -16, -30, 101, 45, -2, 34, -21, 80, - 4, -59, -15, -5, 26, 19, 63, 57, -54, 16, -8, 39, -76, -41, -65, 52, -19, -12, 83, 73, 14, 38, - -16, 38, -26, -57, -36, 19, 39, -35, 75, 47, -80, 26, -1, 65, -54, -60, -14, 31, -3, -6, 64, 56, - -53, 58, 4, 19, -13, -52, -12, 22, -14, -17, 50, 70, -61, -7, -39, 43, -59, -81, -35, 13, 17, -43, - 61, 50, -49, 69, 12, -24, -20, -62, -25, -21, -36, -14, 41, 29, -21, 40, 8, 54, -17, -53, -70, 35, - 81, -62, 36, 88, -64, -21, -48, 60, -11, -31, -82, 29, 26, -33, 50, 45, -35, 34, -7, 62, -12, -78, - -39, 33, 3, -30, 43, 39, -56, 7, -29, 81, -14, -51, -34, 46, 43, -49, 70, 37, -40, -29, 6, 58, - -12, -50, -21, 21, 4, -52, 8, 57, -45, 41, -42, 50, 40, -39, -17, 3, 14, -9, 71, 11, -23, 35, - 18, 61, -70, -50, -26, 35, -23, 3, 58, 74, -22, 36, -6, 100, -20, -58, -32, 45, 6, -65, 62, 69, - -66, 25, -41, 88, -55, -30, -23, 54, 28, -83, 51, 27, -22, 48, 4, 58, -44, -44, -54, 16, 24, -34, - 67, 41, -41, 9, 0, 26, -6, -66, -30, 37, 54, -21, 51, 91, -47, -13, -18, 24, -31, -53, -46, 3, - 13, 27, 38, 41, -46, 11, -20, 3, -36, -79, -35, 9, -25, -5, 68, 34, -29, 64, -35, 52, -19, -85, - -32, 42, 13, 4, 23, 48, -64, 10, -19, 37, -34, -48, -36, 41, 22, -42, 19, 48, -39, 9, -10, 80, - -48, -50, -32, 19, 26, 3, 76, 70, -42, 9, 1, -3, 19, -49, -40, 21, 1, -16, 52, 41, -81, 6, - -40, 72, 1, -76, 4, -9, 24, 16, 48, 32, -98, 21, 38, 11, -2, -58, -32, 16, 20, -3, 67, 64, - -40, 26, -38, 29, -20, -75, -17, 3, 4, -34, 65, 50, -54, 70, -11, 74, 0, -110, -60, -3, 7, -3, - 41, 67, -78, 30, 37, 28, -35, -47, -60, 12, 23, -42, 44, 57, -52, 25, -21, 22, -74, -50, -8, 31, - -1, -57, 68, 17, -19, 23, -14, -16, 14, -54, -73, 22, 41, 6, 63, 48, -43, 29, -48, 57, -3, -53, - -32, 40, 0, -20, -14, 68, -69, 17, 11, 25, -1, -51, -88, 16, 25, -37, 22, 69, -55, 33, -11, 7, - 2, -92, -46, 5, -6, -24, 33, 43, -60, 56, -16, 79, 25, -30, -50, 33, 12, -30, 17, 73, -58, 3, - 2, 26, -81, -78, -24, -6, 14, 12, 93, 28, -50, 27, 31, 27, -12, -54, -58, 35, 41, -49, 68, 56, - -37, 20, 13, -1, 5, -37, -76, -33, 25, -4, 68, 39, -47, 27, -5, 27, -31, -38, -57, 30, -28, -47, - 62, 63, -18, 47, -27, 39, 31, -96, 5, -10, -19, -26, 5, 45, -73, 26, 2, 37, -33, -76, -29, -9, - -2, -12, 36, 38, -53, 50, 31, -9, 14, -67, -52, 2, 36, -11, 99, 59, -60, 21, 0, 43, -21, -36, - -16, -2, -21, -19, 97, 50, -32, 33, -24, 51, -42, -78, -43, 11, 50, -60, 72, 74, -91, 33, 11, 63, - 4, -50, -32, -15, 5, -47, 43, 38, -72, 13, -24, 16, -15, -73, 15, 26, 0, -39, 33, 31, -39, 26, - -25, 50, 16, -53, -85, 10, 33, -10, 21, 29, -76, 20, 1, -7, -45, -47, -9, 50, 47, -5, 86, 82, - -39, 35, -7, 56, -39, -86, -50, -49, 5, -14, 72, 26, -83, 35, 48, 35, -30, -91, -13, 29, -9, -21, - 68, 91, -61, 4, -55, 17, -66, -53, 2, 23, 22, 5, 27, 9, -44, 40, -7, 43, -10, -43, -30, 1, - 76, -43, 58, 52, -81, -10, -41, 40, -55, -57, -31, 27, 9, -38, 34, 55, -17, 28, 4, 52, -38, -36, - -8, 14, 32, -17, 103, 63, -54, -12, 2, 34, -26, -51, -29, 19, 32, -45, 79, 71, -9, 50, -28, 60, - -1, -50, -87, 51, 45, -47, 8, 89, -31, -1, 12, 45, -38, -37, -50, -9, 84, -48, 115, 23, -23, 32, - -7, 29, -12, -59, -16, 3, 18, 8, 101, 46, -64, 25, 14, 42, 16, -68, -54, -1, 21, -44, 42, 7, - -45, 46, 5, 57, -70, -18, -34, 22, -4, -13, 92, 76, -15, 29, 2, 19, -64, -41, -27, 60, 53, -18, - 56, 118, -9, -11, -53, 6, -20, -16, -36, 31, -4, 4, 14, 64, -21, 41, -19, 11, -54, -34, -53, 47, - 42, -3, 40, 58, -62, 22, -1, 30, -37, -64, -14, 30, -4, -47, 89, 36, -43, 7, -11, -2, -1, -85, - -32, 12, 20, -34, 56, 58, -52, 22, 42, 36, -23, -45, -57, 4, 49, -84, 76, 66, -36, 29, -16, 15, - 18, -48, -50, 0, 15, -14, 55, 63, -69, 17, -39, 48, -26, -38, -17, 17, 7, -43, 15, 10, -91, -11, - -4, 94, -31, -47, -12, 8, 28, -31, 90, 81, -40, -12, 25, 42, 8, -39, -56, 9, 20, -28, 76, 49, - -60, -5, -52, 35, -12, -58, -24, 3, 10, 9, 72, 50, -39, 35, 40, 35, -4, -58, -58, -7, -8, -18, - 60, 39, -35, 29, -3, 4, -38, -85, -82, 22, -54, -9, 18, 35, -40, 53, 2, 30, 3, -65, -86, 33, - 15, -7, 73, 34, -67, 33, -2, 49, -63, -60, -3, 19, -24, -75, 44, 50, -57, 5, 39, 41, -30, -74, - -23, 10, 22, -25, 111, 89, -72, 28, 23, 62, -11, -66, -28, 20, 33, -37, 98, 38, -76, 12, -23, 20, - -9, -58, -19, 17, 9, -11, 75, 59, -46, 27, -20, 38, -21, -40, -48, 16, 12, -9, 83, 26, -60, 29, - -41, 53, -36, -32, -61, 24, 10, -57, 37, 35, -42, 31, 15, 25, 13, -29, -68, -18, -5, -78, 59, 16, - -2, 49, 2, 35, -31, -13, -76, 25, 12, -103, 55, 24, 16, 25, -30, -11, 1, -47, -45, 4, 15, -61, - 57, 48, -11, 37, -17, 36, -5, -23, -60, -18, -6, -38, 12, 3, -8, 9, 1, -17, -16, -20, -54, -21, - -8, -64, 37, 10, -28, 32, 4, 65, 9, -10, -78, -16, 10, -66, 53, 38, -10, 6, -27, 35, -16, -6, - -89, 15, 8, -58, 44, 37, 0, 12, 15, 29, -7, -12, -61, 23, 12, -76, 68, 62, 13, 29, -2, 35, - -1, -4, -89, 24, 69, -78, 51, 40, 25, 33, -62, 39, 0, -5, -48, 24, -11, -63, 15, 44, -7, 28, - -12, 55, -23, -19, -93, 33, 34, -104, 24, 45, 22, 25, -16, 45, -14, -39, -27, 18, 8, -104, 38, 52, - -19, -3, -3, 28, -9, -24, -48, -10, 36, -31, -7, -4, -26, -24, 16, 37, -12, -24, -54, 9, 35, -28, - -8, 27, -29, -24, 4, 17, -12, -29, -51, 16, 24, -5, 16, 27, -40, -32, 10, 2, -15, -37, -42, -25, - 8, -11, -4, -2, -27, 8, -9, 6, -22, -16, -48, -19, 0, 10, 24, 12, -21, -5, 1, 9, 9, -27, - -38, -34, 35, -20, 23, 5, -16, -7, -16, 38, 2, -36, -29, -11, 9, -10, -21, -2, -55, -50, -4, 27, - -24, -33, -55, -24, 21, 7, 16, 1, -22, 15, 0, 10, -21, -33, -37, -23, 28, -14, 26, -9, -14, 9, - -8, 36, -22, -37, -37, 6, 18, -30, 11, 4, -36, -15, 10, 16, -16, -31, -37, -26, 28, -18, 26, 1, - -34, -12, -15, 14, -7, -26, -38, -14, 18, 11, 11, -1, -31, -31}; + -28, 28, -38, -6, -22, 39, -24, 54, 23, 60, -56, 8, -29, 21, -22, -5, -46, 42, -8, 23, 15, 22, + -23, 29, -21, 39, -31, 6, -16, 59, -21, 17, 36, 39, -11, 3, -3, 29, -39, -6, 11, 29, -38, 20, + 28, 30, 0, -6, -11, 26, -20, -10, -14, 11, -32, 28, 40, 11, -16, 37, -10, 15, -25, -8, -9, 24, + -13, 46, 20, 44, -39, 18, 9, 24, -27, 39, 7, 29, -10, 45, 29, 16, -17, 14, -14, 10, -12, 14, + -27, 37, -7, 40, 22, 28, -8, 23, -18, 46, -31, 2, -2, 23, -22, 20, 42, 28, -26, 8, -23, 13, + -22, 7, -32, 27, -30, 36, 27, 28, -26, 25, 0, 12, -15, -9, -23, 37, -32, 36, 19, 31, -8, 16, + -7, 33, -39, 19, -18, 66, -26, 55, 15, 45, -13, 28, 36, 10, -23, 13, 5, 0, -38, 58, 59, 80, + -29, -3, -8, 15, 13, -6, -5, 51, -13, 67, 19, 60, -25, 6, 22, -2, -19, 6, -20, 27, -27, 74, + 47, 57, -26, 9, -7, 0, 28, -13, -63, 2, -11, 82, 25, 49, -42, 23, -22, -3, -22, -22, -33, 11, + -19, 44, 38, 56, -63, 7, -35, 33, -44, -23, -43, 5, -32, 19, 72, 51, -66, 19, -15, 28, 1, 0, + -32, 36, -39, 41, 43, 30, -31, 48, -25, 30, 13, -9, -39, 35, -19, 31, 48, 71, -36, 6, -16, 28, + -22, 6, -50, 24, 16, 30, 48, 37, -30, 42, -39, 21, -2, -6, -64, 34, -31, 34, 43, 79, -50, 17, + 2, 6, 22, -23, -36, 21, -45, 59, 45, 43, -20, 25, -9, 23, 23, -6, -71, 57, -48, 72, 68, 66, + -44, 35, -20, -21, 15, 24, -69, -13, -44, 88, 76, 23, -4, 19, 1, 6, 16, -21, -75, -79, -108, 77, + 46, -18, 15, 47, -2, -27, 62, 52, -68, -40, -39, 54, 66, 26, 17, 50, -29, 14, 3, -20, -27, -47, + -18, 74, 85, 50, 24, 19, 39, -4, 10, -41, -7, -38, -71, 110, 68, 22, 11, 23, -30, -29, -16, -21, + -52, -11, -26, 102, 32, 13, -4, -4, -55, 2, 16, -37, -72, -40, -40, 77, 46, 27, -27, 57, -34, 16, + -4, 11, -82, -23, -21, 69, 25, 40, -14, -9, -23, 24, -18, -4, -52, 55, -3, 73, 70, 50, -13, 33, + -42, -26, -8, 4, -106, -51, -38, 96, 43, -2, -9, 6, -22, -4, 35, 7, -54, -60, -59, 41, 76, 26, + 6, 10, -8, -18, 50, -35, -40, -99, -54, 73, 86, 25, 73, 25, -34, -41, 23, 31, -26, -28, -3, 127, + 40, 31, -14, 16, -48, -45, 34, 18, -66, -84, -16, 43, 69, 16, -43, 19, -23, -6, 15, 10, -21, -49, + -9, 37, 80, -7, 11, 3, 5, -16, -8, 5, -53, -32, -54, 54, 61, -18, 2, -15, 10, -30, 42, 45, + -50, -27, -19, 31, 82, 22, 0, 0, 0, 10, 32, -17, -65, -24, -66, 67, 75, -13, -2, 6, -46, -14, + 36, 9, -60, -21, -21, 69, 70, 71, 6, 36, -17, 25, 30, 6, -58, -9, -14, 48, 69, 41, 30, 27, + 13, -35, -2, -27, -74, -36, -72, 125, 71, 12, 13, 52, -19, -30, 25, -7, -39, -73, -46, 104, 55, 33, + 23, 21, -41, 0, 17, 4, -55, 3, -33, 65, 76, 54, -10, -24, -28, 3, 25, 33, -44, -84, -47, 59, + 65, 52, 17, 5, -39, 25, 48, 2, -43, -29, -68, 72, 82, 44, 15, 49, -24, 23, -7, -77, -48, -41, + -38, 83, 74, 61, -26, -5, -33, 2, -2, -17, -34, -9, -13, 43, 83, 17, 30, 25, -24, -17, 50, -27, + -65, -48, -46, 70, 33, 1, 10, 12, -43, -8, 2, -46, -83, -20, -9, 92, 60, 39, 4, 21, -44, -24, + 28, -31, -72, -59, -32, 53, 27, 20, 2, 33, -25, 9, 28, -3, -68, -17, -57, 77, 46, 49, -6, 8, + -37, -17, -12, 19, -74, 2, -32, 65, 33, 6, 17, 19, -36, -64, 64, 38, -65, -66, -23, 75, 52, 46, + 37, 32, -11, -17, -1, 4, -36, -57, -49, 84, 49, 40, 12, -3, -4, 2, -8, -7, -42, -36, -36, 92, + 44, 34, -18, -7, -24, -15, 30, -7, -85, -104, -38, 32, 102, -1, 5, 17, -45, -5, 38, -32, -60, -4, + -12, 29, 89, 35, 3, 3, 21, -10, 34, -4, -71, -71, -81, 90, 69, 13, 23, 33, -40, 4, -4, -18, + -39, -8, -43, 59, 87, -8, 11, 48, -19, 1, 22, 33, -82, -63, -36, 56, 58, 5, 17, 37, 4, -5, + 0, 12, -33, -10, -44, 72, 37, 45, 32, -24, -39, -24, 19, 41, -57, -10, -36, 121, 74, 32, -7, -14, + 7, 14, -22, -12, -31, -101, -55, 67, 102, 38, 17, 3, 13, 6, 14, 13, -21, -4, -60, 79, 41, 14, + 10, 4, -1, 5, -6, -27, -43, -55, -53, 57, 61, 10, 35, 25, -7, -16, 18, -38, -66, -36, -42, 81, + 51, -15, -14, 8, -23, -28, 26, 5, -62, -42, -55, 90, 63, 27, 32, 37, -46, -39, 14, -10, -44, -78, + -38, 36, 79, -15, 15, -4, -41, 5, 27, -15, -64, -47, -16, 48, 46, -24, -3, 40, -14, -39, 45, 37, + -42, -4, -11, 61, 82, 50, -12, -21, -34, -40, 29, -7, -77, -32, 3, 44, 65, 42, -11, 11, -61, -9, + 17, -11, -88, -50, -20, 81, 84, 42, -48, 29, -11, -17, 17, 10, -94, -18, -47, 98, 35, 61, -7, 27, + -2, -10, 21, -25, -44, -54, -55, 77, 80, 59, 50, -3, -13, -32, 18, 57, -39, -71, -57, 109, 64, 38, + 21, 10, -17, 11, 0, -7, -70, -84, -48, 58, 95, 12, 33, 59, -25, -21, 29, 1, -82, -24, -41, 28, + 59, 1, -14, 5, -23, -24, 20, -10, -11, -40, -20, 78, 60, 21, -8, 13, -37, -51, 45, -3, -56, -47, + -46, 97, 66, -26, 25, 15, -21, 13, 25, -23, -40, -77, -70, 56, 47, 0, 15, 44, -19, 32, 29, -19, + -14, 0, -55, 74, 83, -5, 11, 23, 1, 32, 11, -34, -25, -39, -68, 92, 70, 80, 25, 31, -13, 14, + 34, 4, -39, -38, -46, 101, 103, 33, 23, 43, -2, -16, 14, -9, -41, -57, -5, 101, 60, 70, 21, -1, + -28, -14, 35, 4, -56, -25, -64, 95, 47, 23, -9, 12, -20, -16, 13, 8, -54, -92, -47, 64, 64, 10, + 25, -3, -18, 6, 30, -4, -63, -82, -33, 65, 72, 48, 20, 21, -64, -8, 9, -3, -24, -51, -10, 49, + 89, 15, 7, 19, 3, 18, 11, -52, -35, -23, -27, 104, 72, 52, 12, -13, -15, -16, 11, 9, -30, -29, + -52, 95, 71, 16, 4, 29, -43, 1, 31, -40, -22, -6, -41, 77, 56, 88, 52, 36, -28, 10, 6, -16, + -64, -55, -5, 40, 90, 14, -1, 16, -29, -3, 32, 9, -56, 11, -21, 82, 86, 50, 16, 34, 6, -38, + 2, 15, -68, -74, -53, 81, 71, 53, -3, 6, 4, -26, 3, -3, -67, -36, -19, 23, 93, 17, -24, -28, + 11, 18, 32, -33, -53, -77, -105, 94, 87, 11, 25, 25, -3, -27, 30, 4, -64, 5, -54, 49, 45, 36, + 2, -5, -14, 28, -15, 17, -12, -34, 0, 36, 88, 56, -2, -28, -26, 35, 43, -7, -50, -77, -46, 51, + 99, 12, 16, 32, -33, -12, 12, 2, -68, -23, -4, 55, 50, 29, 1, 15, 19, -1, 42, 51, -45, -52, + -46, 102, 74, 39, 46, 60, 6, 3, -9, -32, 3, 4, -29, 80, 81, 54, -17, -3, 29, 4, 22, 9, + -33, -73, -45, 72, 57, 18, 8, 21, -11, 10, 35, -47, -69, -29, -34, 95, 60, 11, -7, 42, -31, 8, + 6, -22, -52, -65, 13, 41, 121, 36, -16, 9, 25, -38, 44, 22, -34, -89, -47, 110, 48, 21, 16, 9, + -12, -3, 0, 9, -52, -53, 9, 107, 71, 15, 6, 30, 10, -24, 24, 27, -15, -66, -36, 32, 61, 30, + 36, 9, -14, -6, -29, -58, -61, -36, -86, 71, 33, -18, -8, 23, 9, 38, -13, 33, -4, -41, -42, 97, + 118, 29, 36, 39, -31, -23, 34, -14, -68, -26, -28, 59, 84, 49, -8, 23, -14, 7, -1, -30, -68, -106, + -26, 49, 78, -23, -26, 33, -25, -12, 58, 18, -16, -15, -47, 5, 79, 39, -6, -9, 9, -2, -1, -11, + -65, -62, -53, 87, 12, 6, -16, 28, -33, 14, -5, -5, -38, -50, -43, 66, 67, 16, 2, 12, -16, -12, + 51, 9, -23, -25, -56, 33, 99, 27, 15, 8, -8, -14, -11, 29, -1, -41, -17, 127, 37, 48, 54, 20, + -5, 0, 0, 18, -68, -20, -71, 74, 51, 30, 32, 36, -38, 17, 21, 33, -41, -40, -22, 78, 46, 11, + 39, 37, -30, 22, 19, 16, -81, -69, -58, 67, 86, 5, -37, 23, -4, -44, 25, 5, -62, -83, -43, 114, + 45, 0, 2, 6, 12, -38, 9, 37, -27, -68, -33, 64, 107, 37, 12, 20, -20, -13, 38, -3, -32, -35, + -58, 60, 66, 16, 34, 19, -28, -20, -5, -8, -43, -72, -32, 71, 47, 15, 3, 16, -21, -4, -27, -26, + -9, -52, -52, 74, 58, 14, -35, 8, -48, 35, 6, -29, -35, -101, -67, 76, 85, 4, 0, 32, -20, 18, + 29, -19, -54, -26, -22, 91, 44, 36, -32, 34, -20, 5, 14, 13, -28, -1, -56, 65, 45, 57, -8, 21, + 12, 21, -4, 20, -44, -35, -73, 54, 105, 26, 63, 37, -37, 3, 50, -5, -81, 21, -58, 99, 57, 31, + -12, 9, -45, -9, 3, -2, -103, -32, -37, 53, 49, -9, -25, 35, -32, 24, 18, -12, -45, -76, -30, 63, + 108, 46, 31, 21, -2, 18, 60, -12, -19, -64, -38, 84, 88, 40, 77, 21, -25, 12, 21, 3, -32, -65, + -56, 94, 98, 51, -2, 54, -6, -12, 45, 8, -69, -38, -29, 53, 53, -16, 18, 7, 5, 18, -18, 19, + -55, -25, -30, 79, 69, 50, -23, 6, -25, 11, 41, -5, -34, -40, -21, 59, 82, 32, 9, 49, -51, -14, + 2, 6, -37, -17, -28, 68, 127, 45, 25, 5, -28, -5, 16, -29, -36, -46, -51, 67, 68, 43, 21, 47, + -3, 32, 30, -4, -49, -60, -28, 59, 121, 30, -12, 47, 4, -64, 71, 20, -32, -84, 41, 36, 47, -8, + 23, 5, -7, -24, 91, -14, -49, -91, -9, 70, 31, 9, 84, 26, -30, -31, 67, -24, -45, -25, 28, 32, + 27, 9, 13, 22, 13, -34, 38, 25, -59, -87, 5, 62, 64, -5, 39, 19, 24, -1, 33, 8, -29, -70, + -7, 22, 63, -24, 33, 15, 4, -19, 81, -9, -17, -79, 21, 22, 71, 16, 24, 16, -33, -2, 75, -7, + -19, -21, 26, 57, 55, 52, 51, 51, 0, -13, 47, 6, -64, -56, 12, 77, 37, -7, 41, 48, 8, -11, + 39, -13, -23, -55, 15, 33, 82, -32, 26, 23, 16, -44, 58, -9, -33, -53, 11, 39, 76, -14, 23, 14, + 8, -37, 68, 24, -25, -10, -10, 47, 25, -13, 9, -12, -8, -34, 64, -12, -4, -56, 24, 52, 75, 0, + 62, 34, 4, 24, 55, 17, 12, -49, 3, 5, 48, 6, 61, 24, 6, 20, 66, 15, 2, -51, -1, -4, + 39, -23, 86, 9, -8, 5, 33, -16, -18, -22, -1, 40, 20, -16, 70, 27, -4, 0, 58, 21, 2, -66, + 25, 3, 49, -6, 61, 23, -9, -13, 45, 13, 25, -13, 29, 23, 42, -9, 72, 6, -4, -3, 51, 3, + -1, -49, 11, 29, 46, -14, 59, 28, 16, 21, 19, 33, 6, -16, -20, 25, 20, 8, 70, 17, -13, -23, + 55, 11, -3, -67, 28, 5, 37, -21, 71, 3, 4, -9, 47, 10, 12, -19, 14, 24, 40, -9, 45, 19, + -6, 18, 49, 21, 21, -29, 9, 32, 34, 2, 63, 32, -6, 7, 29, -17, 5, -33, 7, 36, 19, -18, + 61, 11, 4, 1, 38, 22, 36, -4, 9, 27, 33, 3, 44, 10}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_shift_data.h index 8b037b25..5c084a6c 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_shift_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/output_shift_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/test_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/test_data.h index 3d785ca4..575a0f2b 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/test_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/test_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #include "biases_data.h" #include "config_data.h" #include "input_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/weights_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/weights_data.h index dbcce2c3..4782f04d 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_2/weights_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_2/weights_data.h @@ -1,35 +1,35 @@ -// Generated by test_settings.py using tensorflow version 2.11.0 (Keras version 2.11.0). -// Interpreter from tflite_runtime version 2.14.0 and revision 0.6.0-147738-g1448daa62f0. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_2_weights[540] = { - -89, 121, 80, 79, 61, 67, -57, -34, -44, -73, -110, 19, 39, 32, 15, 117, -118, 55, 79, - -29, -39, -100, 114, 113, 111, -16, -47, 0, 37, 17, -46, 0, 100, 54, -80, 54, 72, 85, - 29, -58, 26, -41, -9, -68, 109, -69, -79, -48, 46, 118, 121, -119, -112, -54, -4, -64, 93, - -101, -60, 116, -121, 55, 108, 44, -102, -90, -40, -64, -23, -105, -20, -108, 122, 127, -22, -34, - -12, 74, 56, 120, 118, -93, -125, 79, 6, -37, -54, 97, 40, 115, -61, 70, 126, 84, -34, - 33, -96, 77, -104, 82, 15, -116, 81, -43, 84, 35, -101, -60, -43, 9, -2, -6, 16, -81, - -77, 66, 1, 99, -82, -83, 43, 7, 6, 42, 21, 99, -45, 72, 52, -118, -19, -124, 94, - 114, 36, -112, -104, 2, 125, 82, -28, 68, 119, 74, -22, -127, 58, 115, -97, 29, 45, -28, - -85, 18, 61, 4, -40, 30, -55, 114, 105, -24, -61, -26, 106, 50, 99, 60, -28, 78, -55, - 85, 72, -50, -49, 25, 63, -117, 1, 114, -96, -84, 37, -63, -4, 118, -20, 104, 85, -25, - -29, 74, 47, -79, -30, 54, -17, 47, 33, -81, -61, 110, -12, 3, -42, 48, 82, 94, -27, - -23, -2, 46, 21, -17, 50, -38, 88, 54, 87, -51, -4, 28, 62, 26, -52, 123, -86, 93, - -31, 31, -57, 93, -65, 35, 62, 33, 110, 116, -64, 38, 48, 77, 58, -126, -45, -25, 126, - -102, 2, 89, -53, -103, 95, 11, 13, 33, 101, 52, -42, 118, 53, -71, -93, -70, 61, 35, - -122, 103, -17, 74, -125, 88, 78, -110, 11, 39, -38, -91, 121, -51, -1, -101, 4, 64, -27, - 13, -84, 2, 6, -26, 114, 84, 19, -124, -7, 81, 95, 48, -38, -52, -127, -50, -121, -70, - -77, -64, -79, 43, -122, 61, 105, -67, -101, 32, 95, -70, -107, -50, -31, 99, -112, 104, 124, - 118, 21, 2, 13, -98, 75, -35, 19, -98, -5, -9, 4, 113, -46, 93, 49, -48, -106, -99, - 76, 66, -121, 12, 122, 22, 75, -51, 97, 19, 27, 35, -30, -40, 113, 25, -112, 13, -90, - -42, -101, -42, 94, 9, -117, 80, 29, 105, -35, 59, -45, 43, 38, -121, 110, 68, -67, 117, - 120, 38, 51, 74, 71, -88, -69, -49, 84, 40, -57, -32, 42, -25, 25, 93, 43, -99, 7, - -76, 47, -115, -76, 58, -24, -74, -16, -61, -62, 89, 5, -79, -38, -116, 4, 6, 34, -20, - -73, 33, 126, 59, -25, -58, -69, 125, -102, 115, 108, 113, 124, 50, -51, 0, 76, 59, -54, - -15, 9, -99, -4, 72, 32, 114, -79, 97, -85, -47, 63, -117, 13, -16, 58, -80, -120, -23, - -12, -24, 111, -72, 39, 75, 25, -24, 88, -109, 61, -36, -30, -119, -36, -63, -60, -62, 41, - 101, -121, -119, -92, -34, 105, 34, 54, 121, 75, 7, 59, -24, 69, 40, 94, -65, -52, -55, - 74, -12, 29, -107, -64, 22, 100, 87, -91, -40, -24, -73, -2, -59, 27, 33, -41, 90, -101, - 103, 94, -15, -92, -63, 58, -93, -40, 101, -52, 122, -76, -104, 19, 64, 105, -114, 30, 3, - -68, 58, -127, 106, -9, -5, -11, 44}; + -119, 91, -123, 121, -74, -92, -47, -13, -111, 8, 30, -33, 29, -55, 83, -112, 94, -65, 107, + -93, 20, -50, 42, -58, -118, 12, -1, 122, -124, -25, -42, -29, 94, -16, 108, 109, 18, 80, + -68, 6, 38, 11, 22, -127, 57, -127, 49, 8, -13, -85, -13, 29, 95, -106, 112, 98, -41, + 73, 52, -123, 12, -90, 51, -112, -103, -64, 4, 121, -115, 19, 6, 48, -73, -37, -127, -16, + 23, 97, 76, -114, 84, -103, -1, -43, 109, 91, 59, 57, -82, -21, 34, -72, -46, -51, 100, + -50, -50, 86, -65, 62, 65, 37, -83, -35, -61, -93, 5, 121, 47, -57, -98, -33, 55, -126, + -81, -14, 39, 108, -51, 37, -126, 78, 36, 103, -16, -39, 75, 92, 114, -116, 5, -8, 15, + -118, 119, 7, -24, 127, 62, 33, 83, -10, -31, 94, -7, 58, 5, 1, -119, -19, -18, -71, + 117, -127, -52, -61, 31, -114, 92, 114, 79, -100, 102, 110, 84, -49, 46, 86, 27, -25, 66, + -9, -110, -34, 103, 83, -59, 90, 121, -102, 92, 42, -104, -73, -108, -68, -57, -113, 66, 96, + 32, -29, -8, -117, -16, 125, -108, 34, -126, -36, -116, -50, -101, 122, 99, -102, 51, -76, 9, + 64, 110, -50, -44, -15, 109, 45, 54, 75, -116, 117, 50, -23, 35, -39, -65, 34, -117, -61, + -59, 125, -62, 88, 80, -75, -110, -104, 74, 76, -53, 54, 66, -63, 124, -60, -126, -89, 7, + -83, -108, -121, -30, 46, -117, -51, -75, -18, -105, 116, -12, -99, -100, 109, 16, 5, -94, -99, + -123, 100, -79, 33, -41, -127, -90, -60, -71, -52, -5, -30, -109, -16, -14, 33, -52, -10, 66, + 89, -7, -1, -90, -7, -103, -125, -110, -16, 89, 48, -115, -64, -43, -43, -118, -105, -107, 43, + 4, -103, -24, -58, -6, -69, 1, 47, 76, -76, 98, 51, 43, -88, 126, 43, -122, 119, -42, + 4, 31, -81, 117, 98, 16, 25, 5, -93, 53, -73, 115, 111, -80, -24, 48, -4, -59, 47, + -34, -55, 44, -118, 42, -68, -31, 106, -30, 104, -108, -73, 99, 71, -110, -98, -83, -26, -91, + -78, 17, 61, -68, 11, 97, -47, 66, 48, 98, 110, 98, -10, 15, -122, 124, -44, 75, -124, + 99, -29, -98, 82, -51, -41, -65, 87, -105, 67, 53, 100, 119, 45, 110, -48, 77, -121, 61, + -85, 109, -41, 80, 73, 105, 70, -48, -53, -77, -71, 74, -90, -100, 34, 85, -41, -125, 121, + -57, 125, 74, 69, -91, 126, -98, -22, 11, 41, -99, 102, 58, -24, 91, 98, -94, 108, -127, + -61, 62, -61, -14, -76, 31, 43, -28, 3, 108, -68, 57, 47, -121, 13, -15, 124, 97, 70, + -5, -77, -59, -17, -89, -65, 53, 96, -37, 27, 39, 104, 93, 116, -113, 79, -88, 50, 6, + 52, -68, 80, 6, -49, 46, 58, -82, 113, -67, -110, 33, -54, 10, 39, 127, -40, 31, -108, + 93, -93, -32, 123, -77, 92, 10, 47, -21, -93, 123, 109, -120, 39, -109, -62, 119, 63, 120, + -63, -36, 30, -89, 107, -46, -95, -24, -23, -69, 125, 26, 34, -81, 51, -105, -46, 61, 60, + 36, 113, -55, -77, -22, 37, -53, 49}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/biases_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/biases_data.h index 4f992137..22d1b25d 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/biases_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/biases_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_3_biases[5] = {17960, -1413, 5838, -27575, -11835}; +const int32_t transpose_conv_3_biases[5] = {-30946, -3975, 11241, -32916, -11728}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/config_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/config_data.h index 7f959280..e30b0e19 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/config_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/config_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #define TRANSPOSE_CONV_3_OUT_CH 5 #define TRANSPOSE_CONV_3_IN_CH 7 @@ -19,7 +19,7 @@ #define TRANSPOSE_CONV_3_OUTPUT_W 2 #define TRANSPOSE_CONV_3_OUTPUT_H 35 #define TRANSPOSE_CONV_3_INPUT_OFFSET 128 -#define TRANSPOSE_CONV_3_OUTPUT_OFFSET 56 +#define TRANSPOSE_CONV_3_OUTPUT_OFFSET 69 #define TRANSPOSE_CONV_3_DILATION_X 1 #define TRANSPOSE_CONV_3_DILATION_Y 1 #define TRANSPOSE_CONV_3_PAD_X_WITH_OFFSET 2 diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/input_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/input_data.h index 62e613d6..2ae5f814 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/input_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/input_data.h @@ -1,13 +1,14 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_3_input[147] = { - 70, 26, -30, 94, 17, -48, -8, -28, 73, 119, 60, -55, -21, -96, 85, -59, -50, -46, 15, 101, -124, - 14, -47, -58, 32, -125, -4, -54, -119, 117, -29, 28, -47, -87, 56, 17, -18, 28, -34, -26, 105, -67, - 77, -88, -44, 63, 108, -46, 73, 84, -45, 50, -74, -63, 56, -61, -38, -52, 35, 48, -22, 47, 40, - 122, 107, 117, -111, -80, -89, -125, 47, -85, -72, -81, 81, -90, -99, -46, 18, -86, -33, -69, -16, 78, - 8, 55, -49, 95, -128, -58, 5, -98, -64, -88, 102, 21, -52, -72, -29, -84, -11, 80, 7, -28, -24, - -96, -26, -102, -98, -121, 87, -90, 11, 105, -40, -109, 124, -12, -63, 81, 55, -42, 122, -56, -47, -27, - 113, 85, 67, -36, -32, 8, 115, -76, -73, 81, -50, 112, 125, -34, -36, 24, -32, 0, 7, -75, -60}; + -2, 66, 39, -108, -98, 52, -103, -109, -115, -34, 54, 62, -119, -35, -88, -23, 16, -105, -8, + -128, -66, -123, 96, -3, 35, 100, -35, 101, 18, 18, 54, -96, 104, 27, -29, -126, 29, -128, + -106, -36, -124, 104, 114, -7, -72, 73, 120, 0, -24, 66, 125, 36, 81, -37, 11, 69, 26, + -30, -99, -70, 11, -78, 22, 21, 121, -111, -25, 117, 56, 81, 99, -1, -102, -35, 107, -94, + 72, -53, 49, 88, 47, 78, -4, 15, 48, -103, 1, 6, -62, 121, 34, -36, -58, 27, 15, + 27, 32, -33, 96, 39, 53, -8, 117, 67, -9, -111, -61, 88, -115, -112, -86, 3, -14, -72, + -87, -26, 12, 38, -39, 32, 101, 34, -107, 15, 44, 51, 60, 65, -45, 115, -66, -24, -34, + 59, -112, -82, 83, -6, -70, 5, -87, -110, -107, 68, -44, -10, -13}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_mult_data.h index dba24f23..0c1c1f98 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_mult_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_mult_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_3_output_mult[5] = {2011473654, 2012718049, 1968745198, 1898573321, 1883479978}; +const int32_t transpose_conv_3_output_mult[5] = {1095109802, 2035503601, 2132011072, 2126829477, 2036664143}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_ref_data.h index abe8268c..8adf5952 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_ref_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_ref_data.h @@ -1,48 +1,48 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_3_output_ref[1050] = { - 127, -8, 60, -43, 73, 85, 91, 42, -86, -40, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 102, 5, 85, -6, 87, 127, 87, 48, -66, -85, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 114, -24, 65, -71, 94, 55, 49, 45, -71, -45, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 109, -6, 40, -15, 72, 100, 91, 76, -52, -50, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 81, 26, 91, 15, 68, 99, 112, 92, -60, -29, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 93, -21, 70, -29, 100, 79, 71, 73, -61, -69, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 127, -12, 48, -37, 57, 49, 85, 51, -68, 3, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 110, -19, 48, -21, 114, 84, 59, 52, -53, -72, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 100, -16, 56, 7, 69, 89, 105, 101, -50, -52, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 121, 14, 73, -24, 127, 115, 36, -12, -67, -83, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 127, 22, 76, -56, 62, 49, 33, 10, -47, 28, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 87, 4, 59, 5, 81, 69, 101, 105, -51, -25, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 111, -1, 47, -7, 75, 114, 114, 76, -72, -62, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 113, 17, 81, -29, 17, 88, 95, 72, -50, 8, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 123, 0, 59, -14, 43, 91, 93, 70, -49, -20, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 57, 3, 75, -14, 80, 74, 75, 108, -36, -37, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 100, 16, 120, -66, 102, 39, 41, 25, -83, -8, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 127, -12, 50, -41, 79, 103, 101, 46, -92, -62, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 114, -24, 47, -3, 127, 76, 89, 65, -81, -84, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 84, -12, 99, -18, 74, 58, 66, 87, -44, -33, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 109, 22, 87, -26, 64, 86, 73, 46, -58, -14, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, - 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36, 89, 53, 66, 8, 36}; + 10, 36, 80, 48, 67, -10, 50, 127, -76, 100, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 4, 23, 48, -28, 69, -14, 69, 77, -9, 45, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 8, 16, 83, 7, 54, -26, 71, 127, -32, 60, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -15, 7, 65, 41, 62, -24, 56, 114, -45, 66, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -25, 5, 53, 47, 70, -13, 56, 127, -81, 127, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -24, 52, 83, 68, 55, -9, 47, 88, -20, 52, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -16, 52, 36, 31, 90, -20, 81, 104, -79, 127, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 12, 52, 42, 48, 104, -37, 52, 109, -91, 78, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -22, 60, 55, 53, 77, -11, 60, 96, -52, 97, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -45, 43, 66, 98, 66, -7, 59, 127, -80, 127, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -34, 57, 44, 62, 86, -26, 73, 97, -71, 122, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 3, 0, 47, 12, 78, -28, 57, 127, -64, 73, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -25, 64, -6, 48, 115, 26, 1, 77, -72, 90, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -7, 25, 34, 12, 83, 0, 42, 108, -52, 81, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -22, 19, 33, 48, 90, -19, 58, 127, -102, 127, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 9, 21, 51, 12, 78, -11, 26, 111, -34, 22, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -24, 53, 44, 39, 75, 15, 45, 97, -47, 105, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -25, 28, 57, 85, 78, -16, 40, 127, -93, 116, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 28, 72, 57, 19, 94, -33, 75, 93, -68, 77, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -2, 74, 18, 6, 105, -11, 58, 52, -45, 72, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + -5, 64, 37, 7, 81, 15, 40, 53, -15, 52, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, + 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47, 7, 62, 91, 5, 47}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_shift_data.h index b3ad9142..806a18e7 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_shift_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/output_shift_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_3_output_shift[5] = {-9, -9, -9, -9, -9}; +const int32_t transpose_conv_3_output_shift[5] = {-8, -9, -9, -9, -9}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/test_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/test_data.h index 8314dc23..575a0f2b 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/test_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/test_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #include "biases_data.h" #include "config_data.h" #include "input_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/weights_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/weights_data.h index 094efba7..69574b97 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_3/weights_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_3/weights_data.h @@ -1,15 +1,15 @@ -// Generated by test_settings.py using tensorflow version 2.14.0 (Keras version 2.14.0). -// Interpreter from tflite_runtime version 2.16.0 and revision 0.6.0-154906-gb2493fdf794. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_3_weights[175] = { - 71, -117, -68, 33, 86, -125, 123, 118, -55, 5, 58, 43, -82, -9, -32, 14, 102, 80, -109, -50, - -50, -35, 110, -50, 73, 30, -89, 19, 103, 127, 10, 73, -102, -108, -123, 65, 74, 23, -17, 55, - 64, 125, -72, 11, -6, -42, 13, -111, -34, -49, 16, -7, 107, -56, 28, 87, 83, -14, 36, 1, - -127, -16, -50, 82, -21, 43, 76, 83, -32, -122, -60, -22, 90, -122, 98, -49, 97, -95, 93, 5, - -30, 101, 5, -68, -127, -27, -31, 22, -76, 121, 125, -110, 125, 35, 121, 120, 52, -63, 18, -33, - 33, 93, -78, 127, -99, 70, 30, -67, -31, 10, -22, 22, -105, -51, 108, -25, -110, -48, 115, -84, - -114, 38, -68, -46, -48, 10, 125, 108, 93, 66, -30, -113, -76, -9, -113, -39, 109, -5, -127, -67, - 65, -56, -86, -43, -78, 127, -19, 108, 97, 54, -97, -44, 62, 28, -73, -91, -122, -56, 127, -127, - 4, 52, 95, 40, 41, -60, -78, -91, -42, 23, 114, 7, 78, 119, 122}; + -8, 101, -52, 47, 117, 12, -39, -5, 39, 50, 72, -66, -65, -74, -37, -73, -47, -29, -11, 101, + 20, 84, 52, 86, -81, -38, -60, -127, 71, 35, 53, 111, 50, -50, -74, 24, -13, 127, 124, -101, + -91, 46, 80, -18, -114, 28, -100, 3, 27, 27, 75, -34, 31, 60, -101, -110, -48, 119, 87, 117, + -94, -50, -27, -111, -100, -85, 97, -37, 116, -103, 36, 17, 15, -16, -39, -64, 123, -61, 126, -57, + -46, 4, -54, -98, 2, 114, 70, -100, 64, 24, -100, 39, 98, 82, -109, 41, 104, -99, 120, 15, + 110, -127, -9, -25, -70, -96, -66, 52, -103, -91, -27, 76, 47, 73, -81, -113, -5, 86, 102, -115, + -54, -50, 23, -13, -48, -14, 127, 118, -42, -96, -65, 81, -48, -14, -49, -2, -13, 84, 112, 87, + -127, -101, -54, 16, -22, 69, 4, 84, -56, 44, 47, -44, 13, 68, 113, 44, -72, -79, 114, 96, + -59, 67, 85, 3, 12, 67, 113, -94, 122, -88, 11, 81, -77, -52, -64}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/biases_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/biases_data.h index bed65a6e..ccce2b55 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/biases_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/biases_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/config_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/config_data.h index 183d36c7..dfed4671 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/config_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/config_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #define TRANSPOSE_CONV_4_OUT_CH 5 #define TRANSPOSE_CONV_4_IN_CH 32 @@ -19,7 +19,7 @@ #define TRANSPOSE_CONV_4_OUTPUT_W 3 #define TRANSPOSE_CONV_4_OUTPUT_H 9 #define TRANSPOSE_CONV_4_INPUT_OFFSET 128 -#define TRANSPOSE_CONV_4_OUTPUT_OFFSET 9 +#define TRANSPOSE_CONV_4_OUTPUT_OFFSET -3 #define TRANSPOSE_CONV_4_DILATION_X 1 #define TRANSPOSE_CONV_4_DILATION_Y 1 #define TRANSPOSE_CONV_4_PAD_X_WITH_OFFSET 0 diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/input_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/input_data.h index 15cb0251..6e7f1c4f 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/input_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/input_data.h @@ -1,42 +1,42 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_4_input[672] = { - -62, 2, -77, -117, -82, 98, 120, -25, -45, -18, -62, 13, -2, -59, 120, 23, -84, 6, -67, - -119, 63, 53, 38, -53, -39, 109, 86, -38, -123, -99, 25, 4, -27, -63, -119, -24, -79, -47, - 1, 39, -60, 93, -47, 31, -23, 30, -72, 85, 66, -94, 69, 108, 121, -108, -34, 29, 0, - -105, -69, 118, -7, 56, -68, -119, 25, 63, 114, 18, 14, -3, -69, 114, 4, 112, 71, -3, - 75, 55, -93, 61, 27, 108, 35, 62, -121, -40, 126, -52, -106, 38, -18, -73, 46, -16, 94, - 102, 113, 125, -16, 65, -69, -118, 123, -47, -119, -99, 66, 51, 84, 2, 95, 102, 5, 72, - -83, -68, 126, 7, 92, -124, 33, 45, 17, 76, -7, 55, 107, 23, 121, -55, -79, 119, 60, - -54, -116, 10, 115, 77, 112, 80, -102, 57, -123, 40, 73, 27, -101, -101, 35, -36, 96, -22, - 58, 99, -60, -2, -3, 33, 101, 54, -108, -9, 5, 68, 82, -3, -74, -11, -12, -53, -95, - 64, -42, -51, 5, -90, -85, 110, -106, 50, 85, -100, -43, 17, -49, -113, -43, 107, 63, 57, - -122, 90, 105, 9, 113, -88, -65, 1, 2, 93, -117, 30, -4, -37, -101, 35, 79, 17, 34, - 26, -114, -124, 85, 93, -111, -90, -84, 56, 112, 37, 1, -93, 22, 21, 57, -108, 51, -28, - 126, -71, -17, -111, 1, -29, 100, 67, -120, -73, -43, 4, -53, -25, 39, -105, -121, -116, 105, - 62, 121, 42, 77, 73, 123, 101, 102, 70, -31, -58, -102, -62, -9, -82, -114, -56, 107, 125, - 79, 61, 63, 2, 81, 67, 116, 54, 32, -120, 62, 41, 106, 24, 114, -122, 49, 72, -8, - -95, 9, -109, -71, -55, 120, -74, -113, -57, -102, -62, -28, -35, 116, 115, 2, 77, -65, -66, - -41, 51, -13, 27, 71, 106, 45, -67, -8, -8, 59, 113, 86, 46, -30, -50, -34, 96, 43, - 16, 13, 64, 20, 63, -87, 36, -97, -67, -113, -43, 34, 76, -10, -75, 65, 55, 79, 96, - -58, 18, 111, 80, 73, -87, -85, 15, 103, -116, -101, -13, -16, 47, -99, 83, 125, -99, -122, - 87, 51, -117, -46, 34, -5, 95, -12, -41, 110, 54, 121, 5, -95, 69, -1, -128, 26, 12, - -16, 93, -87, 14, 19, -59, 11, -89, -2, -57, 107, 66, -102, -91, 28, -36, -12, 110, 17, - 47, -29, -83, 124, 103, 103, -57, 29, 24, -28, -48, -126, 77, 22, -120, -61, -11, 55, 94, - 47, 2, -87, -108, -112, -104, -87, 58, -74, 97, 55, -102, 76, -57, 117, 66, 31, -15, -126, - 104, 72, 73, 55, 38, -28, -68, -30, -87, -13, -84, -12, 8, 98, 80, 111, 111, 37, -128, - 42, -97, -73, 57, 20, -119, 122, 96, -82, -20, 111, 52, 31, 121, 25, -40, -109, 68, 118, - 16, -39, -34, -2, -112, -120, 94, 27, 68, -98, -51, -128, 120, 10, -17, 66, -20, -38, -119, - -25, -20, -90, -103, -105, -122, 74, -98, -128, 36, -104, 21, -124, 33, -19, -55, -106, -40, -4, - -13, 14, -26, 96, -119, -118, -26, 7, -86, 29, -31, 2, 9, -29, 64, 89, -111, 100, -110, - -26, 83, -78, -6, -68, -54, 48, -29, -86, 17, -77, 58, -52, -38, 50, 15, 110, 68, -29, - -67, 117, -99, -25, 71, -118, 30, -126, -80, -56, 38, 90, 93, 29, -112, 12, 13, -52, 64, - -46, 93, -29, -26, 116, 97, 74, -119, -90, -83, 27, -33, 87, -65, 67, 35, 109, -105, 7, - -125, 23, 16, -8, -116, -95, -90, 26, -83, 87, 78, -116, 22, 112, -86, 113, -31, -84, -60, - -81, -90, -113, 88, 48, -1, 2, 106, -4, 46, -88, 19, 111, 107, 97, 70, -104, 54, -112, - 28, -126, -107, -29, -8, 29, 106, 112, -89, 92, -57, -3, -50, -103, 69, -46, 70, 99, -20, - 21, 71, -56, -39, 110, 28, 4, -78, -69, -111, 75, -84, -51, -110, -50, -45, 69, 43, -111, - 115, -104, -95, 90, -67, 119, -118}; + 34, 67, -117, -18, -104, -91, -44, 44, -55, 51, -3, -8, -43, -87, 1, -16, -105, -125, 33, + 11, -89, 90, 97, -67, -113, -78, -96, 33, 77, 74, 48, -66, -112, 14, 88, -97, 109, -80, + -118, -50, -20, 108, 108, 90, 42, -120, -36, -112, -19, -128, 124, -40, -120, -110, 41, -50, 9, + -52, -16, -106, 102, 84, -10, -81, 30, 4, -72, 120, -78, 87, -32, 84, -40, 17, -126, -87, + -72, 34, 24, 1, -111, 68, -33, 97, -54, -56, -74, -82, -125, 100, -20, 58, 21, -60, -7, + 90, -52, 126, 63, -98, 95, 89, -49, -125, -61, 107, -125, 99, -85, -73, 59, 100, 89, -33, + 59, 49, -112, -116, 122, -61, -119, 59, -56, 47, 97, 81, -6, -120, 78, 42, 8, 9, -30, + 41, 72, -124, 17, 35, 75, 113, -67, 83, 115, 105, 117, -116, 66, -41, 93, 98, 72, 84, + 62, -18, -56, -71, 93, 46, 49, -38, -113, -115, 44, 62, -70, -81, -62, -68, 79, -33, -9, + 18, -92, 92, 112, 61, -19, -106, 13, 15, 63, -106, -67, 34, 92, -87, -67, 104, 36, -56, + -59, 107, -5, -57, -34, -67, 88, 120, 12, 25, -35, -101, 102, -24, 67, -100, 72, 32, 90, + -86, 101, -58, -102, -66, 81, 44, 1, -35, -66, -13, 96, -64, 119, 110, -44, -71, 112, 53, + 3, 42, -29, 116, 125, -37, 64, -55, -54, 101, -84, -118, -65, -16, 10, 66, 72, 12, -67, + 0, 32, 88, 47, 31, -93, -68, 89, 0, 27, -69, 87, -61, -40, 94, 68, 70, -128, 24, + 23, 115, -12, 37, 18, 110, -47, 43, -67, -5, 83, -64, 48, -17, -2, -93, 27, -26, 81, + 14, -46, -91, 14, -79, 125, 69, -114, 74, 60, -106, -33, -123, 29, 113, 115, -117, -122, 115, + -42, -16, -36, -85, -114, 22, 50, 56, -66, -103, 13, -31, -42, 86, 116, 14, 101, 125, -95, + 99, -63, -100, 73, -82, -23, -107, -39, -57, -15, -19, -101, -46, -52, -79, 54, 106, -6, 60, + 50, -16, -3, 119, 30, -35, -91, 106, 32, -90, -17, -17, -86, -98, -69, -122, 111, 68, -43, + 57, -11, -64, -39, 22, -121, -24, -126, 20, -112, -8, 54, -95, -17, -48, -19, -4, 65, 34, + -24, 119, 80, -21, 100, -68, 111, -116, -64, -7, 66, 118, 118, -52, -57, 58, 95, -11, 65, + -111, -70, 88, -39, -63, 1, 72, -30, -52, 23, 59, 8, -73, 60, -111, -76, -16, 77, 106, + -84, 62, 1, 45, 7, 24, -73, -48, -60, 64, 26, 44, -94, 124, -67, -94, 40, -111, 77, + -63, -79, -108, 54, 64, -28, 0, -117, 16, -2, 67, -64, 115, 14, -76, -55, 124, 69, -30, + -9, 96, -105, -55, 43, 116, -58, -29, -78, -5, -91, 111, -47, -110, -110, 95, -70, -40, 119, + -19, -49, -84, 101, -59, -37, -57, -38, -58, 87, -100, -35, -105, 46, 7, 44, 0, -95, -4, + 9, -61, 45, -49, -28, -89, -24, -127, 109, 113, 126, 22, 105, -106, 51, 101, -77, -1, -47, + -112, -58, 21, -55, 100, -75, 78, -115, 34, 111, -35, -51, -118, -118, 67, -107, 94, -73, 21, + -8, 68, 87, -59, 66, -72, -23, -11, 11, -57, 19, -93, -121, -55, 5, 42, 17, 48, -51, + -65, -77, -41, 98, 18, 11, -59, -94, -122, 47, -25, -118, -123, -91, -43, -42, -15, 69, 18, + 71, 85, -111, 48, -64, 46, 5, 83, -97, 75, -36, -53, -51, 42, -58, 120, 96, -77, -48, + 48, 71, 100, 22, 104, -95, -27, -100, -4, -118, 8, 110, 66, 1, 125, -7, 100, -95, 35, + 91, 11, -34, -2, 22, 62, 96, -9, -27, -79, 11, 54, -125, 65, 118, -31, -120, 118, -84, + 55, 87, -108, -107, 7, -73, 75, 94, 119, 57, -96, 77, 73, 69, -28, 17, 30, -42, 96, + 4, -60, 42, 56, 71, -121, 1, -90, 116, 84, 116, -80, 6, 25, 17, 3, -87, -43, -48, + -110, -32, 125, -86, -59, -57, 101}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_mult_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_mult_data.h index 8481bb87..f91dced7 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_mult_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_mult_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_4_output_mult[5] = {1860509430, 1864407918, 1864306093, 1851526341, 1864151479}; +const int32_t transpose_conv_4_output_mult[5] = {1172334541, 1173363461, 1173398051, 1172991178, 1170630230}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_ref_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_ref_data.h index 4e63b193..d1def0ea 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_ref_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_ref_data.h @@ -1,24 +1,24 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_4_output_ref[405] = { - 10, 10, -37, -12, -26, 16, 9, 11, -23, -39, 12, -1, 28, 46, -28, -6, 41, -57, -17, 6, 49, -28, 6, - -5, 10, 17, -6, 46, 22, 17, -11, 63, -53, -87, -44, 16, 39, 48, 18, -11, 51, -62, 11, -21, -20, 16, - 85, -66, -43, -3, 57, 42, -21, 12, 8, 76, -59, -26, -11, -46, 3, 80, -98, -63, -24, 108, 43, 37, -57, - 14, 74, -60, -1, 6, -63, 12, 66, -74, -55, 27, 61, 43, 38, -4, 20, 48, -74, 2, -38, -84, 21, 34, - -31, -52, 11, 76, 47, 35, -41, -6, 66, -42, 10, -40, -42, 19, 76, -35, 9, 11, 74, -20, 3, 2, 73, - 27, -26, 5, -42, -21, 35, 13, -11, -4, -6, 36, 43, 62, 30, 24, 29, -7, -11, -27, -13, 10, 20, -15, - -27, -15, -8, 32, 13, -27, -37, 20, -14, 10, 58, 2, -16, 58, -34, -49, 13, 65, 43, -14, -42, -30, 35, - -25, 8, 0, -61, 14, 70, -53, -69, 11, 64, 67, 4, 7, 49, 78, -2, -47, -34, -34, 22, 41, -55, -52, - -16, 50, 45, 1, -35, -12, 64, -47, 7, -36, -18, -29, 79, -85, -49, -18, 23, 31, 20, 25, -2, 36, -22, - 17, -19, -51, 14, 51, -38, -51, 0, 70, 34, 50, -8, 18, 29, -28, 23, -24, -9, -8, 40, -30, -69, -29, - 24, 12, -7, 15, 44, 81, -41, 45, 20, -51, 34, 79, -26, -46, -2, 61, 33, -14, 59, 37, 48, -29, -32, - -48, -9, 55, 22, 8, -19, 21, 6, 63, 33, 13, 39, 26, 11, 15, -46, -10, 9, -8, -33, -23, -13, -1, - 8, 12, -39, -40, 10, -5, 38, 56, -9, -18, 40, -62, -42, -3, 43, -14, -28, 9, -31, 82, -44, 33, -16, - -8, 28, 54, -37, -17, 21, 7, 51, 68, -22, -13, 30, -50, 16, -32, -38, 52, 72, -17, -61, -5, 57, 43, - 12, -37, -22, 22, -63, 9, 20, -38, -21, 97, -40, -58, 44, 29, 64, 12, -47, -21, 71, -40, 30, -58, -73, - -5, 54, -102, -61, -46, 77, 42, 47, -21, 49, 16, 3, 13, 12, -49, 53, 61, -68, -49, -10, 54, 65, -18, - -50, 18, 68, -50, -10, -7, -52, 18, 73, 2, -2, 78, 91, 44, 25, -13, 27, 34, -37, -13, -80, -29, 52, - 17, -5, 17, -1, 43, 61, 51, -13, 22, 29, 30, 1, -29, -10}; + -18, 42, 2, -2, -12, -47, -9, 1, 16, -23, -5, -12, 14, -46, 37, -23, 16, 23, -10, 60, -15, -72, -2, + 48, 23, 15, 7, 4, -50, 51, 16, 42, -20, -6, 9, 2, -2, -17, 46, 48, 27, 24, -12, -41, 35, 12, + 39, 24, -25, -16, -62, 38, 64, 49, 53, 65, 0, -40, 17, 73, 38, 58, 11, 89, 33, -39, 14, 37, 58, + 64, 61, 17, 55, 27, 26, 0, 119, 7, 20, 79, -37, 33, 70, 17, 110, 31, -52, 52, -11, 24, 26, 75, + -33, 35, 25, -13, 11, 53, 7, 112, 50, -17, -15, -13, 33, 18, 51, 20, 25, 37, -12, -38, 2, 51, 74, + 45, 0, -49, 14, 15, 27, 24, -16, 19, -34, -10, 45, -21, 39, 43, 12, -14, -46, -8, 1, -8, -18, -27, + -16, 27, -22, -35, 37, -30, -12, 11, -18, 21, -50, 10, 36, 30, 27, -18, 52, -55, -56, 26, 24, -33, 32, + 21, -13, -27, 30, -34, 63, 13, 82, 75, -23, 16, 97, 41, 55, 69, 21, -37, 55, 19, -5, 26, -6, 54, + 39, -26, 8, 94, 3, 73, 92, -8, -26, -16, 18, 14, 26, 2, 51, 57, -16, -48, 47, 95, 16, 47, -19, + 8, -45, 52, 13, 17, -5, 27, 26, 9, 3, 32, 68, 35, 51, 5, -9, -43, 7, 47, 71, -18, 46, 28, + -23, 2, 59, 28, 1, 95, 5, -35, -31, 73, 17, 5, 26, 28, 62, -3, -24, 49, 60, 32, 48, 18, -59, + 10, -20, 21, 36, -37, 25, 8, 9, 62, 10, 38, 65, 1, -10, -36, 14, 18, -3, -7, -46, -33, 39, -17, + -19, 11, -27, -39, 28, -1, -24, -29, 17, -4, 9, 68, 41, 55, -57, -34, 39, 2, -37, 11, -3, 26, -46, + 38, 44, 37, 13, 55, 34, -5, -20, 44, 77, 24, 40, 24, 47, 13, 71, -67, 46, -31, 4, 55, 0, 18, + 38, -47, 19, 45, -38, -42, -33, 45, 33, 21, 26, 12, 31, -13, 48, 20, 43, -21, -13, 44, -17, -14, 21, + 31, 64, -26, -25, 19, -24, -17, 8, 3, -27, -13, 42, 9, -20, 69, 27, 65, 68, 17, 83, 16, -11, 22, + 70, 38, 102, -14, -59, 40, 52, 66, 54, -9, 59, 11, -7, -16, 18, 55, 48, 37, 42, -14, 42, -18, 55, + 18, 3, 32, -22, 12, 41, -16, 64, 52, 19, -7, -19, 14, -22}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_shift_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_shift_data.h index 5a7723b3..11f3cc0f 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_shift_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/output_shift_data.h @@ -1,6 +1,6 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include -const int32_t transpose_conv_4_output_shift[5] = {-11, -11, -11, -11, -11}; +const int32_t transpose_conv_4_output_shift[5] = {-10, -10, -10, -10, -10}; diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/test_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/test_data.h index 7de543ed..575a0f2b 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/test_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/test_data.h @@ -1,5 +1,5 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #include "biases_data.h" #include "config_data.h" #include "input_data.h" diff --git a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/weights_data.h b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/weights_data.h index eea9ab06..f207a754 100644 --- a/Tests/UnitTest/TestCases/TestData/transpose_conv_4/weights_data.h +++ b/Tests/UnitTest/TestCases/TestData/transpose_conv_4/weights_data.h @@ -1,82 +1,82 @@ -// Generated by test_settings.py using tensorflow version 2.15.0 (Keras version 2.15.0). -// Interpreter from tensorflow version 2.15.0 and revision v2.15.0-rc1-8-g6887368d6d4. +// Generated by test_settings.py using tensorflow version 2.18.0 (Keras version 3.6.0). +// Interpreter from tensorflow version 2.18.0 and revision v2.18.0-rc2-4-g6550e4bd802. #pragma once #include const int8_t transpose_conv_4_weights[1440] = { - -98, 47, -84, -108, 21, 63, 28, -24, 20, -117, -1, 123, -78, -73, -109, -126, 119, -48, 78, - -69, 102, -1, -114, 24, -52, 119, 59, 91, 109, 14, -4, -57, -125, -9, -25, -120, 0, 88, - -65, 90, 21, -121, -4, -101, -47, 123, 50, -49, 73, 66, 74, -11, 111, -93, 80, -10, 36, - 88, -18, 17, -7, -39, -53, -84, 62, -95, -61, 93, -109, 34, -122, 68, 99, -109, 98, 12, - -113, -75, 62, 67, -34, -17, -66, -109, 42, 118, 10, -111, 60, 121, -112, 21, 79, 94, 23, - -40, 118, -88, 30, -125, -21, -27, -31, 115, -112, 68, -81, -33, 97, -21, -77, -98, -6, -2, - 78, -56, -81, 123, -3, 20, -28, 57, -92, -14, 63, 38, -93, 87, -39, 70, 22, 60, 71, - -17, 121, -116, -70, -49, 124, 49, -43, 103, -14, -8, 51, 123, -73, -95, -47, -30, 118, -68, - -16, 49, 73, 121, -92, 74, 80, -61, -14, -71, 84, 65, -40, 9, 73, 123, 63, -69, -54, - 105, 16, 61, 55, 18, -31, -35, 101, 127, -32, -16, 115, 12, -66, 5, -33, 121, 88, -91, - -86, -83, 123, 111, 85, -8, 11, 44, 64, -20, 99, 122, -99, 50, -39, -93, 46, 62, 58, - -43, -78, 23, 3, -96, 77, 116, -54, 72, -76, -33, 26, -124, 81, -88, 120, -49, -108, 53, - 67, 82, 46, 97, 17, 108, -41, -90, -52, 29, -117, -51, -23, 127, -32, 107, 26, -61, -110, - 55, -65, 110, -98, 59, 123, -33, 101, 42, -64, 86, -12, -90, -31, -36, 63, 25, -113, -84, - 74, 14, -76, 4, -15, 80, 117, -39, -37, -60, -76, 84, 64, -40, 107, 40, -1, 78, 110, - 120, -69, -7, 110, 48, 14, -125, -75, 56, 80, -101, 99, -68, 86, 1, -2, 37, -52, -124, - -91, 12, 106, -104, 66, -125, 81, -14, -35, -56, 45, -112, 119, -76, -48, 114, 7, -37, -107, - -3, 74, -49, -30, -114, 114, 117, 26, 32, 125, 89, 15, -29, -104, -25, 6, -41, 54, -5, - 52, 0, 66, -17, -127, -27, 88, 44, 13, 6, -72, -111, -90, -40, -119, 1, 51, 13, 102, - -35, -8, -116, 43, -30, 114, 117, -105, -62, 101, -30, 108, -17, -21, -106, 81, -113, -127, 67, - 103, 61, 49, -105, 87, 102, -7, -28, -107, -56, 101, 47, 24, 15, -67, 7, -15, 53, -35, - 29, 32, -96, 118, -67, 44, 60, 120, 25, 67, 124, 72, 8, 90, -19, 110, 39, -120, -12, - 31, 16, 102, -40, -89, -87, -52, -50, -27, 78, 45, -56, -110, -6, 122, -27, 103, 44, -77, - -76, -107, 0, 54, 15, -63, -99, 90, 71, -94, 61, 27, -56, -108, -112, -24, 33, -77, 52, - -26, -104, 62, 43, 111, 10, 15, -105, 45, -122, 68, 24, 76, -119, -27, 22, 105, -100, 74, - -87, -27, -110, -44, -100, 98, -24, -61, -49, 50, 45, -49, -62, 103, 2, -36, 105, 102, -11, - -35, 103, 41, -39, 16, -1, 10, -23, -18, 11, -94, 112, -46, 110, -25, 0, -69, -44, 110, - -44, 50, 46, 75, -31, 93, -23, 118, 105, -18, 93, 73, -60, -70, -42, 58, -82, 72, -91, - -45, 7, 104, -10, 69, 30, 106, 78, 107, -58, 9, -56, -23, -121, -106, 87, 107, -1, -22, - -116, -116, 45, 75, -6, -99, -98, -127, -67, 103, 125, 60, 83, 33, 48, 14, 67, -112, 44, - -55, -70, 24, -36, 74, 122, -94, -122, 125, -114, 20, -70, 20, -46, -65, -11, 88, -60, -118, - -83, -47, 38, 58, 46, 45, -38, -63, 36, -123, 67, 10, -103, -68, 100, -67, -91, 103, -106, - 17, -68, 33, 63, -52, -100, -99, 91, -2, -86, -105, -84, -34, 15, 19, 79, 19, 21, -110, - -61, 59, 89, 78, 31, -87, -83, 127, 43, 29, 54, 107, 35, 57, 38, -43, -4, 40, 56, - -70, 125, -19, 81, -70, -72, -4, -96, 80, 48, -24, 44, 96, -30, -19, 34, 101, 82, -20, - -15, 86, 10, 7, -73, -126, -92, -110, 63, -123, -48, 80, 1, -23, 3, 121, -42, -62, 84, - -92, 105, -57, -35, 68, -46, 77, -54, -124, -87, 17, 7, -10, -3, -118, 125, -10, -66, -106, - 17, -119, 117, -102, 26, -78, -25, 112, 21, -51, 6, 76, -101, -110, 0, -87, 0, -13, -91, - -92, -74, 67, 17, 68, 110, 22, 87, 13, -69, -109, 38, -41, -35, -42, -106, -116, 107, 27, - 125, 94, 82, -71, -93, -67, -12, 86, 78, -15, 91, -30, -64, -30, -100, 119, 113, -69, 47, - -28, 103, -125, 2, -62, 52, -58, -24, 4, 102, -108, -25, -10, 114, -92, 115, 45, 69, 53, - 90, -33, -97, 43, 57, -89, 7, 39, 123, -2, -54, -82, 7, 115, -65, -72, -119, -91, 14, - -75, 13, -45, 120, 68, -11, 100, 58, -6, 46, 50, 6, 63, 9, -44, -30, 81, -50, 31, - 23, -17, -89, 91, 88, -73, -63, -13, 98, 8, -64, -108, -50, 115, 86, -108, 118, -100, 66, - -90, -96, -76, -14, -21, -70, 12, 65, -97, -46, -10, 95, 119, 55, 55, 41, -47, 87, -81, - 44, -84, -17, -94, 16, -6, -35, -25, 66, -59, 73, -54, -126, 43, -5, -103, -33, 5, -90, - 69, 93, 25, -45, 88, 91, 45, -127, -108, -37, 67, -37, -115, -101, 117, -48, -42, -20, -103, - 93, -60, -49, -61, -24, -67, 37, -88, -105, -70, 121, 57, 124, -120, -86, 101, -62, -70, 94, - -23, 38, -70, 58, 1, -30, 35, -54, 104, -123, -77, 76, 3, 7, -78, 54, -45, 68, -117, - 20, 111, 110, -68, 17, -10, -17, 91, -6, 64, -14, 5, -70, -19, 120, 100, 120, -71, 50, - 109, -5, 104, -102, 114, 59, -67, -54, 57, 122, -102, -46, -3, -9, 26, 20, 52, 25, -111, - 40, -13, -127, -100, 78, -127, -72, -23, 81, -88, -70, 59, 73, 3, -105, -89, 101, -33, -26, - -125, 30, 63, 50, -21, -18, 9, 30, 13, 6, -81, 74, -58, 61, -127, 112, 115, -93, 5, - 15, 77, -42, 125, 109, -107, 87, -120, -33, 20, -126, 4, 5, -116, -121, -59, -98, -15, -12, - -62, 46, -70, -3, 111, -107, -107, -123, -64, -114, 3, -11, -34, 61, 38, 30, -125, -50, 45, - 75, 116, -84, -98, -105, 96, -104, -75, -50, -53, 37, -85, -88, 20, 0, 18, 113, 6, 57, - 109, -108, -32, -38, -51, -27, 3, 48, -96, -28, -72, -46, 32, -4, 74, 106, -27, 30, -34, - -12, 51, 24, 24, -42, 64, -44, -3, -74, -105, 52, 54, -85, -97, -52, -84, 72, -25, 104, - 0, 58, 36, 5, 89, 38, 81, -95, -72, -55, 109, 18, 31, 126, 60, 102, -22, 1, 21, - -126, 63, 94, -88, 26, 53, -109, 65, 55, 111, -63, -6, 21, -100, 35, -32, -98, 5, 66, - 102, -116, -15, -29, -118, -86, -2, -64, -71, 19, -93, 16, 23, -95, 106, -90, -94, -102, 28, - 0, 76, -107, -24, 42, -100, -125, -54, -6, -32, -43, 121, 43, 119, 50, -2, 85, -49, -116, - -104, 33, 31, -77, -87, 70, -52, -108, 1, -38, -54, -103, -32, 62, -78, -71, -121, 28, 73, - 83, 59, -53, 38, 9, -8, 51, -47, -63, 31, -8, -36, -16, -97, -86, 120, 68, -71, -116, - 10, -50, -31, -117, -86, -83, -108, -31, -113, -70, -92, 92, -78, 7, 33, 118, -75, -123, 109, - 87, -100, -76, -103, 6, -72, 124, 5, 90, 108, 116, 74, -127, -107, -20, -3, 85, 80, -19, - 1, 2, 75, 28, 29, 83, -95, -38, -93, 27, -73, -9, -105, -56, 68, -118, 72, 0, 28, - 101, -22, 2, 77, -121, 98, 59, 63, -84, -44, -75, -40, 121, 55, 98, -43, 45, 44, -85, - 27, 55, 69, 30, 66, -13, 5, -114, -4, 102, -23, -60, -44, -88, -105, 55, 90, 38, 6, - 78, -104, 42, 32, -85, -50, -94, 60, 30, -98, 5, -22, 99, 53, -50, 43, 70, 76, 12, - 61, -4, 42, -44, -115, -72, -125, 28, 83, 42, -50, 59, 57, -126, 40, 21, -112, -12, 52, - -114, -59, 32, 107, 88, -87, 119, 83, 68, 10, 77, -108, -110, 22, 48, -101, -2, -67, 97, - 31, 51, 10, -2, -40, 21, -88, 56, 112, -115, 65, 47, -90, 25, 21, -15, -24, -30, 33, - -108, 1, -26, -30, -43, 93, 121, 88, 48, -74, -50, 105, 61, 6, 20, -41, 87, 106, 70, - -71, 77, 94, -61, -105, -74, -74, 108, -48, 48, -12, -43, -64, 66, -125, -35, 59, 23, 16, - -75, 50, -73, 62, -24, 109, -36, 42, 11, -106, -85, -82, 28, 50, -75}; + 81, -20, -55, -38, 84, 1, 87, 106, 9, 124, -26, 42, -81, -24, 49, -57, -63, 16, -107, + -92, 104, -101, 6, 44, 45, 68, -35, -87, 48, -97, -27, -99, 54, -27, 119, 86, 35, 60, + -120, -107, 7, 108, -74, -24, 26, -92, 24, -7, -28, -76, 82, -98, 35, -99, -122, -17, -94, + 6, 40, -51, -99, -68, 36, 90, 79, -36, 86, 38, -39, 97, 12, -73, -56, 127, 29, 63, + 125, 42, -84, 88, 104, -37, 112, -8, 125, 2, -84, -107, -77, -95, 105, 46, -42, -101, -96, + -95, -121, -47, 89, 107, -29, -115, 100, 74, 46, -24, -17, 9, -111, 97, 124, -22, 123, 27, + 126, -34, -19, 25, -119, -120, -111, 23, 46, -24, 20, -53, -99, 113, -20, -59, -117, -33, 47, + -11, 2, -46, -30, -72, 107, 30, -79, -103, -109, -97, -113, -13, -100, 122, -13, -25, 121, 122, + 126, -18, 101, 100, 9, 103, -98, 9, 112, 19, 100, -29, -108, 54, 45, -125, 41, -59, -123, + 64, 7, 13, -12, -41, -123, 66, -3, 43, -105, -101, 27, -18, -114, -25, 52, -54, 24, 90, + 118, 91, 67, 54, 15, -30, -38, -7, -100, 123, -93, 59, -23, -107, 105, -74, 71, 127, -29, + 59, -30, 94, 109, -33, -7, 60, -63, -102, 99, 96, 3, -101, 34, 52, 29, -39, -16, 76, + -111, -74, 115, 34, -78, -10, -111, 105, -16, -52, 24, 6, 118, 47, 7, 50, 24, 107, -54, + -15, -55, 14, 123, -12, 29, -7, -35, 7, 38, -20, 109, -94, -48, -92, 45, -79, 125, -39, + -22, 60, -103, 115, 66, -32, 23, 39, -106, 9, 64, 68, 38, 25, -12, -52, 81, 0, 109, + 115, 57, 43, -72, 20, -3, -8, -14, -124, -5, 93, -38, -73, -49, 112, -4, 80, 81, 67, + -118, -72, 42, 1, -127, -15, 91, 34, -67, -107, -91, 111, 100, -5, 121, 38, -39, -22, -86, + -6, 80, -46, -117, -126, -96, -4, 59, 109, 95, 102, 53, 85, -91, 68, -52, -66, -78, -13, + -116, 45, 21, 119, -60, 94, 108, 87, -91, -69, -10, 96, 125, 13, 106, -29, -67, -2, -79, + -54, -82, -62, 101, -105, 92, 64, 66, 122, -9, -1, 47, 12, -5, 39, -70, 20, -74, -34, + 18, -103, 23, -125, 96, -44, 117, -83, -117, 104, -67, -30, -106, 36, 87, -50, -15, -50, 69, + 61, 70, 81, -23, 29, 71, 27, -77, 118, 104, 105, -32, -11, 70, -18, -28, -103, -108, -127, + 56, -17, -116, -18, 108, 102, -101, -93, -38, 98, -120, 38, -102, 86, 71, 45, 2, 5, -107, + -100, -87, 2, -44, -39, 90, -104, -9, -111, -107, -22, -106, 47, 1, 51, 37, 9, -32, -61, + 16, -75, 121, -99, 122, 91, 116, -24, 86, 94, -15, 61, -124, 112, -98, -99, 51, -99, 98, + 53, -34, 124, -45, -101, -75, 75, -80, 3, 8, -118, 99, 26, -78, 111, -125, -26, -2, -17, + 14, 120, 80, 117, 75, -102, 9, -32, 40, 106, 40, 33, -86, 70, -51, 6, 50, 68, 36, + 116, 18, 93, 56, 65, -28, 30, -71, 123, 24, 114, -82, 66, -34, -26, 49, 51, 57, 98, + -23, 22, 103, -87, -118, 103, -33, -51, 46, 103, -46, 81, 60, -81, -101, -93, -12, -51, -95, + 117, 56, 12, -126, 69, 107, -23, -92, -67, -38, 43, -73, 126, 35, 120, -12, 51, -11, -40, + 16, 109, -51, -118, 59, 102, 106, 14, 83, -125, 89, -103, -118, 50, 34, 22, -63, -72, -67, + -93, -86, 95, -24, -98, 37, -11, -24, 8, 108, -105, 80, -113, 52, -28, -88, 120, -13, 114, + 4, -77, 42, 99, 97, -44, -63, -73, 113, -104, -89, 96, 81, -79, -12, 103, 53, 33, 10, + -53, 81, -112, 89, -14, 8, 44, 97, 124, -119, 43, 123, -22, 21, -127, -109, -91, 64, -51, + -18, 11, 114, -76, -10, 100, -111, 78, -122, 110, -15, -33, -59, 51, 99, 102, 96, 62, 54, + 123, -72, -52, 56, 114, -109, 125, -10, 111, -26, 91, 121, -26, 66, -22, -80, 14, 27, 111, + -86, 99, -55, -119, 84, 116, -113, -17, 80, -36, 36, 112, -124, 43, 116, -18, -125, 56, 70, + 106, 34, -121, 111, 85, 12, -24, -2, -90, -84, 0, -115, -1, -33, 121, -36, 113, 119, -102, + 30, -73, 45, 28, -12, -20, -117, 112, 83, -60, -107, 20, 61, -23, 41, -53, -72, -27, -91, + -106, -57, -68, 53, 112, 46, -85, -115, 14, 115, 74, 92, -20, 52, -63, -53, 44, 5, 92, + -72, 48, 86, -42, -32, 103, -84, -118, -38, -22, -2, -44, -50, 85, -60, 14, 63, 38, 74, + -110, -65, 86, 96, -74, -89, -52, 48, 14, -116, 6, 70, -113, -12, -13, -86, 113, -4, 2, + -117, 56, -103, 53, 93, -63, -75, 27, 118, -25, 97, -61, 16, 27, -46, 63, -33, 7, -97, + 123, 97, 115, 94, -66, -59, -68, 118, -24, 30, -123, 21, 114, -59, -87, -62, -11, -51, 118, + -93, 64, -48, -47, 71, 106, -108, 106, -112, -99, 63, -2, 9, -5, -45, 81, -72, 47, -102, + 3, -40, 22, 87, -93, 29, -53, 9, -56, 41, -125, -31, 123, 111, -100, 86, 37, -45, -123, + -79, -45, 62, -78, 83, 52, 85, -93, 61, -96, -3, 9, 64, 104, 41, -36, 82, -21, -65, + 95, -20, -99, 93, 80, 16, -122, -20, 14, -59, -9, 87, 101, 0, -57, -43, -120, -82, 97, + -7, -15, 7, 99, -94, 127, 12, -100, 24, 47, -115, -113, -44, 88, -30, -63, -15, -59, 112, + 72, 22, 6, 1, -93, -125, -84, 28, -70, 30, 59, -47, 99, 111, 57, -98, 94, -95, -126, + 31, -99, -87, -113, -117, 102, -52, -40, 45, -107, 43, 56, -63, -15, 125, 64, -43, -83, 46, + 16, -118, 3, 107, -40, 12, -100, 54, -51, 1, 99, 96, -98, 55, -30, -44, -72, -31, -34, + -69, 13, 22, -40, 23, 115, -122, 75, 98, -101, 104, 47, 125, 10, 116, -43, 19, 48, 26, + -52, -80, -109, 68, -1, 67, -53, 35, -78, 59, 69, 43, 12, 105, -108, 33, -41, -31, 67, + 2, -69, 30, 108, -60, -66, -49, -111, -59, 125, -88, 86, 13, 83, 46, 116, -86, 102, 45, + -63, 74, -22, -83, -86, -21, 127, -96, 101, -50, 73, -90, -71, 24, 16, -80, 104, 69, 78, + 50, -67, -41, 0, -21, 50, -69, 0, 109, 49, -59, 126, 109, 26, -57, 68, -97, 68, 123, + 44, -26, 127, 90, -42, 35, 74, 87, 116, 100, 91, -43, -7, 18, -98, -39, -109, 52, -109, + -66, 72, 16, 99, 73, 81, -45, 118, -78, -120, -45, -91, 36, 122, -58, -33, 92, 99, -49, + 126, 109, 62, -80, -38, 84, -9, -48, 66, 74, -106, -5, 55, -90, -33, -9, 16, -29, 93, + 89, -125, 5, -91, -42, 32, -76, 47, 23, -20, 54, 61, -117, -55, 109, -69, -94, -114, 54, + -72, 59, 64, 109, -56, 123, -117, -56, 62, 68, 74, -125, 107, -57, -33, -17, 104, 96, 14, + 121, 80, -49, -27, 39, 85, -75, -125, 17, 0, 126, 81, -98, -51, -11, -127, 21, 89, 8, + -96, 126, -91, 120, -30, 79, 79, -55, 117, -105, -30, -109, -17, 5, 60, -110, 49, 29, -125, + 88, 64, 65, -11, 58, -25, -33, 94, -90, 85, 110, 8, -31, -63, -83, 56, 87, 16, -103, + -31, 41, -99, 55, -97, -56, -95, 35, 10, 125, 33, 117, 53, 40, 27, -48, -24, -59, 60, + 46, 101, -8, -108, 16, 72, -20, 58, -42, 105, 2, 48, 98, -54, 39, 35, 47, 63, 60, + 80, -90, -62, 59, 18, 43, 32, -85, -113, 67, 36, -10, -115, 49, -123, 125, -1, -99, 15, + 119, 55, 10, 102, 85, -96, 87, 38, 115, 20, 108, -79, -121, -12, -82, -124, 110, 34, 113, + -41, 27, 3, -50, -104, 98, -76, -18, -101, -14, -39, -71, -56, 117, 10, 111, 38, -17, 47, + -112, 33, -91, 93, 19, 54, 78, 7, 97, 11, 99, -2, -18, -43, 92, 5, -74, -88, -47, + -94, 14, 127, -12, 14, -81, 104, -112, 98, 7, 117, 21, 43, 4, -119, -121, 68, -46, -104, + -62, 15, 17, 34, -110, -76, 5, 80, 5, -1, 118, 102, 47, 53, 8, -111, -88, 86, 6, + 32, 49, 16, -6, 71, -8, -24, 77, 31, 75, 60, -37, -75, 73, 113, -105, 81, 79, 68, + 46, -70, -59, 1, -39, -68, 98, -88, 85, 40, -85, 45, -14, 70, 119, 120, -20, -5, -93, + -57, 62, -77, -74, -62, 68, -50, 42, -59, 39, 73, 6, 97, -113, 42}; diff --git a/Tests/UnitTest/TestCases/test_arm_convolve_1_x_n_s8/test_arm_convolve_1_x_n_s8.c b/Tests/UnitTest/TestCases/test_arm_convolve_1_x_n_s8/test_arm_convolve_1_x_n_s8.c index 1a00bc45..ed3d77aa 100644 --- a/Tests/UnitTest/TestCases/test_arm_convolve_1_x_n_s8/test_arm_convolve_1_x_n_s8.c +++ b/Tests/UnitTest/TestCases/test_arm_convolve_1_x_n_s8/test_arm_convolve_1_x_n_s8.c @@ -113,6 +113,7 @@ void conv_1_x_n_1_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); if (ctx.buf) diff --git a/Tests/UnitTest/TestCases/test_arm_convolve_s8/test_arm_convolve_s8.c b/Tests/UnitTest/TestCases/test_arm_convolve_s8/test_arm_convolve_s8.c index a6065946..712d7405 100644 --- a/Tests/UnitTest/TestCases/test_arm_convolve_s8/test_arm_convolve_s8.c +++ b/Tests/UnitTest/TestCases/test_arm_convolve_s8/test_arm_convolve_s8.c @@ -93,6 +93,7 @@ void basic_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -188,6 +189,7 @@ void stride2pad1_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -282,6 +284,7 @@ void conv_2_arm_convolve_s8(void) conv_2_weights, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -376,6 +379,7 @@ void conv_3_arm_convolve_s8(void) conv_3_weights, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -470,6 +474,7 @@ void conv_4_arm_convolve_s8(void) conv_4_weights, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -630,6 +635,7 @@ void conv_2x2_dilation_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -723,6 +729,7 @@ void conv_2x2_dilation_5x5_input_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); if (ctx.buf) @@ -815,6 +822,7 @@ void conv_3x3_dilation_5x5_input_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); if (ctx.buf) @@ -907,6 +915,7 @@ void conv_2x3_dilation_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); if (ctx.buf) @@ -999,6 +1008,7 @@ void conv_3x2_dilation_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); if (ctx.buf) @@ -1091,6 +1101,7 @@ void conv_dilation_golden_arm_convolve_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); if (ctx.buf) @@ -1184,6 +1195,7 @@ void conv_5_arm_convolve_s8(void) conv_5_weights, &bias_dims, bias_data, + NULL, &output_dims, output); diff --git a/Tests/UnitTest/TestCases/test_arm_grouped_convolve_s8/test_arm_grouped_convolve_s8.c b/Tests/UnitTest/TestCases/test_arm_grouped_convolve_s8/test_arm_grouped_convolve_s8.c index 1aaa6d10..ed24f33f 100644 --- a/Tests/UnitTest/TestCases/test_arm_grouped_convolve_s8/test_arm_grouped_convolve_s8.c +++ b/Tests/UnitTest/TestCases/test_arm_grouped_convolve_s8/test_arm_grouped_convolve_s8.c @@ -84,6 +84,7 @@ void grouped_conv_arm_grouped_convolve_1_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -155,6 +156,7 @@ void grouped_conv_arm_grouped_convolve_2_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -226,6 +228,7 @@ void grouped_conv_arm_grouped_convolve_3_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); @@ -297,6 +300,7 @@ void grouped_conv_arm_grouped_convolve_4_s8(void) kernel_data, &bias_dims, bias_data, + NULL, &output_dims, output); diff --git a/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/CMakeLists.txt b/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/CMakeLists.txt new file mode 100644 index 00000000..ed7e065d --- /dev/null +++ b/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/CMakeLists.txt @@ -0,0 +1,23 @@ +# +# SPDX-FileCopyrightText: Copyright 2023-2024 Arm Limited and/or its affiliates +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the License); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an AS IS BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +add_cmsis_nn_unit_test_executable(test_arm_reverse_transpose_conv_s8) + +target_sources(test_arm_reverse_transpose_conv_s8 PRIVATE + Unity/unity_test_arm_reverse_transpose_conv_s8.c + Unity/TestRunner/unity_test_arm_reverse_transpose_conv_s8_runner.c) diff --git a/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/Unity/unity_test_arm_reverse_transpose_conv_s8.c b/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/Unity/unity_test_arm_reverse_transpose_conv_s8.c new file mode 100644 index 00000000..1d261cea --- /dev/null +++ b/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/Unity/unity_test_arm_reverse_transpose_conv_s8.c @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: Copyright 2023-2024 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include + +#include "../test_arm_reverse_transpose_conv_s8.c" +#include "unity.h" + +#ifdef USING_FVP_CORSTONE_300 +extern void uart_init(void); +#endif + +/* This function is called from the autogenerated file. + * The name must be exactly like this + */ +void setUp(void) +{ /* This is run before EACH TEST */ +#ifdef USING_FVP_CORSTONE_300 + uart_init(); +#endif +} + +/* This function is called from the autogenerated file. + * The name must be exactly like this + */ +void tearDown(void) {} +void test_reverse_transpose_conv_1_arm_transpose_conv_s8(void) { reverse_transpose_conv_1_arm_transpose_conv_s8(); } +void test_reverse_transpose_conv_2_arm_transpose_conv_s8(void) { reverse_transpose_conv_2_arm_transpose_conv_s8(); } +void test_reverse_transpose_conv_3_arm_transpose_conv_s8(void) { reverse_transpose_conv_3_arm_transpose_conv_s8(); } +void test_reverse_transpose_conv_4_arm_transpose_conv_s8(void) { reverse_transpose_conv_3_arm_transpose_conv_s8(); } diff --git a/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/test_arm_reverse_transpose_conv_s8.c b/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/test_arm_reverse_transpose_conv_s8.c new file mode 100644 index 00000000..dc6870fd --- /dev/null +++ b/Tests/UnitTest/TestCases/test_arm_reverse_transpose_conv_s8/test_arm_reverse_transpose_conv_s8.c @@ -0,0 +1,388 @@ +/* + * SPDX-FileCopyrightText: Copyright 2023-2024 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "../TestData/reverse_transpose_conv_1/test_data.h" +#include "../TestData/reverse_transpose_conv_2/test_data.h" +#include "../TestData/reverse_transpose_conv_3/test_data.h" +#include "../TestData/reverse_transpose_conv_4/test_data.h" +#include "../Utils/utils.h" +#include "../Utils/validate.h" + +void reverse_transpose_conv_1_arm_transpose_conv_s8(void) +{ + const arm_cmsis_nn_status expected = ARM_CMSIS_NN_SUCCESS; + int8_t output[REVERSE_TRANSPOSE_CONV_1_DST_SIZE] = {0}; + + cmsis_nn_context ctx; + cmsis_nn_context reverse_conv_ctx; + cmsis_nn_transpose_conv_params transpose_conv_params; + cmsis_nn_per_channel_quant_params quant_params; + cmsis_nn_dims input_dims; + cmsis_nn_dims filter_dims; + cmsis_nn_dims bias_dims = {0}; + cmsis_nn_dims output_dims; + + const int32_t *bias_data = reverse_transpose_conv_1_biases; + const int8_t *kernel_data = reverse_transpose_conv_1_weights; + const int8_t *input_data = reverse_transpose_conv_1_input; + const int8_t *output_ref = reverse_transpose_conv_1_output_ref; + const int32_t output_ref_size = REVERSE_TRANSPOSE_CONV_1_DST_SIZE; + + input_dims.n = REVERSE_TRANSPOSE_CONV_1_INPUT_BATCHES; + input_dims.w = REVERSE_TRANSPOSE_CONV_1_INPUT_W; + input_dims.h = REVERSE_TRANSPOSE_CONV_1_INPUT_H; + input_dims.c = REVERSE_TRANSPOSE_CONV_1_IN_CH; + filter_dims.w = REVERSE_TRANSPOSE_CONV_1_FILTER_X; + filter_dims.h = REVERSE_TRANSPOSE_CONV_1_FILTER_Y; + filter_dims.n = REVERSE_TRANSPOSE_CONV_1_OUT_CH; + filter_dims.c = REVERSE_TRANSPOSE_CONV_1_IN_CH; + output_dims.n = REVERSE_TRANSPOSE_CONV_1_INPUT_BATCHES; + output_dims.w = REVERSE_TRANSPOSE_CONV_1_OUTPUT_W; + output_dims.h = REVERSE_TRANSPOSE_CONV_1_OUTPUT_H; + output_dims.c = REVERSE_TRANSPOSE_CONV_1_OUT_CH; + + transpose_conv_params.padding.w = REVERSE_TRANSPOSE_CONV_1_PAD_X; + transpose_conv_params.padding.h = REVERSE_TRANSPOSE_CONV_1_PAD_Y; + transpose_conv_params.padding_offsets.w = REVERSE_TRANSPOSE_CONV_1_PAD_X_WITH_OFFSET; + transpose_conv_params.padding_offsets.h = REVERSE_TRANSPOSE_CONV_1_PAD_Y_WITH_OFFSET; + + transpose_conv_params.stride.w = REVERSE_TRANSPOSE_CONV_1_STRIDE_X; + transpose_conv_params.stride.h = REVERSE_TRANSPOSE_CONV_1_STRIDE_Y; + transpose_conv_params.dilation.w = REVERSE_TRANSPOSE_CONV_1_DILATION_X; + transpose_conv_params.dilation.h = REVERSE_TRANSPOSE_CONV_1_DILATION_Y; + + transpose_conv_params.input_offset = REVERSE_TRANSPOSE_CONV_1_INPUT_OFFSET; + transpose_conv_params.output_offset = REVERSE_TRANSPOSE_CONV_1_OUTPUT_OFFSET; + transpose_conv_params.activation.min = REVERSE_TRANSPOSE_CONV_1_OUT_ACTIVATION_MIN; + transpose_conv_params.activation.max = REVERSE_TRANSPOSE_CONV_1_OUT_ACTIVATION_MAX; + quant_params.multiplier = (int32_t *)reverse_transpose_conv_1_output_mult; + quant_params.shift = (int32_t *)reverse_transpose_conv_1_output_shift; + + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); + ctx.buf = malloc(buf_size); + ctx.size = buf_size; + + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); + } + + if (ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(ctx.buf, 0, buf_size); + free(ctx.buf); + } + + TEST_ASSERT_EQUAL(expected, result); + TEST_ASSERT_TRUE(validate(output, output_ref, output_ref_size)); +} + +void reverse_transpose_conv_2_arm_transpose_conv_s8(void) +{ + const arm_cmsis_nn_status expected = ARM_CMSIS_NN_SUCCESS; + int8_t output[REVERSE_TRANSPOSE_CONV_2_DST_SIZE] = {0}; + + cmsis_nn_context ctx; + cmsis_nn_context reverse_conv_ctx; + cmsis_nn_transpose_conv_params transpose_conv_params; + cmsis_nn_per_channel_quant_params quant_params; + cmsis_nn_dims input_dims; + cmsis_nn_dims filter_dims; + cmsis_nn_dims bias_dims = {0}; + cmsis_nn_dims output_dims; + + const int32_t *bias_data = reverse_transpose_conv_2_biases; + const int8_t *kernel_data = reverse_transpose_conv_2_weights; + const int8_t *input_data = reverse_transpose_conv_2_input; + const int8_t *output_ref = reverse_transpose_conv_2_output_ref; + const int32_t output_ref_size = REVERSE_TRANSPOSE_CONV_2_DST_SIZE; + + input_dims.n = REVERSE_TRANSPOSE_CONV_2_INPUT_BATCHES; + input_dims.w = REVERSE_TRANSPOSE_CONV_2_INPUT_W; + input_dims.h = REVERSE_TRANSPOSE_CONV_2_INPUT_H; + input_dims.c = REVERSE_TRANSPOSE_CONV_2_IN_CH; + filter_dims.w = REVERSE_TRANSPOSE_CONV_2_FILTER_X; + filter_dims.h = REVERSE_TRANSPOSE_CONV_2_FILTER_Y; + filter_dims.n = REVERSE_TRANSPOSE_CONV_2_OUT_CH; + filter_dims.c = REVERSE_TRANSPOSE_CONV_2_IN_CH; + output_dims.n = REVERSE_TRANSPOSE_CONV_2_INPUT_BATCHES; + output_dims.w = REVERSE_TRANSPOSE_CONV_2_OUTPUT_W; + output_dims.h = REVERSE_TRANSPOSE_CONV_2_OUTPUT_H; + output_dims.c = REVERSE_TRANSPOSE_CONV_2_OUT_CH; + + transpose_conv_params.padding.w = REVERSE_TRANSPOSE_CONV_2_PAD_X; + transpose_conv_params.padding.h = REVERSE_TRANSPOSE_CONV_2_PAD_Y; + transpose_conv_params.padding_offsets.w = REVERSE_TRANSPOSE_CONV_2_PAD_X_WITH_OFFSET; + transpose_conv_params.padding_offsets.h = REVERSE_TRANSPOSE_CONV_2_PAD_Y_WITH_OFFSET; + + transpose_conv_params.stride.w = REVERSE_TRANSPOSE_CONV_2_STRIDE_X; + transpose_conv_params.stride.h = REVERSE_TRANSPOSE_CONV_2_STRIDE_Y; + transpose_conv_params.dilation.w = REVERSE_TRANSPOSE_CONV_2_DILATION_X; + transpose_conv_params.dilation.h = REVERSE_TRANSPOSE_CONV_2_DILATION_Y; + + transpose_conv_params.input_offset = REVERSE_TRANSPOSE_CONV_2_INPUT_OFFSET; + transpose_conv_params.output_offset = REVERSE_TRANSPOSE_CONV_2_OUTPUT_OFFSET; + transpose_conv_params.activation.min = REVERSE_TRANSPOSE_CONV_2_OUT_ACTIVATION_MIN; + transpose_conv_params.activation.max = REVERSE_TRANSPOSE_CONV_2_OUT_ACTIVATION_MAX; + quant_params.multiplier = (int32_t *)reverse_transpose_conv_2_output_mult; + quant_params.shift = (int32_t *)reverse_transpose_conv_2_output_shift; + + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); + ctx.buf = malloc(buf_size); + ctx.size = buf_size; + + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); + } + + if (ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(ctx.buf, 0, buf_size); + free(ctx.buf); + } + TEST_ASSERT_EQUAL(expected, result); + TEST_ASSERT_TRUE(validate(output, output_ref, output_ref_size)); +} + +void reverse_transpose_conv_3_arm_transpose_conv_s8(void) +{ + const arm_cmsis_nn_status expected = ARM_CMSIS_NN_SUCCESS; + int8_t output[REVERSE_TRANSPOSE_CONV_3_DST_SIZE] = {0}; + + cmsis_nn_context ctx; + cmsis_nn_context reverse_conv_ctx; + cmsis_nn_transpose_conv_params transpose_conv_params; + cmsis_nn_per_channel_quant_params quant_params; + cmsis_nn_dims input_dims; + cmsis_nn_dims filter_dims; + cmsis_nn_dims bias_dims = {0}; + cmsis_nn_dims output_dims; + + const int32_t *bias_data = reverse_transpose_conv_3_biases; + const int8_t *kernel_data = reverse_transpose_conv_3_weights; + const int8_t *input_data = reverse_transpose_conv_3_input; + const int8_t *output_ref = reverse_transpose_conv_3_output_ref; + const int32_t output_ref_size = REVERSE_TRANSPOSE_CONV_3_DST_SIZE; + + input_dims.n = REVERSE_TRANSPOSE_CONV_3_INPUT_BATCHES; + input_dims.w = REVERSE_TRANSPOSE_CONV_3_INPUT_W; + input_dims.h = REVERSE_TRANSPOSE_CONV_3_INPUT_H; + input_dims.c = REVERSE_TRANSPOSE_CONV_3_IN_CH; + filter_dims.w = REVERSE_TRANSPOSE_CONV_3_FILTER_X; + filter_dims.h = REVERSE_TRANSPOSE_CONV_3_FILTER_Y; + filter_dims.n = REVERSE_TRANSPOSE_CONV_3_OUT_CH; + filter_dims.c = REVERSE_TRANSPOSE_CONV_3_IN_CH; + output_dims.n = REVERSE_TRANSPOSE_CONV_3_INPUT_BATCHES; + output_dims.w = REVERSE_TRANSPOSE_CONV_3_OUTPUT_W; + output_dims.h = REVERSE_TRANSPOSE_CONV_3_OUTPUT_H; + output_dims.c = REVERSE_TRANSPOSE_CONV_3_OUT_CH; + + transpose_conv_params.padding.w = REVERSE_TRANSPOSE_CONV_3_PAD_X; + transpose_conv_params.padding.h = REVERSE_TRANSPOSE_CONV_3_PAD_Y; + transpose_conv_params.padding_offsets.w = REVERSE_TRANSPOSE_CONV_3_PAD_X_WITH_OFFSET; + transpose_conv_params.padding_offsets.h = REVERSE_TRANSPOSE_CONV_3_PAD_Y_WITH_OFFSET; + + transpose_conv_params.stride.w = REVERSE_TRANSPOSE_CONV_3_STRIDE_X; + transpose_conv_params.stride.h = REVERSE_TRANSPOSE_CONV_3_STRIDE_Y; + transpose_conv_params.dilation.w = REVERSE_TRANSPOSE_CONV_3_DILATION_X; + transpose_conv_params.dilation.h = REVERSE_TRANSPOSE_CONV_3_DILATION_Y; + + transpose_conv_params.input_offset = REVERSE_TRANSPOSE_CONV_3_INPUT_OFFSET; + transpose_conv_params.output_offset = REVERSE_TRANSPOSE_CONV_3_OUTPUT_OFFSET; + transpose_conv_params.activation.min = REVERSE_TRANSPOSE_CONV_3_OUT_ACTIVATION_MIN; + transpose_conv_params.activation.max = REVERSE_TRANSPOSE_CONV_3_OUT_ACTIVATION_MAX; + quant_params.multiplier = (int32_t *)reverse_transpose_conv_3_output_mult; + quant_params.shift = (int32_t *)reverse_transpose_conv_3_output_shift; + + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); + ctx.buf = malloc(buf_size); + ctx.size = buf_size; + + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); + } + + if (ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(ctx.buf, 0, buf_size); + free(ctx.buf); + } + TEST_ASSERT_EQUAL(expected, result); + TEST_ASSERT_TRUE(validate(output, output_ref, output_ref_size)); +} + +void reverse_transpose_conv_4_arm_transpose_conv_s8(void) +{ + const arm_cmsis_nn_status expected = ARM_CMSIS_NN_SUCCESS; + int8_t output[REVERSE_TRANSPOSE_CONV_4_DST_SIZE] = {0}; + + cmsis_nn_context ctx; + cmsis_nn_context reverse_conv_ctx; + cmsis_nn_transpose_conv_params transpose_conv_params; + cmsis_nn_per_channel_quant_params quant_params; + cmsis_nn_dims input_dims; + cmsis_nn_dims filter_dims; + cmsis_nn_dims bias_dims = {0}; + cmsis_nn_dims output_dims; + + const int32_t *bias_data = reverse_transpose_conv_4_biases; + const int8_t *kernel_data = reverse_transpose_conv_4_weights; + const int8_t *input_data = reverse_transpose_conv_4_input; + const int8_t *output_ref = reverse_transpose_conv_4_output_ref; + const int32_t output_ref_size = REVERSE_TRANSPOSE_CONV_4_DST_SIZE; + + input_dims.n = REVERSE_TRANSPOSE_CONV_4_INPUT_BATCHES; + input_dims.w = REVERSE_TRANSPOSE_CONV_4_INPUT_W; + input_dims.h = REVERSE_TRANSPOSE_CONV_4_INPUT_H; + input_dims.c = REVERSE_TRANSPOSE_CONV_4_IN_CH; + filter_dims.w = REVERSE_TRANSPOSE_CONV_4_FILTER_X; + filter_dims.h = REVERSE_TRANSPOSE_CONV_4_FILTER_Y; + filter_dims.n = REVERSE_TRANSPOSE_CONV_4_OUT_CH; + filter_dims.c = REVERSE_TRANSPOSE_CONV_4_IN_CH; + output_dims.n = REVERSE_TRANSPOSE_CONV_4_INPUT_BATCHES; + output_dims.w = REVERSE_TRANSPOSE_CONV_4_OUTPUT_W; + output_dims.h = REVERSE_TRANSPOSE_CONV_4_OUTPUT_H; + output_dims.c = REVERSE_TRANSPOSE_CONV_4_OUT_CH; + + transpose_conv_params.padding.w = REVERSE_TRANSPOSE_CONV_4_PAD_X; + transpose_conv_params.padding.h = REVERSE_TRANSPOSE_CONV_4_PAD_Y; + transpose_conv_params.padding_offsets.w = REVERSE_TRANSPOSE_CONV_4_PAD_X_WITH_OFFSET; + transpose_conv_params.padding_offsets.h = REVERSE_TRANSPOSE_CONV_4_PAD_Y_WITH_OFFSET; + + transpose_conv_params.stride.w = REVERSE_TRANSPOSE_CONV_4_STRIDE_X; + transpose_conv_params.stride.h = REVERSE_TRANSPOSE_CONV_4_STRIDE_Y; + transpose_conv_params.dilation.w = REVERSE_TRANSPOSE_CONV_4_DILATION_X; + transpose_conv_params.dilation.h = REVERSE_TRANSPOSE_CONV_4_DILATION_Y; + + transpose_conv_params.input_offset = REVERSE_TRANSPOSE_CONV_4_INPUT_OFFSET; + transpose_conv_params.output_offset = REVERSE_TRANSPOSE_CONV_4_OUTPUT_OFFSET; + transpose_conv_params.activation.min = REVERSE_TRANSPOSE_CONV_4_OUT_ACTIVATION_MIN; + transpose_conv_params.activation.max = REVERSE_TRANSPOSE_CONV_4_OUT_ACTIVATION_MAX; + quant_params.multiplier = (int32_t *)reverse_transpose_conv_4_output_mult; + quant_params.shift = (int32_t *)reverse_transpose_conv_4_output_shift; + + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); + ctx.buf = malloc(buf_size); + ctx.size = buf_size; + + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); + } + + if (ctx.buf) + { + // The caller is responsible to clear the scratch buffers for security reasons if applicable. + memset(ctx.buf, 0, buf_size); + free(ctx.buf); + } + TEST_ASSERT_EQUAL(expected, result); + TEST_ASSERT_TRUE(validate(output, output_ref, output_ref_size)); +} diff --git a/Tests/UnitTest/TestCases/test_arm_transpose_conv_s8/test_arm_transpose_conv_s8.c b/Tests/UnitTest/TestCases/test_arm_transpose_conv_s8/test_arm_transpose_conv_s8.c index 5b6e57a8..b24c34a4 100644 --- a/Tests/UnitTest/TestCases/test_arm_transpose_conv_s8/test_arm_transpose_conv_s8.c +++ b/Tests/UnitTest/TestCases/test_arm_transpose_conv_s8/test_arm_transpose_conv_s8.c @@ -32,7 +32,7 @@ void transpose_conv_1_arm_transpose_conv_s8(void) int8_t output[TRANSPOSE_CONV_1_DST_SIZE] = {0}; cmsis_nn_context ctx; - cmsis_nn_context output_ctx; + cmsis_nn_context reverse_conv_ctx; cmsis_nn_transpose_conv_params transpose_conv_params; cmsis_nn_per_channel_quant_params quant_params; cmsis_nn_dims input_dims; @@ -52,14 +52,13 @@ void transpose_conv_1_arm_transpose_conv_s8(void) input_dims.c = TRANSPOSE_CONV_1_IN_CH; filter_dims.w = TRANSPOSE_CONV_1_FILTER_X; filter_dims.h = TRANSPOSE_CONV_1_FILTER_Y; + filter_dims.n = TRANSPOSE_CONV_1_OUT_CH; + filter_dims.c = TRANSPOSE_CONV_1_IN_CH; output_dims.n = TRANSPOSE_CONV_1_INPUT_BATCHES; output_dims.w = TRANSPOSE_CONV_1_OUTPUT_W; output_dims.h = TRANSPOSE_CONV_1_OUTPUT_H; output_dims.c = TRANSPOSE_CONV_1_OUT_CH; - output_ctx.size = output_dims.w * output_dims.h * output_dims.c * sizeof(int32_t); - output_ctx.buf = malloc(output_ctx.size); - transpose_conv_params.padding.w = TRANSPOSE_CONV_1_PAD_X; transpose_conv_params.padding.h = TRANSPOSE_CONV_1_PAD_Y; transpose_conv_params.padding_offsets.w = TRANSPOSE_CONV_1_PAD_X_WITH_OFFSET; @@ -77,28 +76,34 @@ void transpose_conv_1_arm_transpose_conv_s8(void) quant_params.multiplier = (int32_t *)transpose_conv_1_output_mult; quant_params.shift = (int32_t *)transpose_conv_1_output_shift; - const int32_t buf_size = arm_transpose_conv_s8_get_buffer_size(&input_dims, &filter_dims, &output_dims); + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); ctx.buf = malloc(buf_size); ctx.size = buf_size; - arm_cmsis_nn_status result = arm_transpose_conv_s8(&ctx, - &output_ctx, - &transpose_conv_params, - &quant_params, - &input_dims, - input_data, - &filter_dims, - kernel_data, - &bias_dims, - bias_data, - &output_dims, - output); - - if (output_ctx.buf) + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) { // The caller is responsible to clear the scratch buffers for security reasons if applicable. - memset(output_ctx.buf, 0, output_ctx.size); - free(output_ctx.buf); + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); } if (ctx.buf) @@ -118,7 +123,7 @@ void transpose_conv_2_arm_transpose_conv_s8(void) int8_t output[TRANSPOSE_CONV_2_DST_SIZE] = {0}; cmsis_nn_context ctx; - cmsis_nn_context output_ctx; + cmsis_nn_context reverse_conv_ctx; cmsis_nn_transpose_conv_params transpose_conv_params; cmsis_nn_per_channel_quant_params quant_params; cmsis_nn_dims input_dims; @@ -138,14 +143,13 @@ void transpose_conv_2_arm_transpose_conv_s8(void) input_dims.c = TRANSPOSE_CONV_2_IN_CH; filter_dims.w = TRANSPOSE_CONV_2_FILTER_X; filter_dims.h = TRANSPOSE_CONV_2_FILTER_Y; + filter_dims.n = TRANSPOSE_CONV_2_OUT_CH; + filter_dims.c = TRANSPOSE_CONV_2_IN_CH; output_dims.n = TRANSPOSE_CONV_2_INPUT_BATCHES; output_dims.w = TRANSPOSE_CONV_2_OUTPUT_W; output_dims.h = TRANSPOSE_CONV_2_OUTPUT_H; output_dims.c = TRANSPOSE_CONV_2_OUT_CH; - output_ctx.size = output_dims.w * output_dims.h * output_dims.c * sizeof(int32_t); - output_ctx.buf = malloc(output_ctx.size); - transpose_conv_params.padding.w = TRANSPOSE_CONV_2_PAD_X; transpose_conv_params.padding.h = TRANSPOSE_CONV_2_PAD_Y; transpose_conv_params.padding_offsets.w = TRANSPOSE_CONV_2_PAD_X_WITH_OFFSET; @@ -163,28 +167,34 @@ void transpose_conv_2_arm_transpose_conv_s8(void) quant_params.multiplier = (int32_t *)transpose_conv_2_output_mult; quant_params.shift = (int32_t *)transpose_conv_2_output_shift; - const int32_t buf_size = arm_transpose_conv_s8_get_buffer_size(&input_dims, &filter_dims, &output_dims); + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); ctx.buf = malloc(buf_size); ctx.size = buf_size; - arm_cmsis_nn_status result = arm_transpose_conv_s8(&ctx, - &output_ctx, - &transpose_conv_params, - &quant_params, - &input_dims, - input_data, - &filter_dims, - kernel_data, - &bias_dims, - bias_data, - &output_dims, - output); - - if (output_ctx.buf) + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) { // The caller is responsible to clear the scratch buffers for security reasons if applicable. - memset(output_ctx.buf, 0, output_ctx.size); - free(output_ctx.buf); + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); } if (ctx.buf) @@ -203,7 +213,7 @@ void transpose_conv_3_arm_transpose_conv_s8(void) int8_t output[TRANSPOSE_CONV_3_DST_SIZE] = {0}; cmsis_nn_context ctx; - cmsis_nn_context output_ctx; + cmsis_nn_context reverse_conv_ctx; cmsis_nn_transpose_conv_params transpose_conv_params; cmsis_nn_per_channel_quant_params quant_params; cmsis_nn_dims input_dims; @@ -223,14 +233,13 @@ void transpose_conv_3_arm_transpose_conv_s8(void) input_dims.c = TRANSPOSE_CONV_3_IN_CH; filter_dims.w = TRANSPOSE_CONV_3_FILTER_X; filter_dims.h = TRANSPOSE_CONV_3_FILTER_Y; + filter_dims.n = TRANSPOSE_CONV_3_OUT_CH; + filter_dims.c = TRANSPOSE_CONV_3_IN_CH; output_dims.n = TRANSPOSE_CONV_3_INPUT_BATCHES; output_dims.w = TRANSPOSE_CONV_3_OUTPUT_W; output_dims.h = TRANSPOSE_CONV_3_OUTPUT_H; output_dims.c = TRANSPOSE_CONV_3_OUT_CH; - output_ctx.size = output_dims.w * output_dims.h * output_dims.c * sizeof(int32_t); - output_ctx.buf = malloc(output_ctx.size); - transpose_conv_params.padding.w = TRANSPOSE_CONV_3_PAD_X; transpose_conv_params.padding.h = TRANSPOSE_CONV_3_PAD_Y; transpose_conv_params.padding_offsets.w = TRANSPOSE_CONV_3_PAD_X_WITH_OFFSET; @@ -248,28 +257,34 @@ void transpose_conv_3_arm_transpose_conv_s8(void) quant_params.multiplier = (int32_t *)transpose_conv_3_output_mult; quant_params.shift = (int32_t *)transpose_conv_3_output_shift; - const int32_t buf_size = arm_transpose_conv_s8_get_buffer_size(&input_dims, &filter_dims, &output_dims); + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); ctx.buf = malloc(buf_size); ctx.size = buf_size; - arm_cmsis_nn_status result = arm_transpose_conv_s8(&ctx, - &output_ctx, - &transpose_conv_params, - &quant_params, - &input_dims, - input_data, - &filter_dims, - kernel_data, - &bias_dims, - bias_data, - &output_dims, - output); - - if (output_ctx.buf) + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) { // The caller is responsible to clear the scratch buffers for security reasons if applicable. - memset(output_ctx.buf, 0, output_ctx.size); - free(output_ctx.buf); + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); } if (ctx.buf) @@ -288,7 +303,7 @@ void transpose_conv_4_arm_transpose_conv_s8(void) int8_t output[TRANSPOSE_CONV_4_DST_SIZE] = {0}; cmsis_nn_context ctx; - cmsis_nn_context output_ctx; + cmsis_nn_context reverse_conv_ctx; cmsis_nn_transpose_conv_params transpose_conv_params; cmsis_nn_per_channel_quant_params quant_params; cmsis_nn_dims input_dims; @@ -308,14 +323,13 @@ void transpose_conv_4_arm_transpose_conv_s8(void) input_dims.c = TRANSPOSE_CONV_4_IN_CH; filter_dims.w = TRANSPOSE_CONV_4_FILTER_X; filter_dims.h = TRANSPOSE_CONV_4_FILTER_Y; + filter_dims.n = TRANSPOSE_CONV_4_OUT_CH; + filter_dims.c = TRANSPOSE_CONV_4_IN_CH; output_dims.n = TRANSPOSE_CONV_4_INPUT_BATCHES; output_dims.w = TRANSPOSE_CONV_4_OUTPUT_W; output_dims.h = TRANSPOSE_CONV_4_OUTPUT_H; output_dims.c = TRANSPOSE_CONV_4_OUT_CH; - output_ctx.size = output_dims.w * output_dims.h * output_dims.c * sizeof(int32_t); - output_ctx.buf = malloc(output_ctx.size); - transpose_conv_params.padding.w = TRANSPOSE_CONV_4_PAD_X; transpose_conv_params.padding.h = TRANSPOSE_CONV_4_PAD_Y; transpose_conv_params.padding_offsets.w = TRANSPOSE_CONV_4_PAD_X_WITH_OFFSET; @@ -333,28 +347,34 @@ void transpose_conv_4_arm_transpose_conv_s8(void) quant_params.multiplier = (int32_t *)transpose_conv_4_output_mult; quant_params.shift = (int32_t *)transpose_conv_4_output_shift; - const int32_t buf_size = arm_transpose_conv_s8_get_buffer_size(&input_dims, &filter_dims, &output_dims); + const int32_t buf_size = + arm_transpose_conv_s8_get_buffer_size(&transpose_conv_params, &input_dims, &filter_dims, &output_dims); ctx.buf = malloc(buf_size); ctx.size = buf_size; - arm_cmsis_nn_status result = arm_transpose_conv_s8(&ctx, - &output_ctx, - &transpose_conv_params, - &quant_params, - &input_dims, - input_data, - &filter_dims, - kernel_data, - &bias_dims, - bias_data, - &output_dims, - output); - - if (output_ctx.buf) + const int32_t reverse_conv_buf_size = + arm_transpose_conv_s8_get_reverse_conv_buffer_size(&transpose_conv_params, &input_dims, &filter_dims); + reverse_conv_ctx.buf = malloc(reverse_conv_buf_size); + reverse_conv_ctx.size = reverse_conv_buf_size; + + arm_cmsis_nn_status result = arm_transpose_conv_wrapper_s8(&ctx, + &reverse_conv_ctx, + &transpose_conv_params, + &quant_params, + &input_dims, + input_data, + &filter_dims, + kernel_data, + &bias_dims, + bias_data, + &output_dims, + output); + + if (reverse_conv_ctx.buf) { // The caller is responsible to clear the scratch buffers for security reasons if applicable. - memset(output_ctx.buf, 0, output_ctx.size); - free(output_ctx.buf); + memset(reverse_conv_ctx.buf, 0, reverse_conv_ctx.size); + free(reverse_conv_ctx.buf); } if (ctx.buf) diff --git a/Tests/UnitTest/generate_test_data.py b/Tests/UnitTest/generate_test_data.py index b56e5cba..8f7dca04 100755 --- a/Tests/UnitTest/generate_test_data.py +++ b/Tests/UnitTest/generate_test_data.py @@ -1548,7 +1548,7 @@ def load_testdata_sets(regenerate_input, regenerate_weights, regenerate_biases, regenerate_input, regenerate_biases, schema_file, - in_ch=32, + in_ch=9, batches=2, out_ch=3, x_in=9, @@ -1618,6 +1618,83 @@ def load_testdata_sets(regenerate_input, regenerate_weights, regenerate_biases, pad=False, interpreter=interpreter) + dataset = 'reverse_transpose_conv_1' + testdata_sets[dataset] = ConvSettings(dataset, + type_of_test, + regenerate_weights, + regenerate_input, + regenerate_biases, + schema_file, + in_ch=32, + batches=1, + out_ch=2, + x_in=3, + y_in=5, + w_x=2, + w_y=2, + generate_bias=True, + stride_x=1, + stride_y=1, + pad=True, + interpreter=interpreter) + dataset = 'reverse_transpose_conv_2' + testdata_sets[dataset] = ConvSettings(dataset, + type_of_test, + regenerate_weights, + regenerate_input, + regenerate_biases, + schema_file, + in_ch=17, + batches=1, + out_ch=5, + x_in=2, + y_in=1, + w_x=1, + w_y=1, + generate_bias=False, + stride_x=2, + stride_y=2, + pad=False, + interpreter=interpreter) + dataset = 'reverse_transpose_conv_3' + testdata_sets[dataset] = ConvSettings(dataset, + type_of_test, + regenerate_weights, + regenerate_input, + regenerate_biases, + schema_file, + in_ch=17, + batches=1, + out_ch=17, + x_in=2, + y_in=2, + w_x=2, + w_y=2, + generate_bias=False, + stride_x=1, + stride_y=2, + pad=True, + interpreter=interpreter) + dataset = 'reverse_transpose_conv_4' + testdata_sets[dataset] = ConvSettings(dataset, + type_of_test, + regenerate_weights, + regenerate_input, + regenerate_biases, + schema_file, + in_ch=1, + batches=2, + out_ch=1, + x_in=2, + y_in=2, + w_x=3, + w_y=3, + generate_bias=False, + stride_x=2, + stride_y=1, + pad=False, + interpreter=interpreter) + type_of_test = 'depthwise_conv' dataset = 'in_ch_one_out_ch_larger_one' testdata_sets[dataset] = ConvSettings(dataset, From 864337217be8f6d340d8d6071e8ca154bbe7a575 Mon Sep 17 00:00:00 2001 From: Adrian Lundell Date: Mon, 11 Nov 2024 10:28:27 +0100 Subject: [PATCH 2/2] Fix documentation warning --- Include/arm_nnfunctions.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Include/arm_nnfunctions.h b/Include/arm_nnfunctions.h index 457de65f..c33a2149 100644 --- a/Include/arm_nnfunctions.h +++ b/Include/arm_nnfunctions.h @@ -563,7 +563,7 @@ arm_cmsis_nn_status arm_transpose_conv_s8(const cmsis_nn_context *ctx, /** * @brief Get the required buffer size for ctx in s8 transpose conv function * - * @param[in9 transposed_conv_params Transposed convolution parameters + * @param[in] transposed_conv_params Transposed convolution parameters * @param[in] input_dims Input (activation) tensor dimensions. Format: [N, H, W, C_IN] * @param[in] filter_dims Filter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK * are the spatial filter dimensions @@ -579,7 +579,7 @@ int32_t arm_transpose_conv_s8_get_buffer_size(const cmsis_nn_transpose_conv_para /** * @brief Get the required buffer size for output_ctx in s8 transpose conv function * - * @param[in9 transposed_conv_params Transposed convolution parameters + * @param[in] transposed_conv_params Transposed convolution parameters * @param[in] input_dims Input (activation) tensor dimensions. Format: [N, H, W, C_IN] * @param[in] filter_dims Filter tensor dimensions. Format: [C_OUT, HK, WK, C_IN] where HK and WK * are the spatial filter dimensions