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..c33a2149 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[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
+ * @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[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
+ * @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,