XM-01/XM-01/X-CUBE-AI/App/model.c

2230 lines
69 KiB
C

/**
******************************************************************************
* @file model.c
* @author AST Embedded Analytics Research Platform
* @date 2025-05-20T15:23:57+0800
* @brief AI Tool Automatic Code Generator for Embedded NN computing
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
******************************************************************************
*/
#include "model.h"
#include "model_data.h"
#include "ai_platform.h"
#include "ai_platform_interface.h"
#include "ai_math_helpers.h"
#include "core_common.h"
#include "core_convert.h"
#include "layers.h"
#undef AI_NET_OBJ_INSTANCE
#define AI_NET_OBJ_INSTANCE g_model
#undef AI_MODEL_MODEL_SIGNATURE
#define AI_MODEL_MODEL_SIGNATURE "0x391deb77460dcfce8d55e2fc3b80314e"
#ifndef AI_TOOLS_REVISION_ID
#define AI_TOOLS_REVISION_ID ""
#endif
#undef AI_TOOLS_DATE_TIME
#define AI_TOOLS_DATE_TIME "2025-05-20T15:23:57+0800"
#undef AI_TOOLS_COMPILE_TIME
#define AI_TOOLS_COMPILE_TIME __DATE__ " " __TIME__
#undef AI_MODEL_N_BATCHES
#define AI_MODEL_N_BATCHES (1)
static ai_ptr g_model_activations_map[1] = AI_C_ARRAY_INIT;
static ai_ptr g_model_weights_map[1] = AI_C_ARRAY_INIT;
/** Array declarations section **********************************************/
/* Array#0 */
AI_ARRAY_OBJ_DECLARE(
serving_default_input0_output_array, AI_ARRAY_FORMAT_FLOAT|AI_FMT_FLAG_IS_IO,
NULL, NULL, 1024, AI_STATIC)
/* Array#1 */
AI_ARRAY_OBJ_DECLARE(
conv2d_4_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#2 */
AI_ARRAY_OBJ_DECLARE(
conv2d_6_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#3 */
AI_ARRAY_OBJ_DECLARE(
conv2d_7_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#4 */
AI_ARRAY_OBJ_DECLARE(
nl_7_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#5 */
AI_ARRAY_OBJ_DECLARE(
conv2d_8_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#6 */
AI_ARRAY_OBJ_DECLARE(
conv2d_9_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#7 */
AI_ARRAY_OBJ_DECLARE(
eltwise_10_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#8 */
AI_ARRAY_OBJ_DECLARE(
nl_10_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#9 */
AI_ARRAY_OBJ_DECLARE(
conv2d_11_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#10 */
AI_ARRAY_OBJ_DECLARE(
conv2d_12_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#11 */
AI_ARRAY_OBJ_DECLARE(
nl_12_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#12 */
AI_ARRAY_OBJ_DECLARE(
conv2d_13_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#13 */
AI_ARRAY_OBJ_DECLARE(
conv2d_14_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#14 */
AI_ARRAY_OBJ_DECLARE(
eltwise_15_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#15 */
AI_ARRAY_OBJ_DECLARE(
nl_15_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 4096, AI_STATIC)
/* Array#16 */
AI_ARRAY_OBJ_DECLARE(
conv2d_20_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#17 */
AI_ARRAY_OBJ_DECLARE(
conv2d_16_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 1024, AI_STATIC)
/* Array#18 */
AI_ARRAY_OBJ_DECLARE(
conv2d_17_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#19 */
AI_ARRAY_OBJ_DECLARE(
nl_17_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#20 */
AI_ARRAY_OBJ_DECLARE(
conv2d_18_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#21 */
AI_ARRAY_OBJ_DECLARE(
conv2d_19_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#22 */
AI_ARRAY_OBJ_DECLARE(
eltwise_21_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#23 */
AI_ARRAY_OBJ_DECLARE(
nl_21_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#24 */
AI_ARRAY_OBJ_DECLARE(
conv2d_22_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#25 */
AI_ARRAY_OBJ_DECLARE(
conv2d_23_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#26 */
AI_ARRAY_OBJ_DECLARE(
nl_23_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#27 */
AI_ARRAY_OBJ_DECLARE(
conv2d_24_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#28 */
AI_ARRAY_OBJ_DECLARE(
conv2d_25_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#29 */
AI_ARRAY_OBJ_DECLARE(
eltwise_26_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#30 */
AI_ARRAY_OBJ_DECLARE(
nl_26_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 2048, AI_STATIC)
/* Array#31 */
AI_ARRAY_OBJ_DECLARE(
pool_27_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#32 */
AI_ARRAY_OBJ_DECLARE(
gemm_28_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#33 */
AI_ARRAY_OBJ_DECLARE(
nl_28_nl_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#34 */
AI_ARRAY_OBJ_DECLARE(
gemm_29_output_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 3, AI_STATIC)
/* Array#35 */
AI_ARRAY_OBJ_DECLARE(
nl_30_output_array, AI_ARRAY_FORMAT_FLOAT|AI_FMT_FLAG_IS_IO,
NULL, NULL, 3, AI_STATIC)
/* Array#36 */
AI_ARRAY_OBJ_DECLARE(
conv2d_4_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 144, AI_STATIC)
/* Array#37 */
AI_ARRAY_OBJ_DECLARE(
conv2d_4_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#38 */
AI_ARRAY_OBJ_DECLARE(
conv2d_6_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 144, AI_STATIC)
/* Array#39 */
AI_ARRAY_OBJ_DECLARE(
conv2d_6_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#40 */
AI_ARRAY_OBJ_DECLARE(
conv2d_7_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 256, AI_STATIC)
/* Array#41 */
AI_ARRAY_OBJ_DECLARE(
conv2d_7_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#42 */
AI_ARRAY_OBJ_DECLARE(
conv2d_8_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 144, AI_STATIC)
/* Array#43 */
AI_ARRAY_OBJ_DECLARE(
conv2d_9_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 256, AI_STATIC)
/* Array#44 */
AI_ARRAY_OBJ_DECLARE(
conv2d_9_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#45 */
AI_ARRAY_OBJ_DECLARE(
conv2d_11_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 144, AI_STATIC)
/* Array#46 */
AI_ARRAY_OBJ_DECLARE(
conv2d_12_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 256, AI_STATIC)
/* Array#47 */
AI_ARRAY_OBJ_DECLARE(
conv2d_12_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#48 */
AI_ARRAY_OBJ_DECLARE(
conv2d_13_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 144, AI_STATIC)
/* Array#49 */
AI_ARRAY_OBJ_DECLARE(
conv2d_14_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 256, AI_STATIC)
/* Array#50 */
AI_ARRAY_OBJ_DECLARE(
conv2d_14_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#51 */
AI_ARRAY_OBJ_DECLARE(
conv2d_20_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 512, AI_STATIC)
/* Array#52 */
AI_ARRAY_OBJ_DECLARE(
conv2d_20_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#53 */
AI_ARRAY_OBJ_DECLARE(
conv2d_16_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 144, AI_STATIC)
/* Array#54 */
AI_ARRAY_OBJ_DECLARE(
conv2d_17_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 512, AI_STATIC)
/* Array#55 */
AI_ARRAY_OBJ_DECLARE(
conv2d_17_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#56 */
AI_ARRAY_OBJ_DECLARE(
conv2d_18_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 288, AI_STATIC)
/* Array#57 */
AI_ARRAY_OBJ_DECLARE(
conv2d_18_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#58 */
AI_ARRAY_OBJ_DECLARE(
conv2d_19_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 1024, AI_STATIC)
/* Array#59 */
AI_ARRAY_OBJ_DECLARE(
conv2d_19_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#60 */
AI_ARRAY_OBJ_DECLARE(
conv2d_22_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 288, AI_STATIC)
/* Array#61 */
AI_ARRAY_OBJ_DECLARE(
conv2d_23_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 1024, AI_STATIC)
/* Array#62 */
AI_ARRAY_OBJ_DECLARE(
conv2d_23_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#63 */
AI_ARRAY_OBJ_DECLARE(
conv2d_24_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 288, AI_STATIC)
/* Array#64 */
AI_ARRAY_OBJ_DECLARE(
conv2d_25_weights_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 1024, AI_STATIC)
/* Array#65 */
AI_ARRAY_OBJ_DECLARE(
conv2d_25_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#66 */
AI_ARRAY_OBJ_DECLARE(
gemm_28_weights_array, AI_ARRAY_FORMAT_LUT4_FLOAT,
NULL, NULL, 1024, AI_STATIC)
/* Array#67 */
AI_ARRAY_OBJ_DECLARE(
gemm_28_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#68 */
AI_ARRAY_OBJ_DECLARE(
gemm_29_weights_array, AI_ARRAY_FORMAT_LUT4_FLOAT,
NULL, NULL, 96, AI_STATIC)
/* Array#69 */
AI_ARRAY_OBJ_DECLARE(
gemm_29_bias_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 3, AI_STATIC)
/* Array#70 */
AI_ARRAY_OBJ_DECLARE(
conv2d_4_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 9, AI_STATIC)
/* Array#71 */
AI_ARRAY_OBJ_DECLARE(
conv2d_4_scratch1_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 1024, AI_STATIC)
/* Array#72 */
AI_ARRAY_OBJ_DECLARE(
conv2d_7_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#73 */
AI_ARRAY_OBJ_DECLARE(
conv2d_9_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#74 */
AI_ARRAY_OBJ_DECLARE(
conv2d_12_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#75 */
AI_ARRAY_OBJ_DECLARE(
conv2d_14_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#76 */
AI_ARRAY_OBJ_DECLARE(
conv2d_20_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#77 */
AI_ARRAY_OBJ_DECLARE(
conv2d_17_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 16, AI_STATIC)
/* Array#78 */
AI_ARRAY_OBJ_DECLARE(
conv2d_19_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#79 */
AI_ARRAY_OBJ_DECLARE(
conv2d_23_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/* Array#80 */
AI_ARRAY_OBJ_DECLARE(
conv2d_25_scratch0_array, AI_ARRAY_FORMAT_FLOAT,
NULL, NULL, 32, AI_STATIC)
/** Tensor declarations section *********************************************/
/* Tensor #0 */
AI_TENSOR_OBJ_DECLARE(
conv2d_11_output, AI_STATIC,
0, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_11_output_array, NULL)
/* Tensor #1 */
AI_TENSOR_OBJ_DECLARE(
conv2d_11_weights, AI_STATIC,
1, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 16), AI_STRIDE_INIT(4, 1, 16, 16, 16),
1, &conv2d_11_weights_array, NULL)
/* Tensor #2 */
AI_TENSOR_OBJ_DECLARE(
conv2d_12_bias, AI_STATIC,
2, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_12_bias_array, NULL)
/* Tensor #3 */
AI_TENSOR_OBJ_DECLARE(
conv2d_12_output, AI_STATIC,
3, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_12_output_array, NULL)
/* Tensor #4 */
AI_TENSOR_OBJ_DECLARE(
conv2d_12_scratch0, AI_STATIC,
4, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_12_scratch0_array, NULL)
/* Tensor #5 */
AI_TENSOR_OBJ_DECLARE(
conv2d_12_weights, AI_STATIC,
5, 0x0,
AI_SHAPE_INIT(4, 16, 1, 1, 16), AI_STRIDE_INIT(4, 4, 64, 1024, 1024),
1, &conv2d_12_weights_array, NULL)
/* Tensor #6 */
AI_TENSOR_OBJ_DECLARE(
conv2d_13_output, AI_STATIC,
6, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_13_output_array, NULL)
/* Tensor #7 */
AI_TENSOR_OBJ_DECLARE(
conv2d_13_weights, AI_STATIC,
7, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 16), AI_STRIDE_INIT(4, 1, 16, 16, 16),
1, &conv2d_13_weights_array, NULL)
/* Tensor #8 */
AI_TENSOR_OBJ_DECLARE(
conv2d_14_bias, AI_STATIC,
8, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_14_bias_array, NULL)
/* Tensor #9 */
AI_TENSOR_OBJ_DECLARE(
conv2d_14_output, AI_STATIC,
9, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_14_output_array, NULL)
/* Tensor #10 */
AI_TENSOR_OBJ_DECLARE(
conv2d_14_scratch0, AI_STATIC,
10, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_14_scratch0_array, NULL)
/* Tensor #11 */
AI_TENSOR_OBJ_DECLARE(
conv2d_14_weights, AI_STATIC,
11, 0x0,
AI_SHAPE_INIT(4, 16, 1, 1, 16), AI_STRIDE_INIT(4, 4, 64, 1024, 1024),
1, &conv2d_14_weights_array, NULL)
/* Tensor #12 */
AI_TENSOR_OBJ_DECLARE(
conv2d_16_output, AI_STATIC,
12, 0x0,
AI_SHAPE_INIT(4, 1, 16, 8, 8), AI_STRIDE_INIT(4, 4, 4, 64, 512),
1, &conv2d_16_output_array, NULL)
/* Tensor #13 */
AI_TENSOR_OBJ_DECLARE(
conv2d_16_weights, AI_STATIC,
13, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 16), AI_STRIDE_INIT(4, 1, 16, 16, 16),
1, &conv2d_16_weights_array, NULL)
/* Tensor #14 */
AI_TENSOR_OBJ_DECLARE(
conv2d_17_bias, AI_STATIC,
14, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_17_bias_array, NULL)
/* Tensor #15 */
AI_TENSOR_OBJ_DECLARE(
conv2d_17_output, AI_STATIC,
15, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_17_output_array, NULL)
/* Tensor #16 */
AI_TENSOR_OBJ_DECLARE(
conv2d_17_scratch0, AI_STATIC,
16, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_17_scratch0_array, NULL)
/* Tensor #17 */
AI_TENSOR_OBJ_DECLARE(
conv2d_17_weights, AI_STATIC,
17, 0x0,
AI_SHAPE_INIT(4, 16, 1, 1, 32), AI_STRIDE_INIT(4, 4, 64, 2048, 2048),
1, &conv2d_17_weights_array, NULL)
/* Tensor #18 */
AI_TENSOR_OBJ_DECLARE(
conv2d_18_bias, AI_STATIC,
18, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_18_bias_array, NULL)
/* Tensor #19 */
AI_TENSOR_OBJ_DECLARE(
conv2d_18_output, AI_STATIC,
19, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_18_output_array, NULL)
/* Tensor #20 */
AI_TENSOR_OBJ_DECLARE(
conv2d_18_weights, AI_STATIC,
20, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 32), AI_STRIDE_INIT(4, 1, 32, 32, 32),
1, &conv2d_18_weights_array, NULL)
/* Tensor #21 */
AI_TENSOR_OBJ_DECLARE(
conv2d_19_bias, AI_STATIC,
21, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_19_bias_array, NULL)
/* Tensor #22 */
AI_TENSOR_OBJ_DECLARE(
conv2d_19_output, AI_STATIC,
22, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_19_output_array, NULL)
/* Tensor #23 */
AI_TENSOR_OBJ_DECLARE(
conv2d_19_scratch0, AI_STATIC,
23, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_19_scratch0_array, NULL)
/* Tensor #24 */
AI_TENSOR_OBJ_DECLARE(
conv2d_19_weights, AI_STATIC,
24, 0x0,
AI_SHAPE_INIT(4, 32, 1, 1, 32), AI_STRIDE_INIT(4, 4, 128, 4096, 4096),
1, &conv2d_19_weights_array, NULL)
/* Tensor #25 */
AI_TENSOR_OBJ_DECLARE(
conv2d_20_bias, AI_STATIC,
25, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_20_bias_array, NULL)
/* Tensor #26 */
AI_TENSOR_OBJ_DECLARE(
conv2d_20_output, AI_STATIC,
26, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_20_output_array, NULL)
/* Tensor #27 */
AI_TENSOR_OBJ_DECLARE(
conv2d_20_scratch0, AI_STATIC,
27, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_20_scratch0_array, NULL)
/* Tensor #28 */
AI_TENSOR_OBJ_DECLARE(
conv2d_20_weights, AI_STATIC,
28, 0x0,
AI_SHAPE_INIT(4, 16, 1, 1, 32), AI_STRIDE_INIT(4, 4, 64, 2048, 2048),
1, &conv2d_20_weights_array, NULL)
/* Tensor #29 */
AI_TENSOR_OBJ_DECLARE(
conv2d_22_output, AI_STATIC,
29, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_22_output_array, NULL)
/* Tensor #30 */
AI_TENSOR_OBJ_DECLARE(
conv2d_22_weights, AI_STATIC,
30, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 32), AI_STRIDE_INIT(4, 1, 32, 32, 32),
1, &conv2d_22_weights_array, NULL)
/* Tensor #31 */
AI_TENSOR_OBJ_DECLARE(
conv2d_23_bias, AI_STATIC,
31, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_23_bias_array, NULL)
/* Tensor #32 */
AI_TENSOR_OBJ_DECLARE(
conv2d_23_output, AI_STATIC,
32, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_23_output_array, NULL)
/* Tensor #33 */
AI_TENSOR_OBJ_DECLARE(
conv2d_23_scratch0, AI_STATIC,
33, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_23_scratch0_array, NULL)
/* Tensor #34 */
AI_TENSOR_OBJ_DECLARE(
conv2d_23_weights, AI_STATIC,
34, 0x0,
AI_SHAPE_INIT(4, 32, 1, 1, 32), AI_STRIDE_INIT(4, 4, 128, 4096, 4096),
1, &conv2d_23_weights_array, NULL)
/* Tensor #35 */
AI_TENSOR_OBJ_DECLARE(
conv2d_24_output, AI_STATIC,
35, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_24_output_array, NULL)
/* Tensor #36 */
AI_TENSOR_OBJ_DECLARE(
conv2d_24_weights, AI_STATIC,
36, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 32), AI_STRIDE_INIT(4, 1, 32, 32, 32),
1, &conv2d_24_weights_array, NULL)
/* Tensor #37 */
AI_TENSOR_OBJ_DECLARE(
conv2d_25_bias, AI_STATIC,
37, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_25_bias_array, NULL)
/* Tensor #38 */
AI_TENSOR_OBJ_DECLARE(
conv2d_25_output, AI_STATIC,
38, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &conv2d_25_output_array, NULL)
/* Tensor #39 */
AI_TENSOR_OBJ_DECLARE(
conv2d_25_scratch0, AI_STATIC,
39, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &conv2d_25_scratch0_array, NULL)
/* Tensor #40 */
AI_TENSOR_OBJ_DECLARE(
conv2d_25_weights, AI_STATIC,
40, 0x0,
AI_SHAPE_INIT(4, 32, 1, 1, 32), AI_STRIDE_INIT(4, 4, 128, 4096, 4096),
1, &conv2d_25_weights_array, NULL)
/* Tensor #41 */
AI_TENSOR_OBJ_DECLARE(
conv2d_4_bias, AI_STATIC,
41, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_4_bias_array, NULL)
/* Tensor #42 */
AI_TENSOR_OBJ_DECLARE(
conv2d_4_output, AI_STATIC,
42, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_4_output_array, NULL)
/* Tensor #43 */
AI_TENSOR_OBJ_DECLARE(
conv2d_4_scratch0, AI_STATIC,
43, 0x0,
AI_SHAPE_INIT(4, 1, 1, 3, 3), AI_STRIDE_INIT(4, 4, 4, 4, 12),
1, &conv2d_4_scratch0_array, NULL)
/* Tensor #44 */
AI_TENSOR_OBJ_DECLARE(
conv2d_4_scratch1, AI_STATIC,
44, 0x0,
AI_SHAPE_INIT(4, 1, 16, 32, 2), AI_STRIDE_INIT(4, 4, 4, 64, 2048),
1, &conv2d_4_scratch1_array, NULL)
/* Tensor #45 */
AI_TENSOR_OBJ_DECLARE(
conv2d_4_weights, AI_STATIC,
45, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 16), AI_STRIDE_INIT(4, 4, 4, 64, 192),
1, &conv2d_4_weights_array, NULL)
/* Tensor #46 */
AI_TENSOR_OBJ_DECLARE(
conv2d_6_bias, AI_STATIC,
46, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_6_bias_array, NULL)
/* Tensor #47 */
AI_TENSOR_OBJ_DECLARE(
conv2d_6_output, AI_STATIC,
47, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_6_output_array, NULL)
/* Tensor #48 */
AI_TENSOR_OBJ_DECLARE(
conv2d_6_weights, AI_STATIC,
48, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 16), AI_STRIDE_INIT(4, 1, 16, 16, 16),
1, &conv2d_6_weights_array, NULL)
/* Tensor #49 */
AI_TENSOR_OBJ_DECLARE(
conv2d_7_bias, AI_STATIC,
49, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_7_bias_array, NULL)
/* Tensor #50 */
AI_TENSOR_OBJ_DECLARE(
conv2d_7_output, AI_STATIC,
50, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_7_output_array, NULL)
/* Tensor #51 */
AI_TENSOR_OBJ_DECLARE(
conv2d_7_scratch0, AI_STATIC,
51, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_7_scratch0_array, NULL)
/* Tensor #52 */
AI_TENSOR_OBJ_DECLARE(
conv2d_7_weights, AI_STATIC,
52, 0x0,
AI_SHAPE_INIT(4, 16, 1, 1, 16), AI_STRIDE_INIT(4, 4, 64, 1024, 1024),
1, &conv2d_7_weights_array, NULL)
/* Tensor #53 */
AI_TENSOR_OBJ_DECLARE(
conv2d_8_output, AI_STATIC,
53, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_8_output_array, NULL)
/* Tensor #54 */
AI_TENSOR_OBJ_DECLARE(
conv2d_8_weights, AI_STATIC,
54, 0x0,
AI_SHAPE_INIT(4, 1, 3, 3, 16), AI_STRIDE_INIT(4, 1, 16, 16, 16),
1, &conv2d_8_weights_array, NULL)
/* Tensor #55 */
AI_TENSOR_OBJ_DECLARE(
conv2d_9_bias, AI_STATIC,
55, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_9_bias_array, NULL)
/* Tensor #56 */
AI_TENSOR_OBJ_DECLARE(
conv2d_9_output, AI_STATIC,
56, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &conv2d_9_output_array, NULL)
/* Tensor #57 */
AI_TENSOR_OBJ_DECLARE(
conv2d_9_scratch0, AI_STATIC,
57, 0x0,
AI_SHAPE_INIT(4, 1, 16, 1, 1), AI_STRIDE_INIT(4, 4, 4, 64, 64),
1, &conv2d_9_scratch0_array, NULL)
/* Tensor #58 */
AI_TENSOR_OBJ_DECLARE(
conv2d_9_weights, AI_STATIC,
58, 0x0,
AI_SHAPE_INIT(4, 16, 1, 1, 16), AI_STRIDE_INIT(4, 4, 64, 1024, 1024),
1, &conv2d_9_weights_array, NULL)
/* Tensor #59 */
AI_TENSOR_OBJ_DECLARE(
eltwise_10_output, AI_STATIC,
59, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &eltwise_10_output_array, NULL)
/* Tensor #60 */
AI_TENSOR_OBJ_DECLARE(
eltwise_15_output, AI_STATIC,
60, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &eltwise_15_output_array, NULL)
/* Tensor #61 */
AI_TENSOR_OBJ_DECLARE(
eltwise_21_output, AI_STATIC,
61, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &eltwise_21_output_array, NULL)
/* Tensor #62 */
AI_TENSOR_OBJ_DECLARE(
eltwise_26_output, AI_STATIC,
62, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &eltwise_26_output_array, NULL)
/* Tensor #63 */
AI_TENSOR_OBJ_DECLARE(
gemm_28_bias, AI_STATIC,
63, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &gemm_28_bias_array, NULL)
/* Tensor #64 */
AI_TENSOR_OBJ_DECLARE(
gemm_28_output, AI_STATIC,
64, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &gemm_28_output_array, NULL)
/* Tensor #65 */
AI_TENSOR_OBJ_DECLARE(
gemm_28_weights, AI_STATIC,
65, 0x0,
AI_SHAPE_INIT(4, 32, 32, 1, 1), AI_STRIDE_INIT(4, 1, 16, 512, 512),
1, &gemm_28_weights_array, NULL)
/* Tensor #66 */
AI_TENSOR_OBJ_DECLARE(
gemm_29_bias, AI_STATIC,
66, 0x0,
AI_SHAPE_INIT(4, 1, 3, 1, 1), AI_STRIDE_INIT(4, 4, 4, 12, 12),
1, &gemm_29_bias_array, NULL)
/* Tensor #67 */
AI_TENSOR_OBJ_DECLARE(
gemm_29_output, AI_STATIC,
67, 0x0,
AI_SHAPE_INIT(4, 1, 3, 1, 1), AI_STRIDE_INIT(4, 4, 4, 12, 12),
1, &gemm_29_output_array, NULL)
/* Tensor #68 */
AI_TENSOR_OBJ_DECLARE(
gemm_29_weights, AI_STATIC,
68, 0x0,
AI_SHAPE_INIT(4, 32, 3, 1, 1), AI_STRIDE_INIT(4, 1, 16, 48, 48),
1, &gemm_29_weights_array, NULL)
/* Tensor #69 */
AI_TENSOR_OBJ_DECLARE(
nl_10_nl_output, AI_STATIC,
69, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &nl_10_nl_output_array, NULL)
/* Tensor #70 */
AI_TENSOR_OBJ_DECLARE(
nl_12_nl_output, AI_STATIC,
70, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &nl_12_nl_output_array, NULL)
/* Tensor #71 */
AI_TENSOR_OBJ_DECLARE(
nl_15_nl_output, AI_STATIC,
71, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &nl_15_nl_output_array, NULL)
/* Tensor #72 */
AI_TENSOR_OBJ_DECLARE(
nl_17_nl_output, AI_STATIC,
72, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &nl_17_nl_output_array, NULL)
/* Tensor #73 */
AI_TENSOR_OBJ_DECLARE(
nl_21_nl_output, AI_STATIC,
73, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &nl_21_nl_output_array, NULL)
/* Tensor #74 */
AI_TENSOR_OBJ_DECLARE(
nl_23_nl_output, AI_STATIC,
74, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &nl_23_nl_output_array, NULL)
/* Tensor #75 */
AI_TENSOR_OBJ_DECLARE(
nl_26_nl_output, AI_STATIC,
75, 0x0,
AI_SHAPE_INIT(4, 1, 32, 8, 8), AI_STRIDE_INIT(4, 4, 4, 128, 1024),
1, &nl_26_nl_output_array, NULL)
/* Tensor #76 */
AI_TENSOR_OBJ_DECLARE(
nl_28_nl_output, AI_STATIC,
76, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &nl_28_nl_output_array, NULL)
/* Tensor #77 */
AI_TENSOR_OBJ_DECLARE(
nl_30_output, AI_STATIC,
77, 0x0,
AI_SHAPE_INIT(4, 1, 3, 1, 1), AI_STRIDE_INIT(4, 4, 4, 12, 12),
1, &nl_30_output_array, NULL)
/* Tensor #78 */
AI_TENSOR_OBJ_DECLARE(
nl_7_nl_output, AI_STATIC,
78, 0x0,
AI_SHAPE_INIT(4, 1, 16, 16, 16), AI_STRIDE_INIT(4, 4, 4, 64, 1024),
1, &nl_7_nl_output_array, NULL)
/* Tensor #79 */
AI_TENSOR_OBJ_DECLARE(
pool_27_output, AI_STATIC,
79, 0x0,
AI_SHAPE_INIT(4, 1, 32, 1, 1), AI_STRIDE_INIT(4, 4, 4, 128, 128),
1, &pool_27_output_array, NULL)
/* Tensor #80 */
AI_TENSOR_OBJ_DECLARE(
serving_default_input0_output, AI_STATIC,
80, 0x0,
AI_SHAPE_INIT(4, 1, 1024, 1, 1), AI_STRIDE_INIT(4, 4, 4, 4096, 4096),
1, &serving_default_input0_output_array, NULL)
/* Tensor #81 */
AI_TENSOR_OBJ_DECLARE(
serving_default_input0_output0, AI_STATIC,
81, 0x0,
AI_SHAPE_INIT(4, 1, 1, 32, 32), AI_STRIDE_INIT(4, 4, 4, 4, 128),
1, &serving_default_input0_output_array, NULL)
/** Layer declarations section **********************************************/
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_30_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &gemm_29_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_30_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_30_layer, 30,
SM_TYPE, 0x0, NULL,
sm, forward_sm,
&nl_30_chain,
NULL, &nl_30_layer, AI_STATIC,
.nl_params = NULL,
.axis = AI_SHAPE_CHANNEL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
gemm_29_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_28_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &gemm_29_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &gemm_29_weights, &gemm_29_bias),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
gemm_29_layer, 29,
DENSE_TYPE, 0x0, NULL,
dense, forward_dense,
&gemm_29_chain,
NULL, &nl_30_layer, AI_STATIC,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_28_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &gemm_28_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_28_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_28_nl_layer, 28,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_28_nl_chain,
NULL, &gemm_29_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
gemm_28_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &pool_27_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &gemm_28_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &gemm_28_weights, &gemm_28_bias),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
gemm_28_layer, 28,
DENSE_TYPE, 0x0, NULL,
dense, forward_dense,
&gemm_28_chain,
NULL, &nl_28_nl_layer, AI_STATIC,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
pool_27_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_26_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &pool_27_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
pool_27_layer, 27,
POOL_TYPE, 0x0, NULL,
pool, forward_ap,
&pool_27_chain,
NULL, &gemm_28_layer, AI_STATIC,
.pool_size = AI_SHAPE_2D_INIT(8, 8),
.pool_stride = AI_SHAPE_2D_INIT(8, 8),
.pool_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_26_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_26_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_26_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_26_nl_layer, 26,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_26_nl_chain,
NULL, &pool_27_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
eltwise_26_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &nl_21_nl_output, &conv2d_25_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_26_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
eltwise_26_layer, 26,
ELTWISE_TYPE, 0x0, NULL,
eltwise, forward_eltwise,
&eltwise_26_chain,
NULL, &nl_26_nl_layer, AI_STATIC,
.operation = ai_sum_f32,
.buffer_operation = ai_sum_buffer_f32,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_25_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_24_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_25_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_25_weights, &conv2d_25_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_25_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_25_layer, 25,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_25_chain,
NULL, &eltwise_26_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_24_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_23_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_24_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_24_weights, &conv2d_18_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_24_layer, 24,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_24_chain,
NULL, &conv2d_25_layer, AI_STATIC,
.groups = 32,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_23_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_23_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_23_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_23_nl_layer, 23,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_23_nl_chain,
NULL, &conv2d_24_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_23_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_22_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_23_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_23_weights, &conv2d_23_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_23_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_23_layer, 23,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_23_chain,
NULL, &nl_23_nl_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_22_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_21_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_22_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_22_weights, &conv2d_18_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_22_layer, 22,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_22_chain,
NULL, &conv2d_23_layer, AI_STATIC,
.groups = 32,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_21_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_21_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_21_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_21_nl_layer, 21,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_21_nl_chain,
NULL, &conv2d_22_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
eltwise_21_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_20_output, &conv2d_19_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_21_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
eltwise_21_layer, 21,
ELTWISE_TYPE, 0x0, NULL,
eltwise, forward_eltwise,
&eltwise_21_chain,
NULL, &nl_21_nl_layer, AI_STATIC,
.operation = ai_sum_f32,
.buffer_operation = ai_sum_buffer_f32,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_19_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_18_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_19_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_19_weights, &conv2d_19_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_19_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_19_layer, 19,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_19_chain,
NULL, &eltwise_21_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_18_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_17_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_18_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_18_weights, &conv2d_18_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_18_layer, 18,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_18_chain,
NULL, &conv2d_19_layer, AI_STATIC,
.groups = 32,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_17_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_17_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_17_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_17_nl_layer, 17,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_17_nl_chain,
NULL, &conv2d_18_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_17_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_16_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_17_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_17_weights, &conv2d_17_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_17_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_17_layer, 17,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_17_chain,
NULL, &nl_17_nl_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_16_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_15_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_16_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_16_weights, &conv2d_6_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_16_layer, 16,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_16_chain,
NULL, &conv2d_17_layer, AI_STATIC,
.groups = 16,
.filter_stride = AI_SHAPE_2D_INIT(2, 2),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 2, 2),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_20_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_15_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_20_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_20_weights, &conv2d_20_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_20_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_20_layer, 20,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_20_chain,
NULL, &conv2d_16_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(2, 2),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_15_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_15_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_15_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_15_nl_layer, 15,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_15_nl_chain,
NULL, &conv2d_20_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
eltwise_15_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &nl_10_nl_output, &conv2d_14_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_15_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
eltwise_15_layer, 15,
ELTWISE_TYPE, 0x0, NULL,
eltwise, forward_eltwise,
&eltwise_15_chain,
NULL, &nl_15_nl_layer, AI_STATIC,
.operation = ai_sum_f32,
.buffer_operation = ai_sum_buffer_f32,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_14_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_13_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_14_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_14_weights, &conv2d_14_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_14_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_14_layer, 14,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_14_chain,
NULL, &eltwise_15_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_13_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_12_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_13_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_13_weights, &conv2d_6_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_13_layer, 13,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_13_chain,
NULL, &conv2d_14_layer, AI_STATIC,
.groups = 16,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_12_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_12_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_12_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_12_nl_layer, 12,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_12_nl_chain,
NULL, &conv2d_13_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_12_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_11_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_12_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_12_weights, &conv2d_12_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_12_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_12_layer, 12,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_12_chain,
NULL, &nl_12_nl_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_11_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_10_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_11_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_11_weights, &conv2d_6_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_11_layer, 11,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_11_chain,
NULL, &conv2d_12_layer, AI_STATIC,
.groups = 16,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_10_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_10_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_10_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_10_nl_layer, 10,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_10_nl_chain,
NULL, &conv2d_11_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
eltwise_10_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_4_output, &conv2d_9_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &eltwise_10_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
eltwise_10_layer, 10,
ELTWISE_TYPE, 0x0, NULL,
eltwise, forward_eltwise,
&eltwise_10_chain,
NULL, &nl_10_nl_layer, AI_STATIC,
.operation = ai_sum_f32,
.buffer_operation = ai_sum_buffer_f32,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_9_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_8_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_9_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_9_weights, &conv2d_9_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_9_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_9_layer, 9,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_9_chain,
NULL, &eltwise_10_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_8_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_7_nl_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_8_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_8_weights, &conv2d_6_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_8_layer, 8,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_8_chain,
NULL, &conv2d_9_layer, AI_STATIC,
.groups = 16,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
nl_7_nl_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_7_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &nl_7_nl_output),
AI_TENSOR_LIST_OBJ_EMPTY,
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
nl_7_nl_layer, 7,
NL_TYPE, 0x0, NULL,
nl, forward_relu,
&nl_7_nl_chain,
NULL, &conv2d_8_layer, AI_STATIC,
.nl_params = NULL,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_7_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_6_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_7_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_7_weights, &conv2d_7_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_7_scratch0, NULL)
)
AI_LAYER_OBJ_DECLARE(
conv2d_7_layer, 7,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_conv2d_if32of32wf32,
&conv2d_7_chain,
NULL, &nl_7_nl_layer, AI_STATIC,
.groups = 1,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 0, 0, 0, 0),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_6_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_4_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_6_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_6_weights, &conv2d_6_bias, NULL),
AI_TENSOR_LIST_OBJ_EMPTY
)
AI_LAYER_OBJ_DECLARE(
conv2d_6_layer, 6,
CONV2D_TYPE, 0x0, NULL,
conv2d, forward_dw_if32of32wf32,
&conv2d_6_chain,
NULL, &conv2d_7_layer, AI_STATIC,
.groups = 16,
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
AI_TENSOR_CHAIN_OBJ_DECLARE(
conv2d_4_chain, AI_STATIC_CONST, 4,
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &serving_default_input0_output0),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 1, &conv2d_4_output),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 3, &conv2d_4_weights, &conv2d_4_bias, NULL),
AI_TENSOR_LIST_OBJ_INIT(AI_FLAG_NONE, 2, &conv2d_4_scratch0, &conv2d_4_scratch1)
)
AI_LAYER_OBJ_DECLARE(
conv2d_4_layer, 5,
OPTIMIZED_CONV2D_TYPE, 0x0, NULL,
conv2d_nl_pool, forward_conv2d_if32of32wf32_nl_pool,
&conv2d_4_chain,
NULL, &conv2d_6_layer, AI_STATIC,
.groups = 1,
.nl_params = NULL,
.nl_func = AI_HANDLE_PTR(forward_lite_nl_relu_if32of32),
.filter_stride = AI_SHAPE_2D_INIT(1, 1),
.dilation = AI_SHAPE_2D_INIT(1, 1),
.filter_pad = AI_SHAPE_INIT(4, 1, 1, 1, 1),
.pool_size = AI_SHAPE_2D_INIT(2, 2),
.pool_stride = AI_SHAPE_2D_INIT(2, 2),
.pool_pad = AI_SHAPE_INIT(4, 0, 0, 1, 1),
.pool_func = AI_HANDLE_PTR(pool_func_ap_array_f32),
.in_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_SAME,
.out_ch_format = AI_LAYER_FORMAT_CHANNEL_LAST_VALID,
)
#if (AI_TOOLS_API_VERSION < AI_TOOLS_API_VERSION_1_5)
AI_NETWORK_OBJ_DECLARE(
AI_NET_OBJ_INSTANCE, AI_STATIC,
AI_BUFFER_INIT(AI_FLAG_NONE, AI_BUFFER_FORMAT_U8,
AI_BUFFER_SHAPE_INIT(AI_SHAPE_BCWH, 4, 1, 29372, 1, 1),
29372, NULL, NULL),
AI_BUFFER_INIT(AI_FLAG_NONE, AI_BUFFER_FORMAT_U8,
AI_BUFFER_SHAPE_INIT(AI_SHAPE_BCWH, 4, 1, 37120, 1, 1),
37120, NULL, NULL),
AI_TENSOR_LIST_IO_OBJ_INIT(AI_FLAG_NONE, AI_MODEL_IN_NUM, &serving_default_input0_output),
AI_TENSOR_LIST_IO_OBJ_INIT(AI_FLAG_NONE, AI_MODEL_OUT_NUM, &nl_30_output),
&conv2d_4_layer, 0x8f4871f5, NULL)
#else
AI_NETWORK_OBJ_DECLARE(
AI_NET_OBJ_INSTANCE, AI_STATIC,
AI_BUFFER_ARRAY_OBJ_INIT_STATIC(
AI_FLAG_NONE, 1,
AI_BUFFER_INIT(AI_FLAG_NONE, AI_BUFFER_FORMAT_U8,
AI_BUFFER_SHAPE_INIT(AI_SHAPE_BCWH, 4, 1, 29372, 1, 1),
29372, NULL, NULL)
),
AI_BUFFER_ARRAY_OBJ_INIT_STATIC(
AI_FLAG_NONE, 1,
AI_BUFFER_INIT(AI_FLAG_NONE, AI_BUFFER_FORMAT_U8,
AI_BUFFER_SHAPE_INIT(AI_SHAPE_BCWH, 4, 1, 37120, 1, 1),
37120, NULL, NULL)
),
AI_TENSOR_LIST_IO_OBJ_INIT(AI_FLAG_NONE, AI_MODEL_IN_NUM, &serving_default_input0_output),
AI_TENSOR_LIST_IO_OBJ_INIT(AI_FLAG_NONE, AI_MODEL_OUT_NUM, &nl_30_output),
&conv2d_4_layer, 0x8f4871f5, NULL)
#endif /*(AI_TOOLS_API_VERSION < AI_TOOLS_API_VERSION_1_5)*/
/******************************************************************************/
AI_DECLARE_STATIC
ai_bool model_configure_activations(
ai_network* net_ctx, const ai_network_params* params)
{
AI_ASSERT(net_ctx)
if (ai_platform_get_activations_map(g_model_activations_map, 1, params)) {
/* Updating activations (byte) offsets */
serving_default_input0_output_array.data = AI_PTR(g_model_activations_map[0] + 16540);
serving_default_input0_output_array.data_start = AI_PTR(g_model_activations_map[0] + 16540);
conv2d_4_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 20636);
conv2d_4_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 20636);
conv2d_4_scratch1_array.data = AI_PTR(g_model_activations_map[0] + 12444);
conv2d_4_scratch1_array.data_start = AI_PTR(g_model_activations_map[0] + 12444);
conv2d_4_output_array.data = AI_PTR(g_model_activations_map[0] + 20672);
conv2d_4_output_array.data_start = AI_PTR(g_model_activations_map[0] + 20672);
conv2d_6_output_array.data = AI_PTR(g_model_activations_map[0] + 4288);
conv2d_6_output_array.data_start = AI_PTR(g_model_activations_map[0] + 4288);
conv2d_7_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 37056);
conv2d_7_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 37056);
conv2d_7_output_array.data = AI_PTR(g_model_activations_map[0] + 3264);
conv2d_7_output_array.data_start = AI_PTR(g_model_activations_map[0] + 3264);
nl_7_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 3264);
nl_7_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 3264);
conv2d_8_output_array.data = AI_PTR(g_model_activations_map[0] + 1024);
conv2d_8_output_array.data_start = AI_PTR(g_model_activations_map[0] + 1024);
conv2d_9_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 37056);
conv2d_9_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 37056);
conv2d_9_output_array.data = AI_PTR(g_model_activations_map[0] + 0);
conv2d_9_output_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
eltwise_10_output_array.data = AI_PTR(g_model_activations_map[0] + 20672);
eltwise_10_output_array.data_start = AI_PTR(g_model_activations_map[0] + 20672);
nl_10_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 0);
nl_10_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
conv2d_11_output_array.data = AI_PTR(g_model_activations_map[0] + 20736);
conv2d_11_output_array.data_start = AI_PTR(g_model_activations_map[0] + 20736);
conv2d_12_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_12_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_12_output_array.data = AI_PTR(g_model_activations_map[0] + 19712);
conv2d_12_output_array.data_start = AI_PTR(g_model_activations_map[0] + 19712);
nl_12_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 19712);
nl_12_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 19712);
conv2d_13_output_array.data = AI_PTR(g_model_activations_map[0] + 17472);
conv2d_13_output_array.data_start = AI_PTR(g_model_activations_map[0] + 17472);
conv2d_14_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_14_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_14_output_array.data = AI_PTR(g_model_activations_map[0] + 16448);
conv2d_14_output_array.data_start = AI_PTR(g_model_activations_map[0] + 16448);
eltwise_15_output_array.data = AI_PTR(g_model_activations_map[0] + 0);
eltwise_15_output_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
nl_15_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 16384);
nl_15_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_20_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 0);
conv2d_20_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
conv2d_20_output_array.data = AI_PTR(g_model_activations_map[0] + 64);
conv2d_20_output_array.data_start = AI_PTR(g_model_activations_map[0] + 64);
conv2d_16_output_array.data = AI_PTR(g_model_activations_map[0] + 8256);
conv2d_16_output_array.data_start = AI_PTR(g_model_activations_map[0] + 8256);
conv2d_17_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 0);
conv2d_17_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
conv2d_17_output_array.data = AI_PTR(g_model_activations_map[0] + 12352);
conv2d_17_output_array.data_start = AI_PTR(g_model_activations_map[0] + 12352);
nl_17_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 20544);
nl_17_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 20544);
conv2d_18_output_array.data = AI_PTR(g_model_activations_map[0] + 8256);
conv2d_18_output_array.data_start = AI_PTR(g_model_activations_map[0] + 8256);
conv2d_19_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 16448);
conv2d_19_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 16448);
conv2d_19_output_array.data = AI_PTR(g_model_activations_map[0] + 16576);
conv2d_19_output_array.data_start = AI_PTR(g_model_activations_map[0] + 16576);
eltwise_21_output_array.data = AI_PTR(g_model_activations_map[0] + 8256);
eltwise_21_output_array.data_start = AI_PTR(g_model_activations_map[0] + 8256);
nl_21_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 0);
nl_21_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
conv2d_22_output_array.data = AI_PTR(g_model_activations_map[0] + 8192);
conv2d_22_output_array.data_start = AI_PTR(g_model_activations_map[0] + 8192);
conv2d_23_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_23_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_23_output_array.data = AI_PTR(g_model_activations_map[0] + 16512);
conv2d_23_output_array.data_start = AI_PTR(g_model_activations_map[0] + 16512);
nl_23_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 8192);
nl_23_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 8192);
conv2d_24_output_array.data = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_24_output_array.data_start = AI_PTR(g_model_activations_map[0] + 16384);
conv2d_25_scratch0_array.data = AI_PTR(g_model_activations_map[0] + 8192);
conv2d_25_scratch0_array.data_start = AI_PTR(g_model_activations_map[0] + 8192);
conv2d_25_output_array.data = AI_PTR(g_model_activations_map[0] + 24576);
conv2d_25_output_array.data_start = AI_PTR(g_model_activations_map[0] + 24576);
eltwise_26_output_array.data = AI_PTR(g_model_activations_map[0] + 8192);
eltwise_26_output_array.data_start = AI_PTR(g_model_activations_map[0] + 8192);
nl_26_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 0);
nl_26_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
pool_27_output_array.data = AI_PTR(g_model_activations_map[0] + 8192);
pool_27_output_array.data_start = AI_PTR(g_model_activations_map[0] + 8192);
gemm_28_output_array.data = AI_PTR(g_model_activations_map[0] + 0);
gemm_28_output_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
nl_28_nl_output_array.data = AI_PTR(g_model_activations_map[0] + 128);
nl_28_nl_output_array.data_start = AI_PTR(g_model_activations_map[0] + 128);
gemm_29_output_array.data = AI_PTR(g_model_activations_map[0] + 0);
gemm_29_output_array.data_start = AI_PTR(g_model_activations_map[0] + 0);
nl_30_output_array.data = AI_PTR(g_model_activations_map[0] + 12);
nl_30_output_array.data_start = AI_PTR(g_model_activations_map[0] + 12);
return true;
}
AI_ERROR_TRAP(net_ctx, INIT_FAILED, NETWORK_ACTIVATIONS);
return false;
}
/******************************************************************************/
AI_DECLARE_STATIC
ai_bool model_configure_weights(
ai_network* net_ctx, const ai_network_params* params)
{
AI_ASSERT(net_ctx)
if (ai_platform_get_weights_map(g_model_weights_map, 1, params)) {
/* Updating weights (byte) offsets */
conv2d_4_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_4_weights_array.data = AI_PTR(g_model_weights_map[0] + 0);
conv2d_4_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 0);
conv2d_4_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_4_bias_array.data = AI_PTR(g_model_weights_map[0] + 576);
conv2d_4_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 576);
conv2d_6_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_6_weights_array.data = AI_PTR(g_model_weights_map[0] + 640);
conv2d_6_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 640);
conv2d_6_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_6_bias_array.data = AI_PTR(g_model_weights_map[0] + 1216);
conv2d_6_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 1216);
conv2d_7_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_7_weights_array.data = AI_PTR(g_model_weights_map[0] + 1280);
conv2d_7_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 1280);
conv2d_7_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_7_bias_array.data = AI_PTR(g_model_weights_map[0] + 2304);
conv2d_7_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 2304);
conv2d_8_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_8_weights_array.data = AI_PTR(g_model_weights_map[0] + 2368);
conv2d_8_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 2368);
conv2d_9_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_9_weights_array.data = AI_PTR(g_model_weights_map[0] + 2944);
conv2d_9_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 2944);
conv2d_9_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_9_bias_array.data = AI_PTR(g_model_weights_map[0] + 3968);
conv2d_9_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 3968);
conv2d_11_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_11_weights_array.data = AI_PTR(g_model_weights_map[0] + 4032);
conv2d_11_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 4032);
conv2d_12_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_12_weights_array.data = AI_PTR(g_model_weights_map[0] + 4608);
conv2d_12_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 4608);
conv2d_12_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_12_bias_array.data = AI_PTR(g_model_weights_map[0] + 5632);
conv2d_12_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 5632);
conv2d_13_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_13_weights_array.data = AI_PTR(g_model_weights_map[0] + 5696);
conv2d_13_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 5696);
conv2d_14_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_14_weights_array.data = AI_PTR(g_model_weights_map[0] + 6272);
conv2d_14_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 6272);
conv2d_14_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_14_bias_array.data = AI_PTR(g_model_weights_map[0] + 7296);
conv2d_14_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 7296);
conv2d_20_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_20_weights_array.data = AI_PTR(g_model_weights_map[0] + 7360);
conv2d_20_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 7360);
conv2d_20_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_20_bias_array.data = AI_PTR(g_model_weights_map[0] + 9408);
conv2d_20_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 9408);
conv2d_16_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_16_weights_array.data = AI_PTR(g_model_weights_map[0] + 9536);
conv2d_16_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 9536);
conv2d_17_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_17_weights_array.data = AI_PTR(g_model_weights_map[0] + 10112);
conv2d_17_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 10112);
conv2d_17_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_17_bias_array.data = AI_PTR(g_model_weights_map[0] + 12160);
conv2d_17_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 12160);
conv2d_18_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_18_weights_array.data = AI_PTR(g_model_weights_map[0] + 12288);
conv2d_18_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 12288);
conv2d_18_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_18_bias_array.data = AI_PTR(g_model_weights_map[0] + 13440);
conv2d_18_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 13440);
conv2d_19_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_19_weights_array.data = AI_PTR(g_model_weights_map[0] + 13568);
conv2d_19_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 13568);
conv2d_19_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_19_bias_array.data = AI_PTR(g_model_weights_map[0] + 17664);
conv2d_19_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 17664);
conv2d_22_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_22_weights_array.data = AI_PTR(g_model_weights_map[0] + 17792);
conv2d_22_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 17792);
conv2d_23_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_23_weights_array.data = AI_PTR(g_model_weights_map[0] + 18944);
conv2d_23_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 18944);
conv2d_23_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_23_bias_array.data = AI_PTR(g_model_weights_map[0] + 23040);
conv2d_23_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 23040);
conv2d_24_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_24_weights_array.data = AI_PTR(g_model_weights_map[0] + 23168);
conv2d_24_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 23168);
conv2d_25_weights_array.format |= AI_FMT_FLAG_CONST;
conv2d_25_weights_array.data = AI_PTR(g_model_weights_map[0] + 24320);
conv2d_25_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 24320);
conv2d_25_bias_array.format |= AI_FMT_FLAG_CONST;
conv2d_25_bias_array.data = AI_PTR(g_model_weights_map[0] + 28416);
conv2d_25_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 28416);
gemm_28_weights_array.format |= AI_FMT_FLAG_CONST;
gemm_28_weights_array.data = AI_PTR(g_model_weights_map[0] + 28608);
gemm_28_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 28544);
gemm_28_bias_array.format |= AI_FMT_FLAG_CONST;
gemm_28_bias_array.data = AI_PTR(g_model_weights_map[0] + 29120);
gemm_28_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 29120);
gemm_29_weights_array.format |= AI_FMT_FLAG_CONST;
gemm_29_weights_array.data = AI_PTR(g_model_weights_map[0] + 29312);
gemm_29_weights_array.data_start = AI_PTR(g_model_weights_map[0] + 29248);
gemm_29_bias_array.format |= AI_FMT_FLAG_CONST;
gemm_29_bias_array.data = AI_PTR(g_model_weights_map[0] + 29360);
gemm_29_bias_array.data_start = AI_PTR(g_model_weights_map[0] + 29360);
return true;
}
AI_ERROR_TRAP(net_ctx, INIT_FAILED, NETWORK_WEIGHTS);
return false;
}
/** PUBLIC APIs SECTION *****************************************************/
AI_DEPRECATED
AI_API_ENTRY
ai_bool ai_model_get_info(
ai_handle network, ai_network_report* report)
{
ai_network* net_ctx = AI_NETWORK_ACQUIRE_CTX(network);
if (report && net_ctx)
{
ai_network_report r = {
.model_name = AI_MODEL_MODEL_NAME,
.model_signature = AI_MODEL_MODEL_SIGNATURE,
.model_datetime = AI_TOOLS_DATE_TIME,
.compile_datetime = AI_TOOLS_COMPILE_TIME,
.runtime_revision = ai_platform_runtime_get_revision(),
.runtime_version = ai_platform_runtime_get_version(),
.tool_revision = AI_TOOLS_REVISION_ID,
.tool_version = {AI_TOOLS_VERSION_MAJOR, AI_TOOLS_VERSION_MINOR,
AI_TOOLS_VERSION_MICRO, 0x0},
.tool_api_version = AI_STRUCT_INIT,
.api_version = ai_platform_api_get_version(),
.interface_api_version = ai_platform_interface_api_get_version(),
.n_macc = 957040,
.n_inputs = 0,
.inputs = NULL,
.n_outputs = 0,
.outputs = NULL,
.params = AI_STRUCT_INIT,
.activations = AI_STRUCT_INIT,
.n_nodes = 0,
.signature = 0x8f4871f5,
};
if (!ai_platform_api_get_network_report(network, &r)) return false;
*report = r;
return true;
}
return false;
}
AI_API_ENTRY
ai_bool ai_model_get_report(
ai_handle network, ai_network_report* report)
{
ai_network* net_ctx = AI_NETWORK_ACQUIRE_CTX(network);
if (report && net_ctx)
{
ai_network_report r = {
.model_name = AI_MODEL_MODEL_NAME,
.model_signature = AI_MODEL_MODEL_SIGNATURE,
.model_datetime = AI_TOOLS_DATE_TIME,
.compile_datetime = AI_TOOLS_COMPILE_TIME,
.runtime_revision = ai_platform_runtime_get_revision(),
.runtime_version = ai_platform_runtime_get_version(),
.tool_revision = AI_TOOLS_REVISION_ID,
.tool_version = {AI_TOOLS_VERSION_MAJOR, AI_TOOLS_VERSION_MINOR,
AI_TOOLS_VERSION_MICRO, 0x0},
.tool_api_version = AI_STRUCT_INIT,
.api_version = ai_platform_api_get_version(),
.interface_api_version = ai_platform_interface_api_get_version(),
.n_macc = 957040,
.n_inputs = 0,
.inputs = NULL,
.n_outputs = 0,
.outputs = NULL,
.map_signature = AI_MAGIC_SIGNATURE,
.map_weights = AI_STRUCT_INIT,
.map_activations = AI_STRUCT_INIT,
.n_nodes = 0,
.signature = 0x8f4871f5,
};
if (!ai_platform_api_get_network_report(network, &r)) return false;
*report = r;
return true;
}
return false;
}
AI_API_ENTRY
ai_error ai_model_get_error(ai_handle network)
{
return ai_platform_network_get_error(network);
}
AI_API_ENTRY
ai_error ai_model_create(
ai_handle* network, const ai_buffer* network_config)
{
return ai_platform_network_create(
network, network_config,
AI_CONTEXT_OBJ(&AI_NET_OBJ_INSTANCE),
AI_TOOLS_API_VERSION_MAJOR, AI_TOOLS_API_VERSION_MINOR, AI_TOOLS_API_VERSION_MICRO);
}
AI_API_ENTRY
ai_error ai_model_create_and_init(
ai_handle* network, const ai_handle activations[], const ai_handle weights[])
{
ai_error err;
ai_network_params params;
err = ai_model_create(network, AI_MODEL_DATA_CONFIG);
if (err.type != AI_ERROR_NONE) {
return err;
}
if (ai_model_data_params_get(&params) != true) {
err = ai_model_get_error(*network);
return err;
}
#if defined(AI_MODEL_DATA_ACTIVATIONS_COUNT)
/* set the addresses of the activations buffers */
for (ai_u16 idx=0; activations && idx<params.map_activations.size; idx++) {
AI_BUFFER_ARRAY_ITEM_SET_ADDRESS(&params.map_activations, idx, activations[idx]);
}
#endif
#if defined(AI_MODEL_DATA_WEIGHTS_COUNT)
/* set the addresses of the weight buffers */
for (ai_u16 idx=0; weights && idx<params.map_weights.size; idx++) {
AI_BUFFER_ARRAY_ITEM_SET_ADDRESS(&params.map_weights, idx, weights[idx]);
}
#endif
if (ai_model_init(*network, &params) != true) {
err = ai_model_get_error(*network);
}
return err;
}
AI_API_ENTRY
ai_buffer* ai_model_inputs_get(ai_handle network, ai_u16 *n_buffer)
{
if (network == AI_HANDLE_NULL) {
network = (ai_handle)&AI_NET_OBJ_INSTANCE;
AI_NETWORK_OBJ(network)->magic = AI_MAGIC_CONTEXT_TOKEN;
}
return ai_platform_inputs_get(network, n_buffer);
}
AI_API_ENTRY
ai_buffer* ai_model_outputs_get(ai_handle network, ai_u16 *n_buffer)
{
if (network == AI_HANDLE_NULL) {
network = (ai_handle)&AI_NET_OBJ_INSTANCE;
AI_NETWORK_OBJ(network)->magic = AI_MAGIC_CONTEXT_TOKEN;
}
return ai_platform_outputs_get(network, n_buffer);
}
AI_API_ENTRY
ai_handle ai_model_destroy(ai_handle network)
{
return ai_platform_network_destroy(network);
}
AI_API_ENTRY
ai_bool ai_model_init(
ai_handle network, const ai_network_params* params)
{
ai_network* net_ctx = AI_NETWORK_OBJ(ai_platform_network_init(network, params));
ai_bool ok = true;
if (!net_ctx) return false;
ok &= model_configure_weights(net_ctx, params);
ok &= model_configure_activations(net_ctx, params);
ok &= ai_platform_network_post_init(network);
return ok;
}
AI_API_ENTRY
ai_i32 ai_model_run(
ai_handle network, const ai_buffer* input, ai_buffer* output)
{
return ai_platform_network_process(network, input, output);
}
AI_API_ENTRY
ai_i32 ai_model_forward(ai_handle network, const ai_buffer* input)
{
return ai_platform_network_process(network, input, NULL);
}
#undef AI_MODEL_MODEL_SIGNATURE
#undef AI_NET_OBJ_INSTANCE
#undef AI_TOOLS_DATE_TIME
#undef AI_TOOLS_COMPILE_TIME