31 #include "utils/Utils.h"
38 class InceptionV3Example :
public Example
41 InceptionV3Example() : cmd_parser(), common_opts(cmd_parser), common_params(), graph(0,
"InceptionV3")
44 bool do_setup(
int argc,
char **argv)
override
47 cmd_parser.parse(argc, argv);
48 cmd_parser.validate();
54 if (common_params.help)
56 cmd_parser.print_help(argv[0]);
61 std::cout << common_params << std::endl;
64 std::string data_path = common_params.data_path;
67 std::unique_ptr<IPreprocessor> preprocessor = std::make_unique<TFPreproccessor>();
70 const auto operation_layout = common_params.data_layout;
71 const TensorShape tensor_shape =
80 << common_params.target << common_params.fast_math_hint
85 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
86 PadStrideInfo(2, 2, 0, 0))
87 .
set_name(
"Conv2d_1a_3x3/convolution")
90 "/cnn_data/inceptionv3_model/Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
92 "/cnn_data/inceptionv3_model/Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
96 .
set_name(
"Conv2d_1a_3x3/BatchNorm/batchnorm")
97 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
102 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
103 PadStrideInfo(1, 1, 0, 0))
104 .
set_name(
"Conv2d_2a_3x3/convolution")
107 "/cnn_data/inceptionv3_model/Conv2d_2a_3x3_BatchNorm_moving_mean.npy"),
109 "/cnn_data/inceptionv3_model/Conv2d_2a_3x3_BatchNorm_moving_variance.npy"),
111 get_weights_accessor(data_path,
"/cnn_data/inceptionv3_model/Conv2d_2a_3x3_BatchNorm_beta.npy"),
113 .
set_name(
"Conv2d_2a_3x3/BatchNorm/batchnorm")
114 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
120 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
121 PadStrideInfo(1, 1, 1, 1))
122 .
set_name(
"Conv2d_2b_3x3/convolution")
125 "/cnn_data/inceptionv3_model/Conv2d_2b_3x3_BatchNorm_moving_mean.npy"),
127 "/cnn_data/inceptionv3_model/Conv2d_2b_3x3_BatchNorm_moving_variance.npy"),
129 get_weights_accessor(data_path,
"/cnn_data/inceptionv3_model/Conv2d_2b_3x3_BatchNorm_beta.npy"),
131 .
set_name(
"Conv2d_2b_3x3/BatchNorm/batchnorm")
132 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
142 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
143 PadStrideInfo(1, 1, 0, 0))
144 .
set_name(
"Conv2d_3b_1x1/convolution")
147 "/cnn_data/inceptionv3_model/Conv2d_3b_1x1_BatchNorm_moving_mean.npy"),
149 "/cnn_data/inceptionv3_model/Conv2d_3b_1x1_BatchNorm_moving_variance.npy"),
151 get_weights_accessor(data_path,
"/cnn_data/inceptionv3_model/Conv2d_3b_1x1_BatchNorm_beta.npy"),
153 .
set_name(
"Conv2d_3b_1x1/BatchNorm/batchnorm")
154 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
160 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr),
161 PadStrideInfo(1, 1, 0, 0))
162 .
set_name(
"Conv2d_4a_3x3/convolution")
165 "/cnn_data/inceptionv3_model/Conv2d_4a_3x3_BatchNorm_moving_mean.npy"),
167 "/cnn_data/inceptionv3_model/Conv2d_4a_3x3_BatchNorm_moving_variance.npy"),
169 get_weights_accessor(data_path,
"/cnn_data/inceptionv3_model/Conv2d_4a_3x3_BatchNorm_beta.npy"),
171 .
set_name(
"Conv2d_4a_3x3/BatchNorm/batchnorm")
172 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
177 .
set_name(
"MaxPool_5a_3x3/MaxPool");
179 graph << get_inception_node_A(data_path,
"Mixed_5b", weights_layout, 64U, std::make_tuple(48U, 64U),
180 std::make_tuple(64U, 96U, 96U), 32U)
182 graph << get_inception_node_A(data_path,
"Mixed_5c", weights_layout, 64U, std::make_tuple(48U, 64U),
183 std::make_tuple(64U, 96U, 96U), 64U,
true)
185 graph << get_inception_node_A(data_path,
"Mixed_5d", weights_layout, 64U, std::make_tuple(48U, 64U),
186 std::make_tuple(64U, 96U, 96U), 64U)
189 graph << get_inception_node_B(data_path,
"Mixed_6a", weights_layout, 384U, std::make_tuple(64U, 96U, 96U))
192 graph << get_inception_node_C(data_path,
"Mixed_6b", weights_layout, 192U, std::make_tuple(128U, 128U, 192U),
193 std::make_tuple(128U, 128U, 128U, 128U, 192U), 192U)
195 graph << get_inception_node_C(data_path,
"Mixed_6c", weights_layout, 192U, std::make_tuple(160U, 160U, 192U),
196 std::make_tuple(160U, 160U, 160U, 160U, 192U), 192U)
198 graph << get_inception_node_C(data_path,
"Mixed_6d", weights_layout, 192U, std::make_tuple(160U, 160U, 192U),
199 std::make_tuple(160U, 160U, 160U, 160U, 192U), 192U)
201 graph << get_inception_node_C(data_path,
"Mixed_6e", weights_layout, 192U, std::make_tuple(192U, 192U, 192U),
202 std::make_tuple(192U, 192U, 192U, 192U, 192U), 192U)
205 graph << get_inception_node_D(data_path,
"Mixed_7a", weights_layout, std::make_tuple(192U, 320U),
206 std::make_tuple(192U, 192U, 192U, 192U))
209 graph << get_inception_node_E(data_path,
"Mixed_7b", weights_layout, 320U, std::make_tuple(384U, 384U, 384U),
210 std::make_tuple(448U, 384U, 384U, 384U), 192U)
212 graph << get_inception_node_E(data_path,
"Mixed_7c", weights_layout, 320U, std::make_tuple(384U, 384U, 384U),
213 std::make_tuple(448U, 384U, 384U, 384U), 192U,
true)
218 .
set_name(
"Logits/AvgPool_1a_8x8/AvgPool")
224 PadStrideInfo(1, 1, 0, 0))
225 .
set_name(
"Logits/Conv2d_1c_1x1/convolution")
232 config.
use_tuner = common_params.enable_tuner;
235 config.
mlgo_file = common_params.mlgo_file;
238 graph.finalize(common_params.target, config);
243 void do_run()
override
255 ConcatLayer get_inception_node_A(
const std::string &data_path,
256 std::string &¶m_path,
259 std::tuple<unsigned int, unsigned int> b_filters,
260 std::tuple<unsigned int, unsigned int, unsigned int> c_filters,
262 bool is_name_different =
false)
264 std::string total_path =
"/cnn_data/inceptionv3_model/" + param_path +
"_";
267 std::string conv_id0 =
"_0a_";
268 std::string conv_id1 =
"2d_0b_";
269 if (is_name_different)
278 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
279 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
280 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/convolution")
282 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
283 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
284 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"),
286 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/BatchNorm/batchnorm")
287 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
288 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Relu");
292 1U, 1U, std::get<0>(b_filters),
295 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
296 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id0 +
"1x1/convolution")
298 "1x1_BatchNorm_moving_mean.npy"),
300 "1x1_BatchNorm_moving_variance.npy"),
303 "1x1_BatchNorm_beta.npy"),
305 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id0 +
"1x1/BatchNorm/batchnorm")
306 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
307 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id0 +
"1x1/Relu")
309 5U, 5U, std::get<1>(b_filters),
312 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 2, 2))
313 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id1 +
"5x5/convolution")
316 total_path +
"Branch_1_Conv" + conv_id1 +
"5x5_BatchNorm_moving_mean.npy"),
318 total_path +
"Branch_1_Conv" + conv_id1 +
"5x5_BatchNorm_moving_variance.npy"),
320 get_weights_accessor(data_path, total_path +
"Branch_1_Conv" + conv_id1 +
"5x5_BatchNorm_beta.npy"),
322 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id1 +
"5x5/BatchNorm/batchnorm")
323 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
324 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id1 +
"5x5/Relu");
328 1U, 1U, std::get<0>(c_filters),
329 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_weights.npy", weights_layout),
330 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
331 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/convolution")
333 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
334 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
335 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_beta.npy"),
337 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/BatchNorm/batchnorm")
338 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
339 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Relu")
341 3U, 3U, std::get<1>(c_filters),
342 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_weights.npy", weights_layout),
343 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 1, 1))
344 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/convolution")
346 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_moving_mean.npy"),
347 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_moving_variance.npy"),
348 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_beta.npy"),
350 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/BatchNorm/batchnorm")
351 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
352 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/Relu")
354 3U, 3U, std::get<2>(c_filters),
355 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_weights.npy", weights_layout),
356 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 1, 1))
357 .
set_name(param_path +
"/Branch_2/Conv2d_0c_3x3/convolution")
359 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_BatchNorm_moving_mean.npy"),
360 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_BatchNorm_moving_variance.npy"),
361 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_3x3_BatchNorm_beta.npy"),
363 .
set_name(param_path +
"/Branch_2/Conv2d_0c_3x3/BatchNorm/batcnorm")
364 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
365 .
set_name(param_path +
"/Branch_2/Conv2d_0c_3x3/Relu");
370 .
set_name(param_path +
"/Branch_3/AvgPool_0a_3x3/AvgPool")
373 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_weights.npy", weights_layout),
374 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
375 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/convolution")
377 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_mean.npy"),
378 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_variance.npy"),
379 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_beta.npy"),
381 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/BatchNorm/batchnorm")
382 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
383 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Relu");
385 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c), std::move(i_d));
388 ConcatLayer get_inception_node_B(
const std::string &data_path,
389 std::string &¶m_path,
392 std::tuple<unsigned int, unsigned int, unsigned int> b_filters)
394 std::string total_path =
"/cnn_data/inceptionv3_model/" + param_path +
"_";
398 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_1x1_weights.npy", weights_layout),
399 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(2, 2, 0, 0))
400 .
set_name(param_path +
"/Branch_0/Conv2d_1a_1x1/convolution")
402 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_1x1_BatchNorm_moving_mean.npy"),
403 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_1x1_BatchNorm_moving_variance.npy"),
404 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_1x1_BatchNorm_beta.npy"),
406 .
set_name(param_path +
"/Branch_0/Conv2d_1a_1x1/BatchNorm/batchnorm")
407 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
408 .
set_name(param_path +
"/Branch_0/Conv2d_1a_1x1/Relu");
412 1U, 1U, std::get<0>(b_filters),
413 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
414 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
415 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/convolution")
417 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
418 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
419 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"),
421 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/BatchNorm/batchnorm")
422 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
423 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Relu")
425 3U, 3U, std::get<1>(b_filters),
426 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_weights.npy", weights_layout),
427 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 1, 1))
428 .
set_name(param_path +
"/Branch_1/Conv2d_0b_3x3/convolution")
430 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_moving_mean.npy"),
431 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_moving_variance.npy"),
432 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_3x3_BatchNorm_beta.npy"),
434 .
set_name(param_path +
"/Branch_1/Conv2d_0b_3x3/BatchNorm/batchnorm")
435 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
436 .
set_name(param_path +
"/Branch_1/Conv2d_0b_3x3/Relu")
438 3U, 3U, std::get<2>(b_filters),
439 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_1x1_weights.npy", weights_layout),
440 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(2, 2, 0, 0))
441 .
set_name(param_path +
"/Branch_1/Conv2d_1a_1x1/convolution")
443 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_1x1_BatchNorm_moving_mean.npy"),
444 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_1x1_BatchNorm_moving_variance.npy"),
445 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_1x1_BatchNorm_beta.npy"),
447 .
set_name(param_path +
"/Branch_1/Conv2d_1a_1x1/BatchNorm/batchnorm")
448 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
449 .
set_name(param_path +
"/Branch_1/Conv2d_1a_1x1/Relu");
454 .
set_name(param_path +
"/Branch_2/MaxPool_1a_3x3/MaxPool");
456 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c));
460 get_inception_node_C(
const std::string &data_path,
461 std::string &¶m_path,
464 std::tuple<unsigned int, unsigned int, unsigned int> b_filters,
465 std::tuple<unsigned int, unsigned int, unsigned int, unsigned int, unsigned int> c_filters,
468 std::string total_path =
"/cnn_data/inceptionv3_model/" + param_path +
"_";
472 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
473 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
474 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/convolution")
476 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
477 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
478 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"),
480 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/BatchNorm/batchnorm")
481 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
482 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Relu");
486 1U, 1U, std::get<0>(b_filters),
487 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
488 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
489 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/convolution")
491 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
492 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
493 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"),
495 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/BatchNorm/batchnorm")
496 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
497 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Relu")
499 7U, 1U, std::get<1>(b_filters),
500 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_weights.npy", weights_layout),
501 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 3, 0))
502 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/convolution")
504 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_mean.npy"),
505 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_variance.npy"),
506 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_beta.npy"),
508 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/BatchNorm/batchnorm")
509 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
510 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/Relu")
512 1U, 7U, std::get<2>(b_filters),
513 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_weights.npy", weights_layout),
514 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 3))
515 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/convolution")
517 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_mean.npy"),
518 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_variance.npy"),
519 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_beta.npy"),
521 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/BatchNorm/batchnorm")
522 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
523 .
set_name(param_path +
"/Branch_0/Conv2d_0c_7x1/Relu");
527 1U, 1U, std::get<0>(c_filters),
528 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_weights.npy", weights_layout),
529 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
530 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/convolution")
532 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
533 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
534 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_beta.npy"),
536 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/BatchNorm/batchnorm")
537 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
538 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Relu")
540 1U, 7U, std::get<1>(c_filters),
541 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_weights.npy", weights_layout),
542 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 3))
543 .
set_name(param_path +
"/Branch_2/Conv2d_0b_7x1/convolution")
545 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_BatchNorm_moving_mean.npy"),
546 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_BatchNorm_moving_variance.npy"),
547 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_7x1_BatchNorm_beta.npy"),
549 .
set_name(param_path +
"/Branch_2/Conv2d_0b_7x1/BatchNorm/batchnorm")
550 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
551 .
set_name(param_path +
"/Branch_2/Conv2d_0b_7x1/Relu")
553 7U, 1U, std::get<2>(c_filters),
554 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_weights.npy", weights_layout),
555 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 3, 0))
556 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x7/convolution")
558 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_BatchNorm_moving_mean.npy"),
559 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_BatchNorm_moving_variance.npy"),
560 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x7_BatchNorm_beta.npy"),
562 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x7/BatchNorm/batchnorm")
563 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
564 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x7/Relu")
566 1U, 7U, std::get<3>(c_filters),
567 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_weights.npy", weights_layout),
568 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 3))
569 .
set_name(param_path +
"/Branch_2/Conv2d_0d_7x1/convolution")
571 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_BatchNorm_moving_mean.npy"),
572 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_BatchNorm_moving_variance.npy"),
573 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_7x1_BatchNorm_beta.npy"),
575 .
set_name(param_path +
"/Branch_2/Conv2d_0d_7x1/BatchNorm/batchnorm")
576 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
577 .
set_name(param_path +
"/Branch_2/Conv2d_0d_7x1/Relu")
579 7U, 1U, std::get<4>(c_filters),
580 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_weights.npy", weights_layout),
581 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 3, 0))
582 .
set_name(param_path +
"/Branch_2/Conv2d_0e_1x7/convolution")
584 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_BatchNorm_moving_mean.npy"),
585 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_BatchNorm_moving_variance.npy"),
586 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0e_1x7_BatchNorm_beta.npy"),
588 .
set_name(param_path +
"/Branch_2/Conv2d_0e_1x7/BatchNorm/batchnorm")
589 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
590 .
set_name(param_path +
"/Branch_2/Conv2d_0e_1x7/Relu");
595 .
set_name(param_path +
"/Branch_3/AvgPool_0a_3x3/AvgPool")
598 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_weights.npy", weights_layout),
599 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
600 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/convolution")
602 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_mean.npy"),
603 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_variance.npy"),
604 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_beta.npy"),
606 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/BatchNorm/batchnorm")
607 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
608 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Relu");
610 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c), std::move(i_d));
613 ConcatLayer get_inception_node_D(
const std::string &data_path,
614 std::string &¶m_path,
616 std::tuple<unsigned int, unsigned int> a_filters,
617 std::tuple<unsigned int, unsigned int, unsigned int, unsigned int> b_filters)
619 std::string total_path =
"/cnn_data/inceptionv3_model/" + param_path +
"_";
622 1U, 1U, std::get<0>(a_filters),
623 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
624 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
625 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/convolution")
627 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
628 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
629 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"),
631 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/BatchNorm/batchnorm")
632 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
633 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Relu")
635 3U, 3U, std::get<1>(a_filters),
636 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_weights.npy", weights_layout),
637 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(2, 2, 0, 0))
638 .
set_name(param_path +
"/Branch_0/Conv2d_1a_3x3/convolution")
640 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
641 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
642 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_1a_3x3_BatchNorm_beta.npy"),
644 .
set_name(param_path +
"/Branch_0/Conv2d_1a_3x3/BatchNorm/batchnorm")
645 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
646 .
set_name(param_path +
"/Branch_0/Conv2d_1a_3x3/Relu");
650 1U, 1U, std::get<0>(b_filters),
651 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
652 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
653 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/convolution")
655 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
656 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
657 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"),
659 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/BatchNorm/batchnorm")
660 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
661 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Relu")
663 7U, 1U, std::get<1>(b_filters),
664 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_weights.npy", weights_layout),
665 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 3, 0))
666 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/convolution")
668 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_mean.npy"),
669 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_moving_variance.npy"),
670 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x7_BatchNorm_beta.npy"),
672 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/BatchNorm/batchnorm")
673 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
674 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x7/Relu")
676 1U, 7U, std::get<2>(b_filters),
677 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_weights.npy", weights_layout),
678 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 3))
679 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/convolution")
681 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_mean.npy"),
682 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_moving_variance.npy"),
683 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0c_7x1_BatchNorm_beta.npy"),
685 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/BatchNorm/batchnorm")
686 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
687 .
set_name(param_path +
"/Branch_1/Conv2d_0c_7x1/Relu")
689 3U, 3U, std::get<3>(b_filters),
690 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_weights.npy", weights_layout),
691 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(2, 2, 0, 0))
692 .
set_name(param_path +
"/Branch_1/Conv2d_1a_3x3/convolution")
694 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_mean.npy"),
695 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_moving_variance.npy"),
696 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_1a_3x3_BatchNorm_beta.npy"),
698 .
set_name(param_path +
"/Branch_1/Conv2d_1a_3x3/BatchNorm/batchnorm")
699 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
700 .
set_name(param_path +
"/Branch_1/Conv2d_1a_3x3/Relu");
705 .
set_name(param_path +
"/Branch_2/MaxPool_1a_3x3/MaxPool");
707 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c));
710 ConcatLayer get_inception_node_E(
const std::string &data_path,
711 std::string &¶m_path,
714 std::tuple<unsigned int, unsigned int, unsigned int> b_filters,
715 std::tuple<unsigned int, unsigned int, unsigned int, unsigned int> c_filters,
717 bool is_name_different =
false)
720 std::string conv_id =
"_0b_";
721 if (is_name_different)
726 std::string total_path =
"/cnn_data/inceptionv3_model/" + param_path +
"_";
730 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_weights.npy", weights_layout),
731 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
732 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/convolution")
734 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
735 get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
736 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_0_Conv2d_0a_1x1_BatchNorm_beta.npy"),
738 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/BatchNorm/batchnorm")
739 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
740 .
set_name(param_path +
"/Branch_0/Conv2d_0a_1x1/Relu");
744 1U, 1U, std::get<0>(b_filters),
745 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_weights.npy", weights_layout),
746 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
747 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/convolution")
749 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
750 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
751 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0a_1x1_BatchNorm_beta.npy"),
753 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/BatchNorm/batchnorm")
754 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
755 .
set_name(param_path +
"/Branch_1/Conv2d_0a_1x1/Relu");
759 3U, 1U, std::get<1>(b_filters),
760 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x3_weights.npy", weights_layout),
761 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 1, 0))
762 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x3/convolution")
764 get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x3_BatchNorm_moving_mean.npy"),
766 total_path +
"Branch_1_Conv2d_0b_1x3_BatchNorm_moving_variance.npy"),
767 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_1_Conv2d_0b_1x3_BatchNorm_beta.npy"),
769 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x3/BatchNorm/batchnorm")
770 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
771 .
set_name(param_path +
"/Branch_1/Conv2d_0b_1x3/Relu");
775 1U, 3U, std::get<2>(b_filters),
778 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 1))
779 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id +
"3x1/convolution")
781 "3x1_BatchNorm_moving_mean.npy"),
783 "3x1_BatchNorm_moving_variance.npy"),
786 "3x1_BatchNorm_beta.npy"),
788 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id +
"3x1/BatchNorm/batchnorm")
789 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
790 .
set_name(param_path +
"/Branch_1/Conv2d" + conv_id +
"3x1/Relu");
793 i_b <<
ConcatLayer(std::move(i_b1), std::move(i_b2)).
set_name(param_path +
"/Branch_1/concat");
797 1U, 1U, std::get<0>(c_filters),
798 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_weights.npy", weights_layout),
799 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
800 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/convolution")
802 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_mean.npy"),
803 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_moving_variance.npy"),
804 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0a_1x1_BatchNorm_beta.npy"),
806 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/BatchNorm/batchnorm")
807 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
808 .
set_name(param_path +
"/Branch_2/Conv2d_0a_1x1/Relu")
810 3U, 3U, std::get<1>(c_filters),
811 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_weights.npy", weights_layout),
812 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 1, 1))
813 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/convolution")
815 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_moving_mean.npy"),
816 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_moving_variance.npy"),
817 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0b_3x3_BatchNorm_beta.npy"),
819 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/BatchNorm/batchnorm")
820 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
821 .
set_name(param_path +
"/Branch_2/Conv2d_0b_3x3/Relu");
825 3U, 1U, std::get<2>(c_filters),
826 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x3_weights.npy", weights_layout),
827 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 1, 0))
828 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x3/convolution")
830 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x3_BatchNorm_moving_mean.npy"),
832 total_path +
"Branch_2_Conv2d_0c_1x3_BatchNorm_moving_variance.npy"),
833 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0c_1x3_BatchNorm_beta.npy"),
835 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x3/BatchNorm/batchnorm")
836 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
837 .
set_name(param_path +
"/Branch_2/Conv2d_0c_1x3/Relu");
841 1U, 3U, std::get<3>(c_filters),
842 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_3x1_weights.npy", weights_layout),
843 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 1))
844 .
set_name(param_path +
"/Branch_2/Conv2d_0d_3x1/convolution")
846 get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_3x1_BatchNorm_moving_mean.npy"),
848 total_path +
"Branch_2_Conv2d_0d_3x1_BatchNorm_moving_variance.npy"),
849 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_2_Conv2d_0d_3x1_BatchNorm_beta.npy"),
851 .
set_name(param_path +
"/Branch_2/Conv2d_0d_3x1/BatchNorm/batchnorm")
852 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
853 .
set_name(param_path +
"/Branch_2/Conv2d_0d_3x1/Relu");
856 i_c <<
ConcatLayer(std::move(i_c1), std::move(i_c2)).
set_name(param_path +
"/Branch_2/concat");
861 .
set_name(param_path +
"/Branch_3/AvgPool_0a_3x3/AvgPool")
864 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_weights.npy", weights_layout),
865 std::unique_ptr<arm_compute::graph::ITensorAccessor>(
nullptr), PadStrideInfo(1, 1, 0, 0))
866 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/convolution")
868 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_mean.npy"),
869 get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_moving_variance.npy"),
870 nullptr,
get_weights_accessor(data_path, total_path +
"Branch_3_Conv2d_0b_1x1_BatchNorm_beta.npy"),
872 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/BatchNorm/batchnorm")
873 <<
ActivationLayer(ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
874 .
set_name(param_path +
"/Branch_3/Conv2d_0b_1x1/Relu");
876 return ConcatLayer(std::move(i_a), std::move(i_b), std::move(i_c), std::move(i_d));
894 int main(
int argc,
char **argv)
896 return arm_compute::utils::run_example<InceptionV3Example>(argc, argv);