31 #include "utils/Utils.h"
39 class InceptionV4Example final :
public Example
42 InceptionV4Example() : cmd_parser(), common_opts(cmd_parser), common_params(), graph(0,
"InceptionV4")
45 bool do_setup(
int argc,
char **argv)
override
48 cmd_parser.parse(argc, argv);
49 cmd_parser.validate();
55 if (common_params.help)
57 cmd_parser.print_help(argv[0]);
62 std::cout << common_params << std::endl;
65 std::string data_path = common_params.data_path;
68 std::unique_ptr<IPreprocessor> preprocessor = std::make_unique<TFPreproccessor>();
71 const auto operation_layout = common_params.data_layout;
80 graph << common_params.target << common_params.fast_math_hint
87 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(2, 2, 0, 0))
91 "/cnn_data/inceptionv4_model/Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
93 "/cnn_data/inceptionv4_model/Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
105 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
109 "/cnn_data/inceptionv4_model/Conv2d_2a_3x3_BatchNorm_moving_mean.npy"),
111 "/cnn_data/inceptionv4_model/Conv2d_2a_3x3_BatchNorm_moving_variance.npy"),
113 get_weights_accessor(data_path,
"/cnn_data/inceptionv4_model/Conv2d_2a_3x3_BatchNorm_beta.npy"),
115 .
set_name(
"Conv2d_2a_3x3/BatchNorm")
123 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 1))
127 "/cnn_data/inceptionv4_model/Conv2d_2b_3x3_BatchNorm_moving_mean.npy"),
129 "/cnn_data/inceptionv4_model/Conv2d_2b_3x3_BatchNorm_moving_variance.npy"),
131 get_weights_accessor(data_path,
"/cnn_data/inceptionv4_model/Conv2d_2b_3x3_BatchNorm_beta.npy"),
133 .
set_name(
"Conv2d_2b_3x3/BatchNorm")
137 graph << get_mixed_3a(data_path, weights_layout).
set_name(
"Mixed_3a/concat");
138 graph << get_mixed_4a(data_path, weights_layout).
set_name(
"Mixed_4a/concat");
139 graph << get_mixed_5a(data_path, weights_layout).
set_name(
"Mixed_5a/concat");
141 graph << get_inceptionA_block(data_path, weights_layout,
"Mixed_5b").
set_name(
"Mixed_5b/concat");
142 graph << get_inceptionA_block(data_path, weights_layout,
"Mixed_5c").
set_name(
"Mixed_5c/concat");
143 graph << get_inceptionA_block(data_path, weights_layout,
"Mixed_5d").
set_name(
"Mixed_5d/concat");
144 graph << get_inceptionA_block(data_path, weights_layout,
"Mixed_5e").
set_name(
"Mixed_5e/concat");
146 graph << get_reductionA_block(data_path, weights_layout).
set_name(
"Mixed_6a/concat");
148 graph << get_inceptionB_block(data_path, weights_layout,
"Mixed_6b").
set_name(
"Mixed_6b/concat");
149 graph << get_inceptionB_block(data_path, weights_layout,
"Mixed_6c").
set_name(
"Mixed_6c/concat");
150 graph << get_inceptionB_block(data_path, weights_layout,
"Mixed_6d").
set_name(
"Mixed_6d/concat");
151 graph << get_inceptionB_block(data_path, weights_layout,
"Mixed_6e").
set_name(
"Mixed_6e/concat");
152 graph << get_inceptionB_block(data_path, weights_layout,
"Mixed_6f").
set_name(
"Mixed_6f/concat");
153 graph << get_inceptionB_block(data_path, weights_layout,
"Mixed_6g").
set_name(
"Mixed_6g/concat");
154 graph << get_inceptionB_block(data_path, weights_layout,
"Mixed_6h").
set_name(
"Mixed_6h/concat");
156 graph << get_reductionB_block(data_path, weights_layout).
set_name(
"Mixed_7a/concat");
158 graph << get_inceptionC_block(data_path, weights_layout,
"Mixed_7b").
set_name(
"Mixed_7b/concat");
159 graph << get_inceptionC_block(data_path, weights_layout,
"Mixed_7c").
set_name(
"Mixed_7c/concat");
160 graph << get_inceptionC_block(data_path, weights_layout,
"Mixed_7d").
set_name(
"Mixed_7d/concat");
175 config.
use_tuner = common_params.enable_tuner;
178 config.
mlgo_file = common_params.mlgo_file;
184 if (common_params.enable_cl_cache)
186 #ifdef ARM_COMPUTE_CL
191 graph.finalize(common_params.target, config);
194 if (common_opts.enable_cl_cache)
196 #ifdef ARM_COMPUTE_CL
204 void do_run()
override
218 std::string total_path =
"/cnn_data/inceptionv4_model/Mixed_3a_";
223 .
set_name(
"Mixed_3a/Branch_0/MaxPool_0a_3x3/MaxPool");
228 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_3x3_weights.npy", weights_layout),
229 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(2, 2, 0, 0))
230 .
set_name(
"Mixed_3a/Branch_1/Conv2d_0a_3x3/Conv2D")
232 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_3x3_BatchNorm_moving_mean.npy"),
233 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_3x3_BatchNorm_moving_variance.npy"),
235 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_3x3_BatchNorm_beta.npy"), 0.001f)
236 .
set_name(
"Mixed_3a/Branch_1/Conv2d_0a_3x3/BatchNorm")
238 .
set_name(
"Mixed_3a/Branch_1/Conv2d_0a_3x3/Relu");
240 return ConcatLayer(std::move(i_a), std::move(i_b));
245 std::string total_path =
"/cnn_data/inceptionv4_model/Mixed_4a_";
250 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
251 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
252 .
set_name(
"Mixed_4a/Branch_0/Conv2d_0a_1x1/Conv2D")
254 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
255 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
257 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
258 .
set_name(
"Mixed_4a/Branch_0/Conv2d_0a_1x1/BatchNorm")
260 .
set_name(
"Mixed_4a/Branch_0/Conv2d_0a_1x1/Relu")
263 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_weights.npy", weights_layout),
264 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
265 .
set_name(
"Mixed_4a/Branch_0/Conv2d_1a_3x3/Conv2D")
267 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
268 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
270 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_beta.npy"), 0.001f)
271 .
set_name(
"Mixed_4a/Branch_0/Conv2d_1a_3x3/BatchNorm")
273 .
set_name(
"Mixed_4a/Branch_0/Conv2d_1a_3x3/Relu");
278 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
279 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
280 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0a_1x1/Conv2D")
282 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
283 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
285 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
286 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0a_1x1/BatchNorm")
288 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0a_1x1/Relu")
291 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_weights.npy", weights_layout),
292 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 3, 0))
293 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0b_1x7/Conv2D")
295 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_mean.npy"),
296 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_variance.npy"),
298 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_beta.npy"), 0.001f)
299 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0b_1x7/BatchNorm")
301 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0b_1x7/Relu")
304 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_weights.npy", weights_layout),
305 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 3))
306 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0c_7x1/Conv2D")
308 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_mean.npy"),
309 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_variance.npy"),
311 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_beta.npy"), 0.001f)
312 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0c_7x1/BatchNorm")
314 .
set_name(
"Mixed_4a/Branch_1/Conv2d_0c_7x1/Relu")
317 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_weights.npy", weights_layout),
318 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
319 .
set_name(
"Mixed_4a/Branch_1/Conv2d_1a_3x3/Conv2D")
321 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
322 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
324 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_beta.npy"), 0.001f)
325 .
set_name(
"Mixed_4a/Branch_1/Conv2d_1a_3x3/BatchNorm")
327 .
set_name(
"Mixed_4a/Branch_1/Conv2d_1a_3x3/Relu");
329 return ConcatLayer(std::move(i_a), std::move(i_b));
334 std::string total_path =
"/cnn_data/inceptionv4_model/Mixed_5a_";
339 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_weights.npy", weights_layout),
340 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(2, 2, 0, 0))
341 .
set_name(
"Mixed_5a/Branch_0/Conv2d_1a_3x3/Conv2D")
343 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
344 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
346 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_beta.npy"), 0.001f)
347 .
set_name(
"Mixed_5a/Branch_0/Conv2d_1a_3x3/BatchNorm")
349 .
set_name(
"Mixed_5a/Branch_0/Conv2d_1a_3x3/Relu");
354 .
set_name(
"Mixed_5a/Branch_1/MaxPool_1a_3x3/MaxPool");
356 return ConcatLayer(std::move(i_a), std::move(i_b));
359 ConcatLayer get_inceptionA_block(
const std::string &data_path,
DataLayout weights_layout, std::string &¶m_path)
361 std::string total_path =
"/cnn_data/inceptionv4_model/" + param_path +
"_";
366 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
367 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
368 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Conv2D")
370 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
371 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
373 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
374 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/BatchNorm")
376 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Relu");
381 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
382 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
383 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Conv2D")
385 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
386 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
388 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
389 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/BatchNorm")
391 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Relu")
394 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_weights.npy", weights_layout),
395 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 1))
396 .
set_name(param_path +
"/Branch_1/Conv2d_0b_3x3/Conv2D")
398 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_moving_mean.npy"),
399 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_moving_variance.npy"),
401 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_beta.npy"), 0.001f)
402 .
set_name(param_path +
"/Branch_1/Conv2d_0b_3x3/BatchNorm")
404 .
set_name(param_path +
"/Branch_1/Conv2d_0b_3x3/Relu");
409 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_weights.npy", weights_layout),
410 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
411 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Conv2D")
413 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
414 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
416 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
417 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/BatchNorm")
419 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Relu")
422 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_weights.npy", weights_layout),
423 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 1))
424 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/Conv2D")
426 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_moving_mean.npy"),
427 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_moving_variance.npy"),
429 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_beta.npy"), 0.001f)
430 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/BatchNorm")
432 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/Relu")
435 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_weights.npy", weights_layout),
436 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 1))
437 .
set_name(param_path +
"/Branch_2/Conv2d_0c_3x3/Conv2D")
439 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_BatchNorm_moving_mean.npy"),
440 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_BatchNorm_moving_variance.npy"),
442 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_BatchNorm_beta.npy"), 0.001f)
443 .
set_name(param_path +
"/Branch_2/Conv2d_0c_3x3/BatchNorm")
445 .
set_name(param_path +
"/Branch_2/Conv2d_0c_3x3/Relu");
450 .
set_name(param_path +
"/Branch_3/AvgPool_0a_3x3/AvgPool")
453 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_weights.npy", weights_layout),
454 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
455 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Conv2D")
457 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_mean.npy"),
458 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_variance.npy"),
460 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_beta.npy"), 0.001f)
461 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/BatchNorm")
463 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Relu");
465 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c), std::move(i_d));
470 std::string total_path =
"/cnn_data/inceptionv4_model/Mixed_6a_";
475 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_weights.npy", weights_layout),
476 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(2, 2, 0, 0))
477 .
set_name(
"Mixed_6a/Branch_0/Conv2d_1a_3x3/Conv2D")
479 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
480 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
482 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_beta.npy"), 0.001f)
483 .
set_name(
"Mixed_6a/Branch_0/Conv2d_1a_3x3/BatchNorm")
485 .
set_name(
"Mixed_6a/Branch_0/Conv2d_1a_3x3/Relu");
490 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
491 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
492 .
set_name(
"Mixed_6a/Branch_1/Conv2d_0a_1x1/Conv2D")
494 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
495 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
497 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
498 .
set_name(
"Mixed_6a/Branch_1/Conv2d_0a_1x1/BatchNorm")
500 .
set_name(
"Mixed_6a/Branch_1/Conv2d_0a_1x1/Relu")
503 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_weights.npy", weights_layout),
504 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 1))
505 .
set_name(
"Mixed_6a/Branch_1/Conv2d_0b_3x3/Conv2D")
507 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_moving_mean.npy"),
508 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_moving_variance.npy"),
510 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_beta.npy"), 0.001f)
511 .
set_name(
"Mixed_6a/Branch_1/Conv2d_0b_3x3/BatchNorm")
513 .
set_name(
"Mixed_6a/Branch_1/Conv2d_0b_3x3/Relu")
516 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_weights.npy", weights_layout),
517 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(2, 2, 0, 0))
518 .
set_name(
"Mixed_6a/Branch_1/Conv2d_1a_3x3/Conv2D")
520 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
521 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
523 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_beta.npy"), 0.001f)
524 .
set_name(
"Mixed_6a/Branch_1/Conv2d_1a_3x3/BatchNorm")
526 .
set_name(
"Mixed_6a/Branch_1/Conv2d_1a_3x3/Relu");
531 .
set_name(
"Mixed_6a/Branch_2/MaxPool_1a_3x3/MaxPool");
533 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c));
536 ConcatLayer get_inceptionB_block(
const std::string &data_path,
DataLayout weights_layout, std::string &¶m_path)
538 std::string total_path =
"/cnn_data/inceptionv4_model/" + param_path +
"_";
543 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
544 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
545 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Conv2D")
547 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
548 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
550 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
551 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/BatchNorm")
553 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Relu");
558 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
559 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
560 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Conv2D")
562 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
563 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
565 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
566 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/BatchNorm")
568 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Relu")
571 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_weights.npy", weights_layout),
572 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 3, 0))
573 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/Conv2D")
575 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_mean.npy"),
576 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_variance.npy"),
578 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_beta.npy"), 0.001f)
579 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/BatchNorm")
581 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/Relu")
584 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_weights.npy", weights_layout),
585 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 3))
586 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/Conv2D")
588 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_mean.npy"),
589 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_variance.npy"),
591 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_beta.npy"), 0.001f)
592 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/BatchNorm")
594 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/Relu");
599 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_weights.npy", weights_layout),
600 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
601 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Conv2D")
603 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
604 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
606 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
607 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/BatchNorm")
609 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Relu")
612 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_weights.npy", weights_layout),
613 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 3))
614 .
set_name(param_path +
"/Branch_2/Conv2d_0b_7x1/Conv2D")
616 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_BatchNorm_moving_mean.npy"),
617 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_BatchNorm_moving_variance.npy"),
619 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_BatchNorm_beta.npy"), 0.001f)
620 .
set_name(param_path +
"/Branch_2/Conv2d_0b_7x1/BatchNorm")
622 .
set_name(param_path +
"/Branch_2/Conv2d_0b_7x1/Relu")
625 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_weights.npy", weights_layout),
626 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 3, 0))
627 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x7/Conv2D")
629 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_BatchNorm_moving_mean.npy"),
630 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_BatchNorm_moving_variance.npy"),
632 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_BatchNorm_beta.npy"), 0.001f)
633 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x7/BatchNorm")
635 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x7/Relu")
638 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_weights.npy", weights_layout),
639 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 3))
640 .
set_name(param_path +
"/Branch_2/Conv2d_0d_7x1/Conv2D")
642 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_BatchNorm_moving_mean.npy"),
643 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_BatchNorm_moving_variance.npy"),
645 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_BatchNorm_beta.npy"), 0.001f)
646 .
set_name(param_path +
"/Branch_2/Conv2d_0d_7x1/BatchNorm")
648 .
set_name(param_path +
"/Branch_2/Conv2d_0d_7x1/Relu")
651 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_weights.npy", weights_layout),
652 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 3, 0))
653 .
set_name(param_path +
"/Branch_2/Conv2d_0e_1x7/Conv2D")
655 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_BatchNorm_moving_mean.npy"),
656 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_BatchNorm_moving_variance.npy"),
658 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_BatchNorm_beta.npy"), 0.001f)
659 .
set_name(param_path +
"/Branch_2/Conv2d_0e_1x7/BatchNorm")
661 .
set_name(param_path +
"/Branch_2/Conv2d_0e_1x7/Relu");
666 .
set_name(param_path +
"/Branch_3/AvgPool_0a_3x3/AvgPool")
669 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_weights.npy", weights_layout),
670 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
671 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Conv2D")
673 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_mean.npy"),
674 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_variance.npy"),
676 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_beta.npy"), 0.001f)
677 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/BatchNorm")
679 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Relu");
681 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c), std::move(i_d));
686 std::string total_path =
"/cnn_data/inceptionv4_model/Mixed_7a_";
691 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
692 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
693 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0a_1x1/Conv2D")
695 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
696 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
698 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
699 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0a_1x1/BatchNorm")
701 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0a_1x1/Relu")
704 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_weights.npy", weights_layout),
705 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(2, 2, 0, 0))
706 .
set_name(
"Mixed_7a/Branch_0/Conv2d_1a_3x3/Conv2D")
708 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
709 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
711 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_beta.npy"), 0.001f)
712 .
set_name(
"Mixed_7a/Branch_0/Conv2d_1a_3x3/BatchNorm")
714 .
set_name(
"Mixed_7a/Branch_0/Conv2d_1a_3x3/Relu");
719 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
720 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
721 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0a_1x1/Conv2D")
723 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
724 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
726 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
727 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0a_1x1/BatchNorm")
729 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0a_1x1/Relu")
732 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_weights.npy", weights_layout),
733 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 3, 0))
734 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0b_1x7/Conv2D")
736 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_mean.npy"),
737 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_variance.npy"),
739 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_beta.npy"), 0.001f)
740 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0b_1x7/BatchNorm")
742 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0b_1x7/Relu")
745 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_weights.npy", weights_layout),
746 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 3))
747 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0c_7x1/Conv2D")
749 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_mean.npy"),
750 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_variance.npy"),
752 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_beta.npy"), 0.001f)
753 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0c_7x1/BatchNorm")
755 .
set_name(
"Mixed_7a/Branch_1/Conv2d_0c_7x1/Relu")
758 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_weights.npy", weights_layout),
759 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(2, 2, 0, 0))
760 .
set_name(
"Mixed_7a/Branch_1/Conv2d_1a_3x3/Conv2D")
762 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
763 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
765 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_beta.npy"), 0.001f)
766 .
set_name(
"Mixed_7a/Branch_1/Conv2d_1a_3x3/BatchNorm")
768 .
set_name(
"Mixed_7a/Branch_1/Conv2d_1a_3x3/Relu");
773 .
set_name(
"Mixed_7a/Branch_2/MaxPool_1a_3x3/MaxPool");
775 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c));
778 ConcatLayer get_inceptionC_block(
const std::string &data_path,
DataLayout weights_layout, std::string &¶m_path)
780 std::string total_path =
"/cnn_data/inceptionv4_model/" + param_path +
"_";
785 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
786 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
787 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Conv2D")
789 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
790 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
792 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
793 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/BatchNorm")
795 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Relu");
800 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
801 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
802 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Conv2D")
804 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
805 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
807 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
808 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/BatchNorm")
810 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Relu");
815 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x3_weights.npy", weights_layout),
816 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 0))
817 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x3/Conv2D")
819 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x3_BatchNorm_moving_mean.npy"),
821 total_path +
"Branch_1_Conv2d_0b_1x3_BatchNorm_moving_variance.npy"),
823 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x3_BatchNorm_beta.npy"), 0.001f)
824 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x3/BatchNorm")
826 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x3/Relu");
831 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_3x1_weights.npy", weights_layout),
832 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 1))
833 .
set_name(param_path +
"/Branch_1/Conv2d_0c_3x1/Conv2D")
835 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_3x1_BatchNorm_moving_mean.npy"),
837 total_path +
"Branch_1_Conv2d_0c_3x1_BatchNorm_moving_variance.npy"),
839 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_3x1_BatchNorm_beta.npy"), 0.001f)
840 .
set_name(param_path +
"/Branch_1/Conv2d_0c_3x1/BatchNorm")
842 .
set_name(param_path +
"/Branch_1/Conv2d_0c_3x1/Relu");
845 i_b <<
ConcatLayer(std::move(i_b1), std::move(i_b2)).
set_name(param_path +
"/Branch_1/concat");
850 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_weights.npy", weights_layout),
851 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
852 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Conv2D")
854 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
855 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
857 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_beta.npy"), 0.001f)
858 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/BatchNorm")
860 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Relu")
863 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x1_weights.npy", weights_layout),
864 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 1))
865 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x1/Conv2D")
867 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x1_BatchNorm_moving_mean.npy"),
868 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x1_BatchNorm_moving_variance.npy"),
870 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x1_BatchNorm_beta.npy"), 0.001f)
871 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x1/BatchNorm")
873 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x1/Relu")
876 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x3_weights.npy", weights_layout),
877 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 0))
878 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x3/Conv2D")
880 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x3_BatchNorm_moving_mean.npy"),
881 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x3_BatchNorm_moving_variance.npy"),
883 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x3_BatchNorm_beta.npy"), 0.001f)
884 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x3/BatchNorm")
886 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x3/Relu");
891 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_1x3_weights.npy", weights_layout),
892 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 1, 0))
893 .
set_name(param_path +
"/Branch_2/Conv2d_0d_1x3/Conv2D")
895 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_1x3_BatchNorm_moving_mean.npy"),
897 total_path +
"Branch_2_Conv2d_0d_1x3_BatchNorm_moving_variance.npy"),
899 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_1x3_BatchNorm_beta.npy"), 0.001f)
900 .
set_name(param_path +
"/Branch_2/Conv2d_0d_1x3/BatchNorm")
902 .
set_name(param_path +
"/Branch_2/Conv2d_0d_1x3/Relu");
907 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_3x1_weights.npy", weights_layout),
908 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 1))
909 .
set_name(param_path +
"/Branch_2/Conv2d_0e_3x1/Conv2D")
911 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_3x1_BatchNorm_moving_mean.npy"),
913 total_path +
"Branch_2_Conv2d_0e_3x1_BatchNorm_moving_variance.npy"),
915 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_3x1_BatchNorm_beta.npy"), 0.001f)
916 .
set_name(param_path +
"/Branch_2/Conv2d_0e_3x1/BatchNorm")
918 .
set_name(param_path +
"/Branch_2/Conv2d_0e_3x1/Relu");
921 i_c <<
ConcatLayer(std::move(i_c1), std::move(i_c2)).
set_name(param_path +
"/Branch_2/concat");
926 .
set_name(param_path +
"/Branch_3/AvgPool_0a_3x3/AvgPool")
929 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_weights.npy", weights_layout),
930 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
PadStrideInfo(1, 1, 0, 0))
931 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Conv2D")
933 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_mean.npy"),
934 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_variance.npy"),
936 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_beta.npy"), 0.001f)
937 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/BatchNorm")
939 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Relu");
941 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c), std::move(i_d));
959 int main(
int argc,
char **argv)
961 return arm_compute::utils::run_example<InceptionV4Example>(argc, argv);