2230 lines
69 KiB
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(¶ms) != 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(¶ms.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(¶ms.map_weights, idx, weights[idx]);
|
|
}
|
|
#endif
|
|
if (ai_model_init(*network, ¶ms) != 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
|
|
|