Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / tests / unit / cnn_network / cnn_net_reader_impl_test.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <gtest/gtest.h>
6 #include <inference_engine/parsers.h>
7 #include <inference_engine/ie_cnn_net_reader_impl.h>
8 #include <test_model_path.hpp>
9 #include <mock_icnn_network.hpp>
10 #include <gmock/gmock-more-actions.h>
11 #include "cnn_network_impl.hpp"
12 #include "mock_iformat_parser.hpp"
13 #include <test_assertions.hpp>
14 #include <single_layer_common.hpp>
15
16 using namespace testing;
17 using namespace InferenceEngine;
18 using namespace InferenceEngine::details;
19 using namespace std;
20
21 class CNNNetReaderImplTest : public ::testing::Test {
22 public:
23     StatusCode sts = OK;
24     ResponseDesc resp;
25 };
26
27 struct MockFormatParserCreator : public FormatParserCreator {
28     MockFormatParserCreator() {
29         _parser = make_shared<MockIFormatParser>();
30     }
31
32     std::shared_ptr<IFormatParser> create(int version) override {
33         return _parser;
34     }
35
36     MockIFormatParser* getParser() {
37         return _parser.get();
38     }
39
40 private:
41     std::shared_ptr<MockIFormatParser> _parser;
42 };
43
44 TEST_F(CNNNetReaderImplTest, validateIsCalled) {
45     std::string model =
46             "<net name=\"PVANET\" version=\"2\" batch=\"1\">"
47             "    <layers>"
48             "        <layer name=\"data\" type=\"Input\" precision=\"FP32\" id=\"0\">"
49             "            <output>"
50             "                <port id=\"0\">"
51             "                    <dim>1</dim>"
52             "                    <dim>3</dim>"
53             "                    <dim>544</dim>"
54             "                    <dim>992</dim>"
55             "                </port>"
56             "            </output>"
57             "        </layer>"
58             "        <layer name=\"conv1_1_conv\" type=\"Convolution\" precision=\"FP32\" id=\"2\">"
59             "            <convolution_data stride-x=\"2\" stride-y=\"2\" pad-x=\"3\" pad-y=\"3\" kernel-x=\"7\" kernel-y=\"7\" output=\"16\" group=\"1\"/>"
60             "            <input>"
61             "                <port id=\"2\">"
62             "                    <dim>1</dim>"
63             "                    <dim>3</dim>"
64             "                    <dim>544</dim>"
65             "                    <dim>992</dim>"
66             "                </port>"
67             "            </input>"
68             "            <output>"
69             "                <port id=\"3\">"
70             "                    <dim>1</dim>"
71             "                    <dim>16</dim>"
72             "                    <dim>272</dim>"
73             "                    <dim>496</dim>"
74             "                </port>"
75             "            </output>"
76             "            <weights offset=\"0\" size=\"9408\"/>"
77             "            <biases offset=\"9408\" size=\"64\"/>"
78             "        </layer>"
79             "        <layer name=\"conv1_1_neg\" type=\"Power\" precision=\"FP32\" id=\"3\">"
80             "            <power_data power=\"1\" scale=\"-1\" shift=\"0\"/>"
81             "            <input>"
82             "                <port id=\"4\">"
83             "                    <dim>1</dim>"
84             "                    <dim>16</dim>"
85             "                    <dim>272</dim>"
86             "                    <dim>496</dim>"
87             "                </port>"
88             "            </input>"
89             "            <output>"
90             "                <port id=\"5\">"
91             "                    <dim>1</dim>"
92             "                    <dim>16</dim>"
93             "                    <dim>272</dim>"
94             "                    <dim>496</dim>"
95             "                </port>"
96             "            </output>"
97             "        </layer>"
98             "        <layer name=\"conv1_1_concat\" type=\"Concat\" precision=\"FP32\" id=\"4\">"
99             "            <concat_data axis=\"1\"/>"
100             "            <input>"
101             "                <port id=\"6\">"
102             "                    <dim>1</dim>"
103             "                    <dim>16</dim>"
104             "                    <dim>272</dim>"
105             "                    <dim>496</dim>"
106             "                </port>"
107             "                <port id=\"7\">"
108             "                    <dim>1</dim>"
109             "                    <dim>16</dim>"
110             "                    <dim>272</dim>"
111             "                    <dim>496</dim>"
112             "                </port>"
113             "            </input>"
114             "            <output>"
115             "                <port id=\"8\">"
116             "                    <dim>1</dim>"
117             "                    <dim>32</dim>"
118             "                    <dim>272</dim>"
119             "                    <dim>496</dim>"
120             "                </port>"
121             "            </output>"
122             "        </layer>"
123             "        <layer name=\"conv1_1_scale\" type=\"ScaleShift\" precision=\"FP32\" id=\"5\">"
124             "            <input>"
125             "                <port id=\"9\">"
126             "                    <dim>1</dim>"
127             "                    <dim>32</dim>"
128             "                    <dim>272</dim>"
129             "                    <dim>496</dim>"
130             "                </port>"
131             "            </input>"
132             "            <output>"
133             "                <port id=\"10\">"
134             "                    <dim>1</dim>"
135             "                    <dim>32</dim>"
136             "                    <dim>272</dim>"
137             "                    <dim>496</dim>"
138             "                </port>"
139             "            </output>"
140             "            <weights offset=\"9472\" size=\"128\"/>"
141             "            <biases offset=\"9600\" size=\"128\"/>"
142             "        </layer>"
143             "        <layer name=\"conv1_1_relu\" type=\"ReLU\" precision=\"FP32\" id=\"6\">"
144             "            <data negative_slope=\"0\" engine=\"caffe.ReLUParameter.DEFAULT\"/>"
145             "            <input>"
146             "                <port id=\"11\">"
147             "                    <dim>1</dim>"
148             "                    <dim>32</dim>"
149             "                    <dim>272</dim>"
150             "                    <dim>496</dim>"
151             "                </port>"
152             "            </input>"
153             "            <output>"
154             "                <port id=\"12\">"
155             "                    <dim>1</dim>"
156             "                    <dim>32</dim>"
157             "                    <dim>272</dim>"
158             "                    <dim>496</dim>"
159             "                </port>"
160             "            </output>"
161             "        </layer>"
162             "        <layer name=\"pool1\" type=\"Pooling\" precision=\"FP32\" id=\"7\">"
163             "            <pooling_data kernel-x=\"3\" kernel-y=\"3\" pad-x=\"0\" pad-y=\"0\" stride-x=\"2\" stride-y=\"2\" rounding-type=\"ceil\" pool-method=\"max\"/>"
164             "            <input>"
165             "                <port id=\"13\">"
166             "                    <dim>1</dim>"
167             "                    <dim>32</dim>"
168             "                    <dim>272</dim>"
169             "                    <dim>496</dim>"
170             "                </port>"
171             "            </input>"
172             "            <output>"
173             "                <port id=\"14\">"
174             "                    <dim>1</dim>"
175             "                    <dim>32</dim>"
176             "                    <dim>136</dim>"
177             "                    <dim>248</dim>"
178             "                </port>"
179             "            </output>"
180             "        </layer>"
181             "    </layers>"
182             "    <edges>"
183             "        <edge from-layer=\"0\" from-port=\"0\" to-layer=\"2\" to-port=\"2\"/>"
184             "        <edge from-layer=\"2\" from-port=\"3\" to-layer=\"3\" to-port=\"4\"/>"
185             "        <edge from-layer=\"2\" from-port=\"3\" to-layer=\"4\" to-port=\"6\"/>"
186             "        <edge from-layer=\"3\" from-port=\"5\" to-layer=\"4\" to-port=\"7\"/>"
187             "        <edge from-layer=\"4\" from-port=\"8\" to-layer=\"5\" to-port=\"9\"/>"
188             "        <edge from-layer=\"5\" from-port=\"10\" to-layer=\"6\" to-port=\"11\"/>"
189             "        <edge from-layer=\"6\" from-port=\"12\" to-layer=\"7\" to-port=\"13\"/>"
190             "    </edges>"
191             "</net>";
192     auto parserCreator = make_shared<MockFormatParserCreator>();
193     CNNNetReaderImpl reader(parserCreator);
194     auto network = make_shared<MockCNNNetworkImpl>();
195     auto name = std::string{"AlexNet"};
196
197     EXPECT_CALL(*parserCreator->getParser(), Parse(_)).Times(1).WillOnce(Return(network));
198     EXPECT_CALL(*network.get(), validate(_)).Times(1);
199     EXPECT_CALL(*network.get(), getName()).Times(1).WillOnce(ReturnRef(name));
200
201     ASSERT_NO_THROW(sts = reader.ReadNetwork(model.data(), model.length(), &resp));
202     ASSERT_EQ(OK, sts);
203 }
204
205 TEST_F(CNNNetReaderImplTest, cycleIsDetectedInReader) {
206     std::string model =
207             "<net batch=\"1\" name=\"model\" version=\"2\">"
208             "    <layers>"
209             "        <layer id=\"0\" name=\"data\" precision=\"FP32\" type=\"Input\">"
210             "            <output>"
211             "                <port id=\"0\">"
212             "                    <dim>1</dim>"
213             "                    <dim>3</dim>"
214             "                    <dim>227</dim>"
215             "                    <dim>227</dim>"
216             "                </port>"
217             "            </output>"
218             "        </layer>"
219             "        <layer id=\"1\" name=\"conv1\" precision=\"FP32\" type=\"Convolution\">"
220             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"64\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,2,2\" stride-x=\"2\" stride-y=\"2\"/>"
221             "            <input>"
222             "                <port id=\"0\">"
223             "                    <dim>1</dim>"
224             "                    <dim>3</dim>"
225             "                    <dim>227</dim>"
226             "                    <dim>227</dim>"
227             "                </port>"
228             "            </input>"
229             "            <output>"
230             "                <port id=\"3\">"
231             "                    <dim>1</dim>"
232             "                    <dim>64</dim>"
233             "                    <dim>113</dim>"
234             "                    <dim>113</dim>"
235             "                </port>"
236             "            </output>"
237             "            <blobs>"
238             "                <weights offset=\"0\" size=\"6912\"/>"
239             "                <biases offset=\"6912\" size=\"256\"/>"
240             "            </blobs>"
241             "        </layer>"
242             "        <layer id=\"2\" name=\"relu_conv1\" precision=\"FP32\" type=\"ReLU\">"
243             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
244             "            <input>"
245             "                <port id=\"0\">"
246             "                    <dim>1</dim>"
247             "                    <dim>64</dim>"
248             "                    <dim>113</dim>"
249             "                    <dim>113</dim>"
250             "                </port>"
251             "            </input>"
252             "            <output>"
253             "                <port id=\"1\">"
254             "                    <dim>1</dim>"
255             "                    <dim>64</dim>"
256             "                    <dim>113</dim>"
257             "                    <dim>113</dim>"
258             "                </port>"
259             "            </output>"
260             "        </layer>"
261             "        <layer id=\"3\" name=\"pool1\" precision=\"FP32\" type=\"Pooling\">"
262             "            <data exclude-pad=\"false\" kernel-x=\"3\" kernel-y=\"3\" pad-x=\"0\" pad-y=\"0\" pool-method=\"max\" rounding_type=\"ceil\" stride=\"1,1,2,2\" stride-x=\"2\" stride-y=\"2\"/>"
263             "            <input>"
264             "                <port id=\"0\">"
265             "                    <dim>1</dim>"
266             "                    <dim>64</dim>"
267             "                    <dim>113</dim>"
268             "                    <dim>113</dim>"
269             "                </port>"
270             "            </input>"
271             "            <output>"
272             "                <port id=\"1\">"
273             "                    <dim>1</dim>"
274             "                    <dim>64</dim>"
275             "                    <dim>56</dim>"
276             "                    <dim>56</dim>"
277             "                </port>"
278             "            </output>"
279             "        </layer>"
280             "        <layer id=\"4\" name=\"fire2/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
281             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"16\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
282             "            <input>"
283             "                <port id=\"0\">"
284             "                    <dim>1</dim>"
285             "                    <dim>64</dim>"
286             "                    <dim>56</dim>"
287             "                    <dim>56</dim>"
288             "                </port>"
289             "            </input>"
290             "            <output>"
291             "                <port id=\"3\">"
292             "                    <dim>1</dim>"
293             "                    <dim>16</dim>"
294             "                    <dim>56</dim>"
295             "                    <dim>56</dim>"
296             "                </port>"
297             "            </output>"
298             "            <blobs>"
299             "                <weights offset=\"7168\" size=\"4096\"/>"
300             "                <biases offset=\"11264\" size=\"64\"/>"
301             "            </blobs>"
302             "        </layer>"
303             "        <layer id=\"5\" name=\"fire2/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
304             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
305             "            <input>"
306             "                <port id=\"0\">"
307             "                    <dim>1</dim>"
308             "                    <dim>16</dim>"
309             "                    <dim>56</dim>"
310             "                    <dim>56</dim>"
311             "                </port>"
312             "            </input>"
313             "            <output>"
314             "                <port id=\"1\">"
315             "                    <dim>1</dim>"
316             "                    <dim>16</dim>"
317             "                    <dim>56</dim>"
318             "                    <dim>56</dim>"
319             "                </port>"
320             "            </output>"
321             "        </layer>"
322             "        <layer id=\"6\" name=\"fire2/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
323             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"64\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
324             "            <input>"
325             "                <port id=\"0\">"
326             "                    <dim>1</dim>"
327             "                    <dim>16</dim>"
328             "                    <dim>56</dim>"
329             "                    <dim>56</dim>"
330             "                </port>"
331             "            </input>"
332             "            <output>"
333             "                <port id=\"3\">"
334             "                    <dim>1</dim>"
335             "                    <dim>64</dim>"
336             "                    <dim>56</dim>"
337             "                    <dim>56</dim>"
338             "                </port>"
339             "            </output>"
340             "            <blobs>"
341             "                <weights offset=\"11328\" size=\"4096\"/>"
342             "                <biases offset=\"15424\" size=\"256\"/>"
343             "            </blobs>"
344             "        </layer>"
345             "        <layer id=\"7\" name=\"fire2/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
346             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
347             "            <input>"
348             "                <port id=\"0\">"
349             "                    <dim>1</dim>"
350             "                    <dim>64</dim>"
351             "                    <dim>56</dim>"
352             "                    <dim>56</dim>"
353             "                </port>"
354             "            </input>"
355             "            <output>"
356             "                <port id=\"1\">"
357             "                    <dim>1</dim>"
358             "                    <dim>64</dim>"
359             "                    <dim>56</dim>"
360             "                    <dim>56</dim>"
361             "                </port>"
362             "            </output>"
363             "        </layer>"
364             "        <layer id=\"8\" name=\"fire2/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
365             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"64\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
366             "            <input>"
367             "                <port id=\"0\">"
368             "                    <dim>1</dim>"
369             "                    <dim>16</dim>"
370             "                    <dim>56</dim>"
371             "                    <dim>56</dim>"
372             "                </port>"
373             "                <port id=\"1\">"
374             "                    <dim>1</dim>"
375             "                    <dim>16</dim>"
376             "                    <dim>56</dim>"
377             "                    <dim>56</dim>"
378             "                </port>"
379             "            </input>"
380             "            <output>"
381             "                <port id=\"3\">"
382             "                    <dim>1</dim>"
383             "                    <dim>64</dim>"
384             "                    <dim>56</dim>"
385             "                    <dim>56</dim>"
386             "                </port>"
387             "            </output>"
388             "            <blobs>"
389             "                <weights offset=\"15680\" size=\"36864\"/>"
390             "                <biases offset=\"52544\" size=\"256\"/>"
391             "            </blobs>"
392             "        </layer>"
393             "        <layer id=\"9\" name=\"fire2/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
394             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
395             "            <input>"
396             "                <port id=\"0\">"
397             "                    <dim>1</dim>"
398             "                    <dim>64</dim>"
399             "                    <dim>56</dim>"
400             "                    <dim>56</dim>"
401             "                </port>"
402             "            </input>"
403             "            <output>"
404             "                <port id=\"1\">"
405             "                    <dim>1</dim>"
406             "                    <dim>64</dim>"
407             "                    <dim>56</dim>"
408             "                    <dim>56</dim>"
409             "                </port>"
410             "            </output>"
411             "        </layer>"
412             "        <layer id=\"10\" name=\"fire2/concat\" precision=\"FP32\" type=\"Concat\">"
413             "            <data axis=\"1\"/>"
414             "            <input>"
415             "                <port id=\"0\">"
416             "                    <dim>1</dim>"
417             "                    <dim>64</dim>"
418             "                    <dim>56</dim>"
419             "                    <dim>56</dim>"
420             "                </port>"
421             "                <port id=\"1\">"
422             "                    <dim>1</dim>"
423             "                    <dim>64</dim>"
424             "                    <dim>56</dim>"
425             "                    <dim>56</dim>"
426             "                </port>"
427             "            </input>"
428             "            <output>"
429             "                <port id=\"2\">"
430             "                    <dim>1</dim>"
431             "                    <dim>128</dim>"
432             "                    <dim>56</dim>"
433             "                    <dim>56</dim>"
434             "                </port>"
435             "            </output>"
436             "        </layer>"
437             "        <layer id=\"11\" name=\"fire3/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
438             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"16\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
439             "            <input>"
440             "                <port id=\"0\">"
441             "                    <dim>1</dim>"
442             "                    <dim>128</dim>"
443             "                    <dim>56</dim>"
444             "                    <dim>56</dim>"
445             "                </port>"
446             "            </input>"
447             "            <output>"
448             "                <port id=\"3\">"
449             "                    <dim>1</dim>"
450             "                    <dim>16</dim>"
451             "                    <dim>56</dim>"
452             "                    <dim>56</dim>"
453             "                </port>"
454             "                <port id=\"4\">"
455             "                    <dim>1</dim>"
456             "                    <dim>16</dim>"
457             "                    <dim>56</dim>"
458             "                    <dim>56</dim>"
459             "                </port>"
460             "            </output>"
461             "            <blobs>"
462             "                <weights offset=\"52800\" size=\"8192\"/>"
463             "                <biases offset=\"60992\" size=\"64\"/>"
464             "            </blobs>"
465             "        </layer>"
466             "        <layer id=\"12\" name=\"fire3/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
467             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
468             "            <input>"
469             "                <port id=\"0\">"
470             "                    <dim>1</dim>"
471             "                    <dim>16</dim>"
472             "                    <dim>56</dim>"
473             "                    <dim>56</dim>"
474             "                </port>"
475             "            </input>"
476             "            <output>"
477             "                <port id=\"1\">"
478             "                    <dim>1</dim>"
479             "                    <dim>16</dim>"
480             "                    <dim>56</dim>"
481             "                    <dim>56</dim>"
482             "                </port>"
483             "            </output>"
484             "        </layer>"
485             "        <layer id=\"13\" name=\"fire3/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
486             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"64\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
487             "            <input>"
488             "                <port id=\"0\">"
489             "                    <dim>1</dim>"
490             "                    <dim>16</dim>"
491             "                    <dim>56</dim>"
492             "                    <dim>56</dim>"
493             "                </port>"
494             "            </input>"
495             "            <output>"
496             "                <port id=\"3\">"
497             "                    <dim>1</dim>"
498             "                    <dim>64</dim>"
499             "                    <dim>56</dim>"
500             "                    <dim>56</dim>"
501             "                </port>"
502             "            </output>"
503             "            <blobs>"
504             "                <weights offset=\"61056\" size=\"4096\"/>"
505             "                <biases offset=\"65152\" size=\"256\"/>"
506             "            </blobs>"
507             "        </layer>"
508             "        <layer id=\"14\" name=\"fire3/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
509             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
510             "            <input>"
511             "                <port id=\"0\">"
512             "                    <dim>1</dim>"
513             "                    <dim>64</dim>"
514             "                    <dim>56</dim>"
515             "                    <dim>56</dim>"
516             "                </port>"
517             "            </input>"
518             "            <output>"
519             "                <port id=\"1\">"
520             "                    <dim>1</dim>"
521             "                    <dim>64</dim>"
522             "                    <dim>56</dim>"
523             "                    <dim>56</dim>"
524             "                </port>"
525             "            </output>"
526             "        </layer>"
527             "        <layer id=\"15\" name=\"fire3/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
528             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"64\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
529             "            <input>"
530             "                <port id=\"0\">"
531             "                    <dim>1</dim>"
532             "                    <dim>16</dim>"
533             "                    <dim>56</dim>"
534             "                    <dim>56</dim>"
535             "                </port>"
536             "            </input>"
537             "            <output>"
538             "                <port id=\"3\">"
539             "                    <dim>1</dim>"
540             "                    <dim>64</dim>"
541             "                    <dim>56</dim>"
542             "                    <dim>56</dim>"
543             "                </port>"
544             "            </output>"
545             "            <blobs>"
546             "                <weights offset=\"65408\" size=\"36864\"/>"
547             "                <biases offset=\"102272\" size=\"256\"/>"
548             "            </blobs>"
549             "        </layer>"
550             "        <layer id=\"16\" name=\"fire3/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
551             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
552             "            <input>"
553             "                <port id=\"0\">"
554             "                    <dim>1</dim>"
555             "                    <dim>64</dim>"
556             "                    <dim>56</dim>"
557             "                    <dim>56</dim>"
558             "                </port>"
559             "            </input>"
560             "            <output>"
561             "                <port id=\"1\">"
562             "                    <dim>1</dim>"
563             "                    <dim>64</dim>"
564             "                    <dim>56</dim>"
565             "                    <dim>56</dim>"
566             "                </port>"
567             "            </output>"
568             "        </layer>"
569             "        <layer id=\"17\" name=\"fire3/concat\" precision=\"FP32\" type=\"Concat\">"
570             "            <data axis=\"1\"/>"
571             "            <input>"
572             "                <port id=\"0\">"
573             "                    <dim>1</dim>"
574             "                    <dim>64</dim>"
575             "                    <dim>56</dim>"
576             "                    <dim>56</dim>"
577             "                </port>"
578             "                <port id=\"1\">"
579             "                    <dim>1</dim>"
580             "                    <dim>64</dim>"
581             "                    <dim>56</dim>"
582             "                    <dim>56</dim>"
583             "                </port>"
584             "            </input>"
585             "            <output>"
586             "                <port id=\"2\">"
587             "                    <dim>1</dim>"
588             "                    <dim>128</dim>"
589             "                    <dim>56</dim>"
590             "                    <dim>56</dim>"
591             "                </port>"
592             "            </output>"
593             "        </layer>"
594             "        <layer id=\"18\" name=\"pool3\" precision=\"FP32\" type=\"Pooling\">"
595             "            <data exclude-pad=\"false\" kernel-x=\"3\" kernel-y=\"3\" pad-x=\"0\" pad-y=\"0\" pool-method=\"max\" rounding_type=\"ceil\" stride=\"1,1,2,2\" stride-x=\"2\" stride-y=\"2\"/>"
596             "            <input>"
597             "                <port id=\"0\">"
598             "                    <dim>1</dim>"
599             "                    <dim>128</dim>"
600             "                    <dim>56</dim>"
601             "                    <dim>56</dim>"
602             "                </port>"
603             "            </input>"
604             "            <output>"
605             "                <port id=\"1\">"
606             "                    <dim>1</dim>"
607             "                    <dim>128</dim>"
608             "                    <dim>28</dim>"
609             "                    <dim>28</dim>"
610             "                </port>"
611             "            </output>"
612             "        </layer>"
613             "        <layer id=\"19\" name=\"fire4/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
614             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"32\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
615             "            <input>"
616             "                <port id=\"0\">"
617             "                    <dim>1</dim>"
618             "                    <dim>128</dim>"
619             "                    <dim>28</dim>"
620             "                    <dim>28</dim>"
621             "                </port>"
622             "            </input>"
623             "            <output>"
624             "                <port id=\"3\">"
625             "                    <dim>1</dim>"
626             "                    <dim>32</dim>"
627             "                    <dim>28</dim>"
628             "                    <dim>28</dim>"
629             "                </port>"
630             "            </output>"
631             "            <blobs>"
632             "                <weights offset=\"102528\" size=\"16384\"/>"
633             "                <biases offset=\"118912\" size=\"128\"/>"
634             "            </blobs>"
635             "        </layer>"
636             "        <layer id=\"20\" name=\"fire4/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
637             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
638             "            <input>"
639             "                <port id=\"0\">"
640             "                    <dim>1</dim>"
641             "                    <dim>32</dim>"
642             "                    <dim>28</dim>"
643             "                    <dim>28</dim>"
644             "                </port>"
645             "            </input>"
646             "            <output>"
647             "                <port id=\"1\">"
648             "                    <dim>1</dim>"
649             "                    <dim>32</dim>"
650             "                    <dim>28</dim>"
651             "                    <dim>28</dim>"
652             "                </port>"
653             "            </output>"
654             "        </layer>"
655             "        <layer id=\"21\" name=\"fire4/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
656             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"128\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
657             "            <input>"
658             "                <port id=\"0\">"
659             "                    <dim>1</dim>"
660             "                    <dim>32</dim>"
661             "                    <dim>28</dim>"
662             "                    <dim>28</dim>"
663             "                </port>"
664             "            </input>"
665             "            <output>"
666             "                <port id=\"3\">"
667             "                    <dim>1</dim>"
668             "                    <dim>128</dim>"
669             "                    <dim>28</dim>"
670             "                    <dim>28</dim>"
671             "                </port>"
672             "            </output>"
673             "            <blobs>"
674             "                <weights offset=\"119040\" size=\"16384\"/>"
675             "                <biases offset=\"135424\" size=\"512\"/>"
676             "            </blobs>"
677             "        </layer>"
678             "        <layer id=\"22\" name=\"fire4/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
679             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
680             "            <input>"
681             "                <port id=\"0\">"
682             "                    <dim>1</dim>"
683             "                    <dim>128</dim>"
684             "                    <dim>28</dim>"
685             "                    <dim>28</dim>"
686             "                </port>"
687             "            </input>"
688             "            <output>"
689             "                <port id=\"1\">"
690             "                    <dim>1</dim>"
691             "                    <dim>128</dim>"
692             "                    <dim>28</dim>"
693             "                    <dim>28</dim>"
694             "                </port>"
695             "            </output>"
696             "        </layer>"
697             "        <layer id=\"23\" name=\"fire4/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
698             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"128\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
699             "            <input>"
700             "                <port id=\"0\">"
701             "                    <dim>1</dim>"
702             "                    <dim>32</dim>"
703             "                    <dim>28</dim>"
704             "                    <dim>28</dim>"
705             "                </port>"
706             "            </input>"
707             "            <output>"
708             "                <port id=\"3\">"
709             "                    <dim>1</dim>"
710             "                    <dim>128</dim>"
711             "                    <dim>28</dim>"
712             "                    <dim>28</dim>"
713             "                </port>"
714             "            </output>"
715             "            <blobs>"
716             "                <weights offset=\"135936\" size=\"147456\"/>"
717             "                <biases offset=\"283392\" size=\"512\"/>"
718             "            </blobs>"
719             "        </layer>"
720             "        <layer id=\"24\" name=\"fire4/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
721             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
722             "            <input>"
723             "                <port id=\"0\">"
724             "                    <dim>1</dim>"
725             "                    <dim>128</dim>"
726             "                    <dim>28</dim>"
727             "                    <dim>28</dim>"
728             "                </port>"
729             "            </input>"
730             "            <output>"
731             "                <port id=\"1\">"
732             "                    <dim>1</dim>"
733             "                    <dim>128</dim>"
734             "                    <dim>28</dim>"
735             "                    <dim>28</dim>"
736             "                </port>"
737             "            </output>"
738             "        </layer>"
739             "        <layer id=\"25\" name=\"fire4/concat\" precision=\"FP32\" type=\"Concat\">"
740             "            <data axis=\"1\"/>"
741             "            <input>"
742             "                <port id=\"0\">"
743             "                    <dim>1</dim>"
744             "                    <dim>128</dim>"
745             "                    <dim>28</dim>"
746             "                    <dim>28</dim>"
747             "                </port>"
748             "                <port id=\"1\">"
749             "                    <dim>1</dim>"
750             "                    <dim>128</dim>"
751             "                    <dim>28</dim>"
752             "                    <dim>28</dim>"
753             "                </port>"
754             "            </input>"
755             "            <output>"
756             "                <port id=\"2\">"
757             "                    <dim>1</dim>"
758             "                    <dim>256</dim>"
759             "                    <dim>28</dim>"
760             "                    <dim>28</dim>"
761             "                </port>"
762             "            </output>"
763             "        </layer>"
764             "        <layer id=\"26\" name=\"fire5/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
765             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"32\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
766             "            <input>"
767             "                <port id=\"0\">"
768             "                    <dim>1</dim>"
769             "                    <dim>256</dim>"
770             "                    <dim>28</dim>"
771             "                    <dim>28</dim>"
772             "                </port>"
773             "            </input>"
774             "            <output>"
775             "                <port id=\"3\">"
776             "                    <dim>1</dim>"
777             "                    <dim>32</dim>"
778             "                    <dim>28</dim>"
779             "                    <dim>28</dim>"
780             "                </port>"
781             "            </output>"
782             "            <blobs>"
783             "                <weights offset=\"283904\" size=\"32768\"/>"
784             "                <biases offset=\"316672\" size=\"128\"/>"
785             "            </blobs>"
786             "        </layer>"
787             "        <layer id=\"27\" name=\"fire5/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
788             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
789             "            <input>"
790             "                <port id=\"0\">"
791             "                    <dim>1</dim>"
792             "                    <dim>32</dim>"
793             "                    <dim>28</dim>"
794             "                    <dim>28</dim>"
795             "                </port>"
796             "            </input>"
797             "            <output>"
798             "                <port id=\"1\">"
799             "                    <dim>1</dim>"
800             "                    <dim>32</dim>"
801             "                    <dim>28</dim>"
802             "                    <dim>28</dim>"
803             "                </port>"
804             "            </output>"
805             "        </layer>"
806             "        <layer id=\"28\" name=\"fire5/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
807             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"128\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
808             "            <input>"
809             "                <port id=\"0\">"
810             "                    <dim>1</dim>"
811             "                    <dim>32</dim>"
812             "                    <dim>28</dim>"
813             "                    <dim>28</dim>"
814             "                </port>"
815             "            </input>"
816             "            <output>"
817             "                <port id=\"3\">"
818             "                    <dim>1</dim>"
819             "                    <dim>128</dim>"
820             "                    <dim>28</dim>"
821             "                    <dim>28</dim>"
822             "                </port>"
823             "            </output>"
824             "            <blobs>"
825             "                <weights offset=\"316800\" size=\"16384\"/>"
826             "                <biases offset=\"333184\" size=\"512\"/>"
827             "            </blobs>"
828             "        </layer>"
829             "        <layer id=\"29\" name=\"fire5/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
830             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
831             "            <input>"
832             "                <port id=\"0\">"
833             "                    <dim>1</dim>"
834             "                    <dim>128</dim>"
835             "                    <dim>28</dim>"
836             "                    <dim>28</dim>"
837             "                </port>"
838             "            </input>"
839             "            <output>"
840             "                <port id=\"1\">"
841             "                    <dim>1</dim>"
842             "                    <dim>128</dim>"
843             "                    <dim>28</dim>"
844             "                    <dim>28</dim>"
845             "                </port>"
846             "            </output>"
847             "        </layer>"
848             "        <layer id=\"30\" name=\"fire5/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
849             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"128\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
850             "            <input>"
851             "                <port id=\"0\">"
852             "                    <dim>1</dim>"
853             "                    <dim>32</dim>"
854             "                    <dim>28</dim>"
855             "                    <dim>28</dim>"
856             "                </port>"
857             "            </input>"
858             "            <output>"
859             "                <port id=\"3\">"
860             "                    <dim>1</dim>"
861             "                    <dim>128</dim>"
862             "                    <dim>28</dim>"
863             "                    <dim>28</dim>"
864             "                </port>"
865             "            </output>"
866             "            <blobs>"
867             "                <weights offset=\"333696\" size=\"147456\"/>"
868             "                <biases offset=\"481152\" size=\"512\"/>"
869             "            </blobs>"
870             "        </layer>"
871             "        <layer id=\"31\" name=\"fire5/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
872             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
873             "            <input>"
874             "                <port id=\"0\">"
875             "                    <dim>1</dim>"
876             "                    <dim>128</dim>"
877             "                    <dim>28</dim>"
878             "                    <dim>28</dim>"
879             "                </port>"
880             "            </input>"
881             "            <output>"
882             "                <port id=\"1\">"
883             "                    <dim>1</dim>"
884             "                    <dim>128</dim>"
885             "                    <dim>28</dim>"
886             "                    <dim>28</dim>"
887             "                </port>"
888             "            </output>"
889             "        </layer>"
890             "        <layer id=\"32\" name=\"fire5/concat\" precision=\"FP32\" type=\"Concat\">"
891             "            <data axis=\"1\"/>"
892             "            <input>"
893             "                <port id=\"0\">"
894             "                    <dim>1</dim>"
895             "                    <dim>128</dim>"
896             "                    <dim>28</dim>"
897             "                    <dim>28</dim>"
898             "                </port>"
899             "                <port id=\"1\">"
900             "                    <dim>1</dim>"
901             "                    <dim>128</dim>"
902             "                    <dim>28</dim>"
903             "                    <dim>28</dim>"
904             "                </port>"
905             "            </input>"
906             "            <output>"
907             "                <port id=\"2\">"
908             "                    <dim>1</dim>"
909             "                    <dim>256</dim>"
910             "                    <dim>28</dim>"
911             "                    <dim>28</dim>"
912             "                </port>"
913             "            </output>"
914             "        </layer>"
915             "        <layer id=\"33\" name=\"pool5\" precision=\"FP32\" type=\"Pooling\">"
916             "            <data exclude-pad=\"false\" kernel-x=\"3\" kernel-y=\"3\" pad-x=\"0\" pad-y=\"0\" pool-method=\"max\" rounding_type=\"ceil\" stride=\"1,1,2,2\" stride-x=\"2\" stride-y=\"2\"/>"
917             "            <input>"
918             "                <port id=\"0\">"
919             "                    <dim>1</dim>"
920             "                    <dim>256</dim>"
921             "                    <dim>28</dim>"
922             "                    <dim>28</dim>"
923             "                </port>"
924             "            </input>"
925             "            <output>"
926             "                <port id=\"1\">"
927             "                    <dim>1</dim>"
928             "                    <dim>256</dim>"
929             "                    <dim>14</dim>"
930             "                    <dim>14</dim>"
931             "                </port>"
932             "            </output>"
933             "        </layer>"
934             "        <layer id=\"34\" name=\"fire6/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
935             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"48\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
936             "            <input>"
937             "                <port id=\"0\">"
938             "                    <dim>1</dim>"
939             "                    <dim>256</dim>"
940             "                    <dim>14</dim>"
941             "                    <dim>14</dim>"
942             "                </port>"
943             "            </input>"
944             "            <output>"
945             "                <port id=\"3\">"
946             "                    <dim>1</dim>"
947             "                    <dim>48</dim>"
948             "                    <dim>14</dim>"
949             "                    <dim>14</dim>"
950             "                </port>"
951             "            </output>"
952             "            <blobs>"
953             "                <weights offset=\"481664\" size=\"49152\"/>"
954             "                <biases offset=\"530816\" size=\"192\"/>"
955             "            </blobs>"
956             "        </layer>"
957             "        <layer id=\"35\" name=\"fire6/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
958             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
959             "            <input>"
960             "                <port id=\"0\">"
961             "                    <dim>1</dim>"
962             "                    <dim>48</dim>"
963             "                    <dim>14</dim>"
964             "                    <dim>14</dim>"
965             "                </port>"
966             "            </input>"
967             "            <output>"
968             "                <port id=\"1\">"
969             "                    <dim>1</dim>"
970             "                    <dim>48</dim>"
971             "                    <dim>14</dim>"
972             "                    <dim>14</dim>"
973             "                </port>"
974             "            </output>"
975             "        </layer>"
976             "        <layer id=\"36\" name=\"fire6/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
977             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"192\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
978             "            <input>"
979             "                <port id=\"0\">"
980             "                    <dim>1</dim>"
981             "                    <dim>48</dim>"
982             "                    <dim>14</dim>"
983             "                    <dim>14</dim>"
984             "                </port>"
985             "            </input>"
986             "            <output>"
987             "                <port id=\"3\">"
988             "                    <dim>1</dim>"
989             "                    <dim>192</dim>"
990             "                    <dim>14</dim>"
991             "                    <dim>14</dim>"
992             "                </port>"
993             "            </output>"
994             "            <blobs>"
995             "                <weights offset=\"531008\" size=\"36864\"/>"
996             "                <biases offset=\"567872\" size=\"768\"/>"
997             "            </blobs>"
998             "        </layer>"
999             "        <layer id=\"37\" name=\"fire6/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
1000             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1001             "            <input>"
1002             "                <port id=\"0\">"
1003             "                    <dim>1</dim>"
1004             "                    <dim>192</dim>"
1005             "                    <dim>14</dim>"
1006             "                    <dim>14</dim>"
1007             "                </port>"
1008             "            </input>"
1009             "            <output>"
1010             "                <port id=\"1\">"
1011             "                    <dim>1</dim>"
1012             "                    <dim>192</dim>"
1013             "                    <dim>14</dim>"
1014             "                    <dim>14</dim>"
1015             "                </port>"
1016             "            </output>"
1017             "        </layer>"
1018             "        <layer id=\"38\" name=\"fire6/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
1019             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"192\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1020             "            <input>"
1021             "                <port id=\"0\">"
1022             "                    <dim>1</dim>"
1023             "                    <dim>48</dim>"
1024             "                    <dim>14</dim>"
1025             "                    <dim>14</dim>"
1026             "                </port>"
1027             "            </input>"
1028             "            <output>"
1029             "                <port id=\"3\">"
1030             "                    <dim>1</dim>"
1031             "                    <dim>192</dim>"
1032             "                    <dim>14</dim>"
1033             "                    <dim>14</dim>"
1034             "                </port>"
1035             "            </output>"
1036             "            <blobs>"
1037             "                <weights offset=\"568640\" size=\"331776\"/>"
1038             "                <biases offset=\"900416\" size=\"768\"/>"
1039             "            </blobs>"
1040             "        </layer>"
1041             "        <layer id=\"39\" name=\"fire6/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
1042             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1043             "            <input>"
1044             "                <port id=\"0\">"
1045             "                    <dim>1</dim>"
1046             "                    <dim>192</dim>"
1047             "                    <dim>14</dim>"
1048             "                    <dim>14</dim>"
1049             "                </port>"
1050             "            </input>"
1051             "            <output>"
1052             "                <port id=\"1\">"
1053             "                    <dim>1</dim>"
1054             "                    <dim>192</dim>"
1055             "                    <dim>14</dim>"
1056             "                    <dim>14</dim>"
1057             "                </port>"
1058             "            </output>"
1059             "        </layer>"
1060             "        <layer id=\"40\" name=\"fire6/concat\" precision=\"FP32\" type=\"Concat\">"
1061             "            <data axis=\"1\"/>"
1062             "            <input>"
1063             "                <port id=\"0\">"
1064             "                    <dim>1</dim>"
1065             "                    <dim>192</dim>"
1066             "                    <dim>14</dim>"
1067             "                    <dim>14</dim>"
1068             "                </port>"
1069             "                <port id=\"1\">"
1070             "                    <dim>1</dim>"
1071             "                    <dim>192</dim>"
1072             "                    <dim>14</dim>"
1073             "                    <dim>14</dim>"
1074             "                </port>"
1075             "            </input>"
1076             "            <output>"
1077             "                <port id=\"2\">"
1078             "                    <dim>1</dim>"
1079             "                    <dim>384</dim>"
1080             "                    <dim>14</dim>"
1081             "                    <dim>14</dim>"
1082             "                </port>"
1083             "            </output>"
1084             "        </layer>"
1085             "        <layer id=\"41\" name=\"fire7/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
1086             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"48\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1087             "            <input>"
1088             "                <port id=\"0\">"
1089             "                    <dim>1</dim>"
1090             "                    <dim>384</dim>"
1091             "                    <dim>14</dim>"
1092             "                    <dim>14</dim>"
1093             "                </port>"
1094             "            </input>"
1095             "            <output>"
1096             "                <port id=\"3\">"
1097             "                    <dim>1</dim>"
1098             "                    <dim>48</dim>"
1099             "                    <dim>14</dim>"
1100             "                    <dim>14</dim>"
1101             "                </port>"
1102             "            </output>"
1103             "            <blobs>"
1104             "                <weights offset=\"901184\" size=\"73728\"/>"
1105             "                <biases offset=\"974912\" size=\"192\"/>"
1106             "            </blobs>"
1107             "        </layer>"
1108             "        <layer id=\"42\" name=\"fire7/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
1109             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1110             "            <input>"
1111             "                <port id=\"0\">"
1112             "                    <dim>1</dim>"
1113             "                    <dim>48</dim>"
1114             "                    <dim>14</dim>"
1115             "                    <dim>14</dim>"
1116             "                </port>"
1117             "            </input>"
1118             "            <output>"
1119             "                <port id=\"1\">"
1120             "                    <dim>1</dim>"
1121             "                    <dim>48</dim>"
1122             "                    <dim>14</dim>"
1123             "                    <dim>14</dim>"
1124             "                </port>"
1125             "            </output>"
1126             "        </layer>"
1127             "        <layer id=\"43\" name=\"fire7/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
1128             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"192\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1129             "            <input>"
1130             "                <port id=\"0\">"
1131             "                    <dim>1</dim>"
1132             "                    <dim>48</dim>"
1133             "                    <dim>14</dim>"
1134             "                    <dim>14</dim>"
1135             "                </port>"
1136             "            </input>"
1137             "            <output>"
1138             "                <port id=\"3\">"
1139             "                    <dim>1</dim>"
1140             "                    <dim>192</dim>"
1141             "                    <dim>14</dim>"
1142             "                    <dim>14</dim>"
1143             "                </port>"
1144             "            </output>"
1145             "            <blobs>"
1146             "                <weights offset=\"975104\" size=\"36864\"/>"
1147             "                <biases offset=\"1011968\" size=\"768\"/>"
1148             "            </blobs>"
1149             "        </layer>"
1150             "        <layer id=\"44\" name=\"fire7/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
1151             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1152             "            <input>"
1153             "                <port id=\"0\">"
1154             "                    <dim>1</dim>"
1155             "                    <dim>192</dim>"
1156             "                    <dim>14</dim>"
1157             "                    <dim>14</dim>"
1158             "                </port>"
1159             "            </input>"
1160             "            <output>"
1161             "                <port id=\"1\">"
1162             "                    <dim>1</dim>"
1163             "                    <dim>192</dim>"
1164             "                    <dim>14</dim>"
1165             "                    <dim>14</dim>"
1166             "                </port>"
1167             "            </output>"
1168             "        </layer>"
1169             "        <layer id=\"45\" name=\"fire7/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
1170             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"192\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1171             "            <input>"
1172             "                <port id=\"0\">"
1173             "                    <dim>1</dim>"
1174             "                    <dim>48</dim>"
1175             "                    <dim>14</dim>"
1176             "                    <dim>14</dim>"
1177             "                </port>"
1178             "            </input>"
1179             "            <output>"
1180             "                <port id=\"3\">"
1181             "                    <dim>1</dim>"
1182             "                    <dim>192</dim>"
1183             "                    <dim>14</dim>"
1184             "                    <dim>14</dim>"
1185             "                </port>"
1186             "            </output>"
1187             "            <blobs>"
1188             "                <weights offset=\"1012736\" size=\"331776\"/>"
1189             "                <biases offset=\"1344512\" size=\"768\"/>"
1190             "            </blobs>"
1191             "        </layer>"
1192             "        <layer id=\"46\" name=\"fire7/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
1193             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1194             "            <input>"
1195             "                <port id=\"0\">"
1196             "                    <dim>1</dim>"
1197             "                    <dim>192</dim>"
1198             "                    <dim>14</dim>"
1199             "                    <dim>14</dim>"
1200             "                </port>"
1201             "            </input>"
1202             "            <output>"
1203             "                <port id=\"1\">"
1204             "                    <dim>1</dim>"
1205             "                    <dim>192</dim>"
1206             "                    <dim>14</dim>"
1207             "                    <dim>14</dim>"
1208             "                </port>"
1209             "            </output>"
1210             "        </layer>"
1211             "        <layer id=\"47\" name=\"fire7/concat\" precision=\"FP32\" type=\"Concat\">"
1212             "            <data axis=\"1\"/>"
1213             "            <input>"
1214             "                <port id=\"0\">"
1215             "                    <dim>1</dim>"
1216             "                    <dim>192</dim>"
1217             "                    <dim>14</dim>"
1218             "                    <dim>14</dim>"
1219             "                </port>"
1220             "                <port id=\"1\">"
1221             "                    <dim>1</dim>"
1222             "                    <dim>192</dim>"
1223             "                    <dim>14</dim>"
1224             "                    <dim>14</dim>"
1225             "                </port>"
1226             "            </input>"
1227             "            <output>"
1228             "                <port id=\"2\">"
1229             "                    <dim>1</dim>"
1230             "                    <dim>384</dim>"
1231             "                    <dim>14</dim>"
1232             "                    <dim>14</dim>"
1233             "                </port>"
1234             "            </output>"
1235             "        </layer>"
1236             "        <layer id=\"48\" name=\"fire8/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
1237             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"64\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1238             "            <input>"
1239             "                <port id=\"0\">"
1240             "                    <dim>1</dim>"
1241             "                    <dim>384</dim>"
1242             "                    <dim>14</dim>"
1243             "                    <dim>14</dim>"
1244             "                </port>"
1245             "            </input>"
1246             "            <output>"
1247             "                <port id=\"3\">"
1248             "                    <dim>1</dim>"
1249             "                    <dim>64</dim>"
1250             "                    <dim>14</dim>"
1251             "                    <dim>14</dim>"
1252             "                </port>"
1253             "            </output>"
1254             "            <blobs>"
1255             "                <weights offset=\"1345280\" size=\"98304\"/>"
1256             "                <biases offset=\"1443584\" size=\"256\"/>"
1257             "            </blobs>"
1258             "        </layer>"
1259             "        <layer id=\"49\" name=\"fire8/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
1260             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1261             "            <input>"
1262             "                <port id=\"0\">"
1263             "                    <dim>1</dim>"
1264             "                    <dim>64</dim>"
1265             "                    <dim>14</dim>"
1266             "                    <dim>14</dim>"
1267             "                </port>"
1268             "            </input>"
1269             "            <output>"
1270             "                <port id=\"1\">"
1271             "                    <dim>1</dim>"
1272             "                    <dim>64</dim>"
1273             "                    <dim>14</dim>"
1274             "                    <dim>14</dim>"
1275             "                </port>"
1276             "            </output>"
1277             "        </layer>"
1278             "        <layer id=\"50\" name=\"fire8/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
1279             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"256\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1280             "            <input>"
1281             "                <port id=\"0\">"
1282             "                    <dim>1</dim>"
1283             "                    <dim>64</dim>"
1284             "                    <dim>14</dim>"
1285             "                    <dim>14</dim>"
1286             "                </port>"
1287             "            </input>"
1288             "            <output>"
1289             "                <port id=\"3\">"
1290             "                    <dim>1</dim>"
1291             "                    <dim>256</dim>"
1292             "                    <dim>14</dim>"
1293             "                    <dim>14</dim>"
1294             "                </port>"
1295             "            </output>"
1296             "            <blobs>"
1297             "                <weights offset=\"1443840\" size=\"65536\"/>"
1298             "                <biases offset=\"1509376\" size=\"1024\"/>"
1299             "            </blobs>"
1300             "        </layer>"
1301             "        <layer id=\"51\" name=\"fire8/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
1302             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1303             "            <input>"
1304             "                <port id=\"0\">"
1305             "                    <dim>1</dim>"
1306             "                    <dim>256</dim>"
1307             "                    <dim>14</dim>"
1308             "                    <dim>14</dim>"
1309             "                </port>"
1310             "            </input>"
1311             "            <output>"
1312             "                <port id=\"1\">"
1313             "                    <dim>1</dim>"
1314             "                    <dim>256</dim>"
1315             "                    <dim>14</dim>"
1316             "                    <dim>14</dim>"
1317             "                </port>"
1318             "            </output>"
1319             "        </layer>"
1320             "        <layer id=\"52\" name=\"fire8/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
1321             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"256\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1322             "            <input>"
1323             "                <port id=\"0\">"
1324             "                    <dim>1</dim>"
1325             "                    <dim>64</dim>"
1326             "                    <dim>14</dim>"
1327             "                    <dim>14</dim>"
1328             "                </port>"
1329             "            </input>"
1330             "            <output>"
1331             "                <port id=\"3\">"
1332             "                    <dim>1</dim>"
1333             "                    <dim>256</dim>"
1334             "                    <dim>14</dim>"
1335             "                    <dim>14</dim>"
1336             "                </port>"
1337             "            </output>"
1338             "            <blobs>"
1339             "                <weights offset=\"1510400\" size=\"589824\"/>"
1340             "                <biases offset=\"2100224\" size=\"1024\"/>"
1341             "            </blobs>"
1342             "        </layer>"
1343             "        <layer id=\"53\" name=\"fire8/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
1344             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1345             "            <input>"
1346             "                <port id=\"0\">"
1347             "                    <dim>1</dim>"
1348             "                    <dim>256</dim>"
1349             "                    <dim>14</dim>"
1350             "                    <dim>14</dim>"
1351             "                </port>"
1352             "            </input>"
1353             "            <output>"
1354             "                <port id=\"1\">"
1355             "                    <dim>1</dim>"
1356             "                    <dim>256</dim>"
1357             "                    <dim>14</dim>"
1358             "                    <dim>14</dim>"
1359             "                </port>"
1360             "            </output>"
1361             "        </layer>"
1362             "        <layer id=\"54\" name=\"fire8/concat\" precision=\"FP32\" type=\"Concat\">"
1363             "            <data axis=\"1\"/>"
1364             "            <input>"
1365             "                <port id=\"0\">"
1366             "                    <dim>1</dim>"
1367             "                    <dim>256</dim>"
1368             "                    <dim>14</dim>"
1369             "                    <dim>14</dim>"
1370             "                </port>"
1371             "                <port id=\"1\">"
1372             "                    <dim>1</dim>"
1373             "                    <dim>256</dim>"
1374             "                    <dim>14</dim>"
1375             "                    <dim>14</dim>"
1376             "                </port>"
1377             "            </input>"
1378             "            <output>"
1379             "                <port id=\"2\">"
1380             "                    <dim>1</dim>"
1381             "                    <dim>512</dim>"
1382             "                    <dim>14</dim>"
1383             "                    <dim>14</dim>"
1384             "                </port>"
1385             "            </output>"
1386             "        </layer>"
1387             "        <layer id=\"55\" name=\"fire9/squeeze1x1\" precision=\"FP32\" type=\"Convolution\">"
1388             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"64\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1389             "            <input>"
1390             "                <port id=\"0\">"
1391             "                    <dim>1</dim>"
1392             "                    <dim>512</dim>"
1393             "                    <dim>14</dim>"
1394             "                    <dim>14</dim>"
1395             "                </port>"
1396             "            </input>"
1397             "            <output>"
1398             "                <port id=\"3\">"
1399             "                    <dim>1</dim>"
1400             "                    <dim>64</dim>"
1401             "                    <dim>14</dim>"
1402             "                    <dim>14</dim>"
1403             "                </port>"
1404             "            </output>"
1405             "            <blobs>"
1406             "                <weights offset=\"2101248\" size=\"131072\"/>"
1407             "                <biases offset=\"2232320\" size=\"256\"/>"
1408             "            </blobs>"
1409             "        </layer>"
1410             "        <layer id=\"56\" name=\"fire9/relu_squeeze1x1\" precision=\"FP32\" type=\"ReLU\">"
1411             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1412             "            <input>"
1413             "                <port id=\"0\">"
1414             "                    <dim>1</dim>"
1415             "                    <dim>64</dim>"
1416             "                    <dim>14</dim>"
1417             "                    <dim>14</dim>"
1418             "                </port>"
1419             "            </input>"
1420             "            <output>"
1421             "                <port id=\"1\">"
1422             "                    <dim>1</dim>"
1423             "                    <dim>64</dim>"
1424             "                    <dim>14</dim>"
1425             "                    <dim>14</dim>"
1426             "                </port>"
1427             "            </output>"
1428             "        </layer>"
1429             "        <layer id=\"57\" name=\"fire9/expand1x1\" precision=\"FP32\" type=\"Convolution\">"
1430             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"256\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1431             "            <input>"
1432             "                <port id=\"0\">"
1433             "                    <dim>1</dim>"
1434             "                    <dim>64</dim>"
1435             "                    <dim>14</dim>"
1436             "                    <dim>14</dim>"
1437             "                </port>"
1438             "            </input>"
1439             "            <output>"
1440             "                <port id=\"3\">"
1441             "                    <dim>1</dim>"
1442             "                    <dim>256</dim>"
1443             "                    <dim>14</dim>"
1444             "                    <dim>14</dim>"
1445             "                </port>"
1446             "            </output>"
1447             "            <blobs>"
1448             "                <weights offset=\"2232576\" size=\"65536\"/>"
1449             "                <biases offset=\"2298112\" size=\"1024\"/>"
1450             "            </blobs>"
1451             "        </layer>"
1452             "        <layer id=\"58\" name=\"fire9/relu_expand1x1\" precision=\"FP32\" type=\"ReLU\">"
1453             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1454             "            <input>"
1455             "                <port id=\"0\">"
1456             "                    <dim>1</dim>"
1457             "                    <dim>256</dim>"
1458             "                    <dim>14</dim>"
1459             "                    <dim>14</dim>"
1460             "                </port>"
1461             "            </input>"
1462             "            <output>"
1463             "                <port id=\"1\">"
1464             "                    <dim>1</dim>"
1465             "                    <dim>256</dim>"
1466             "                    <dim>14</dim>"
1467             "                    <dim>14</dim>"
1468             "                </port>"
1469             "            </output>"
1470             "        </layer>"
1471             "        <layer id=\"59\" name=\"fire9/expand3x3\" precision=\"FP32\" type=\"Convolution\">"
1472             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"3\" kernel-y=\"3\" output=\"256\" pad-x=\"1\" pad-y=\"1\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1473             "            <input>"
1474             "                <port id=\"0\">"
1475             "                    <dim>1</dim>"
1476             "                    <dim>64</dim>"
1477             "                    <dim>14</dim>"
1478             "                    <dim>14</dim>"
1479             "                </port>"
1480             "            </input>"
1481             "            <output>"
1482             "                <port id=\"3\">"
1483             "                    <dim>1</dim>"
1484             "                    <dim>256</dim>"
1485             "                    <dim>14</dim>"
1486             "                    <dim>14</dim>"
1487             "                </port>"
1488             "            </output>"
1489             "            <blobs>"
1490             "                <weights offset=\"2299136\" size=\"589824\"/>"
1491             "                <biases offset=\"2888960\" size=\"1024\"/>"
1492             "            </blobs>"
1493             "        </layer>"
1494             "        <layer id=\"60\" name=\"fire9/relu_expand3x3\" precision=\"FP32\" type=\"ReLU\">"
1495             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1496             "            <input>"
1497             "                <port id=\"0\">"
1498             "                    <dim>1</dim>"
1499             "                    <dim>256</dim>"
1500             "                    <dim>14</dim>"
1501             "                    <dim>14</dim>"
1502             "                </port>"
1503             "            </input>"
1504             "            <output>"
1505             "                <port id=\"1\">"
1506             "                    <dim>1</dim>"
1507             "                    <dim>256</dim>"
1508             "                    <dim>14</dim>"
1509             "                    <dim>14</dim>"
1510             "                </port>"
1511             "            </output>"
1512             "        </layer>"
1513             "        <layer id=\"61\" name=\"fire9/concat\" precision=\"FP32\" type=\"Concat\">"
1514             "            <data axis=\"1\"/>"
1515             "            <input>"
1516             "                <port id=\"0\">"
1517             "                    <dim>1</dim>"
1518             "                    <dim>256</dim>"
1519             "                    <dim>14</dim>"
1520             "                    <dim>14</dim>"
1521             "                </port>"
1522             "                <port id=\"1\">"
1523             "                    <dim>1</dim>"
1524             "                    <dim>256</dim>"
1525             "                    <dim>14</dim>"
1526             "                    <dim>14</dim>"
1527             "                </port>"
1528             "            </input>"
1529             "            <output>"
1530             "                <port id=\"2\">"
1531             "                    <dim>1</dim>"
1532             "                    <dim>512</dim>"
1533             "                    <dim>14</dim>"
1534             "                    <dim>14</dim>"
1535             "                </port>"
1536             "            </output>"
1537             "        </layer>"
1538             "        <layer id=\"62\" name=\"conv10\" precision=\"FP32\" type=\"Convolution\">"
1539             "            <data dilation-x=\"1\" dilation-y=\"1\" group=\"1\" kernel-x=\"1\" kernel-y=\"1\" output=\"1000\" pad-x=\"0\" pad-y=\"0\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1540             "            <input>"
1541             "                <port id=\"0\">"
1542             "                    <dim>1</dim>"
1543             "                    <dim>512</dim>"
1544             "                    <dim>14</dim>"
1545             "                    <dim>14</dim>"
1546             "                </port>"
1547             "            </input>"
1548             "            <output>"
1549             "                <port id=\"3\">"
1550             "                    <dim>1</dim>"
1551             "                    <dim>1000</dim>"
1552             "                    <dim>14</dim>"
1553             "                    <dim>14</dim>"
1554             "                </port>"
1555             "            </output>"
1556             "            <blobs>"
1557             "                <weights offset=\"2889984\" size=\"2048000\"/>"
1558             "                <biases offset=\"4937984\" size=\"4000\"/>"
1559             "            </blobs>"
1560             "        </layer>"
1561             "        <layer id=\"63\" name=\"relu_conv10\" precision=\"FP32\" type=\"ReLU\">"
1562             "            <data engine=\"caffe.ReLUParameter.DEFAULT\" negative_slope=\"0.0\"/>"
1563             "            <input>"
1564             "                <port id=\"0\">"
1565             "                    <dim>1</dim>"
1566             "                    <dim>1000</dim>"
1567             "                    <dim>14</dim>"
1568             "                    <dim>14</dim>"
1569             "                </port>"
1570             "            </input>"
1571             "            <output>"
1572             "                <port id=\"1\">"
1573             "                    <dim>1</dim>"
1574             "                    <dim>1000</dim>"
1575             "                    <dim>14</dim>"
1576             "                    <dim>14</dim>"
1577             "                </port>"
1578             "            </output>"
1579             "        </layer>"
1580             "        <layer id=\"64\" name=\"pool10\" precision=\"FP32\" type=\"Pooling\">"
1581             "            <data exclude-pad=\"false\" kernel-x=\"14\" kernel-y=\"14\" pad-x=\"0\" pad-y=\"0\" pool-method=\"avg\" rounding_type=\"ceil\" stride=\"1,1,1,1\" stride-x=\"1\" stride-y=\"1\"/>"
1582             "            <input>"
1583             "                <port id=\"0\">"
1584             "                    <dim>1</dim>"
1585             "                    <dim>1000</dim>"
1586             "                    <dim>14</dim>"
1587             "                    <dim>14</dim>"
1588             "                </port>"
1589             "            </input>"
1590             "            <output>"
1591             "                <port id=\"1\">"
1592             "                    <dim>1</dim>"
1593             "                    <dim>1000</dim>"
1594             "                    <dim>1</dim>"
1595             "                    <dim>1</dim>"
1596             "                </port>"
1597             "            </output>"
1598             "        </layer>"
1599             "        <layer id=\"65\" name=\"prob\" precision=\"FP32\" type=\"SoftMax\">"
1600             "            <data axis=\"1\"/>"
1601             "            <input>"
1602             "                <port id=\"0\">"
1603             "                    <dim>1</dim>"
1604             "                    <dim>1000</dim>"
1605             "                    <dim>1</dim>"
1606             "                    <dim>1</dim>"
1607             "                </port>"
1608             "            </input>"
1609             "            <output>"
1610             "                <port id=\"1\">"
1611             "                    <dim>1</dim>"
1612             "                    <dim>1000</dim>"
1613             "                    <dim>1</dim>"
1614             "                    <dim>1</dim>"
1615             "                </port>"
1616             "            </output>"
1617             "        </layer>"
1618             "    </layers>"
1619             "    <edges>"
1620             "        <edge from-layer=\"0\" from-port=\"0\" to-layer=\"1\" to-port=\"0\"/>"
1621             "        <edge from-layer=\"1\" from-port=\"3\" to-layer=\"2\" to-port=\"0\"/>"
1622             "        <edge from-layer=\"2\" from-port=\"1\" to-layer=\"3\" to-port=\"0\"/>"
1623             "        <edge from-layer=\"3\" from-port=\"1\" to-layer=\"4\" to-port=\"0\"/>"
1624             "        <edge from-layer=\"4\" from-port=\"3\" to-layer=\"5\" to-port=\"0\"/>"
1625             "        <edge from-layer=\"5\" from-port=\"1\" to-layer=\"6\" to-port=\"0\"/>"
1626             "        <edge from-layer=\"6\" from-port=\"3\" to-layer=\"7\" to-port=\"0\"/>"
1627             "        <edge from-layer=\"5\" from-port=\"1\" to-layer=\"8\" to-port=\"0\"/>"
1628             "        <edge from-layer=\"8\" from-port=\"3\" to-layer=\"9\" to-port=\"0\"/>"
1629             "        <edge from-layer=\"7\" from-port=\"1\" to-layer=\"10\" to-port=\"0\"/>"
1630             "        <edge from-layer=\"9\" from-port=\"1\" to-layer=\"10\" to-port=\"1\"/>"
1631             "        <edge from-layer=\"10\" from-port=\"2\" to-layer=\"11\" to-port=\"0\"/>"
1632             "        <edge from-layer=\"11\" from-port=\"3\" to-layer=\"12\" to-port=\"0\"/>"
1633             "        <edge from-layer=\"11\" from-port=\"4\" to-layer=\"8\" to-port=\"1\"/>"
1634             "        <edge from-layer=\"12\" from-port=\"1\" to-layer=\"13\" to-port=\"0\"/>"
1635             "        <edge from-layer=\"13\" from-port=\"3\" to-layer=\"14\" to-port=\"0\"/>"
1636             "        <edge from-layer=\"12\" from-port=\"1\" to-layer=\"15\" to-port=\"0\"/>"
1637             "        <edge from-layer=\"15\" from-port=\"3\" to-layer=\"16\" to-port=\"0\"/>"
1638             "        <edge from-layer=\"14\" from-port=\"1\" to-layer=\"17\" to-port=\"0\"/>"
1639             "        <edge from-layer=\"16\" from-port=\"1\" to-layer=\"17\" to-port=\"1\"/>"
1640             "        <edge from-layer=\"17\" from-port=\"2\" to-layer=\"18\" to-port=\"0\"/>"
1641             "        <edge from-layer=\"18\" from-port=\"1\" to-layer=\"19\" to-port=\"0\"/>"
1642             "        <edge from-layer=\"19\" from-port=\"3\" to-layer=\"20\" to-port=\"0\"/>"
1643             "        <edge from-layer=\"20\" from-port=\"1\" to-layer=\"21\" to-port=\"0\"/>"
1644             "        <edge from-layer=\"21\" from-port=\"3\" to-layer=\"22\" to-port=\"0\"/>"
1645             "        <edge from-layer=\"20\" from-port=\"1\" to-layer=\"23\" to-port=\"0\"/>"
1646             "        <edge from-layer=\"23\" from-port=\"3\" to-layer=\"24\" to-port=\"0\"/>"
1647             "        <edge from-layer=\"22\" from-port=\"1\" to-layer=\"25\" to-port=\"0\"/>"
1648             "        <edge from-layer=\"24\" from-port=\"1\" to-layer=\"25\" to-port=\"1\"/>"
1649             "        <edge from-layer=\"25\" from-port=\"2\" to-layer=\"26\" to-port=\"0\"/>"
1650             "        <edge from-layer=\"26\" from-port=\"3\" to-layer=\"27\" to-port=\"0\"/>"
1651             "        <edge from-layer=\"27\" from-port=\"1\" to-layer=\"28\" to-port=\"0\"/>"
1652             "        <edge from-layer=\"28\" from-port=\"3\" to-layer=\"29\" to-port=\"0\"/>"
1653             "        <edge from-layer=\"27\" from-port=\"1\" to-layer=\"30\" to-port=\"0\"/>"
1654             "        <edge from-layer=\"30\" from-port=\"3\" to-layer=\"31\" to-port=\"0\"/>"
1655             "        <edge from-layer=\"29\" from-port=\"1\" to-layer=\"32\" to-port=\"0\"/>"
1656             "        <edge from-layer=\"31\" from-port=\"1\" to-layer=\"32\" to-port=\"1\"/>"
1657             "        <edge from-layer=\"32\" from-port=\"2\" to-layer=\"33\" to-port=\"0\"/>"
1658             "        <edge from-layer=\"33\" from-port=\"1\" to-layer=\"34\" to-port=\"0\"/>"
1659             "        <edge from-layer=\"34\" from-port=\"3\" to-layer=\"35\" to-port=\"0\"/>"
1660             "        <edge from-layer=\"35\" from-port=\"1\" to-layer=\"36\" to-port=\"0\"/>"
1661             "        <edge from-layer=\"36\" from-port=\"3\" to-layer=\"37\" to-port=\"0\"/>"
1662             "        <edge from-layer=\"35\" from-port=\"1\" to-layer=\"38\" to-port=\"0\"/>"
1663             "        <edge from-layer=\"38\" from-port=\"3\" to-layer=\"39\" to-port=\"0\"/>"
1664             "        <edge from-layer=\"37\" from-port=\"1\" to-layer=\"40\" to-port=\"0\"/>"
1665             "        <edge from-layer=\"39\" from-port=\"1\" to-layer=\"40\" to-port=\"1\"/>"
1666             "        <edge from-layer=\"40\" from-port=\"2\" to-layer=\"41\" to-port=\"0\"/>"
1667             "        <edge from-layer=\"41\" from-port=\"3\" to-layer=\"42\" to-port=\"0\"/>"
1668             "        <edge from-layer=\"42\" from-port=\"1\" to-layer=\"43\" to-port=\"0\"/>"
1669             "        <edge from-layer=\"43\" from-port=\"3\" to-layer=\"44\" to-port=\"0\"/>"
1670             "        <edge from-layer=\"42\" from-port=\"1\" to-layer=\"45\" to-port=\"0\"/>"
1671             "        <edge from-layer=\"45\" from-port=\"3\" to-layer=\"46\" to-port=\"0\"/>"
1672             "        <edge from-layer=\"44\" from-port=\"1\" to-layer=\"47\" to-port=\"0\"/>"
1673             "        <edge from-layer=\"46\" from-port=\"1\" to-layer=\"47\" to-port=\"1\"/>"
1674             "        <edge from-layer=\"47\" from-port=\"2\" to-layer=\"48\" to-port=\"0\"/>"
1675             "        <edge from-layer=\"48\" from-port=\"3\" to-layer=\"49\" to-port=\"0\"/>"
1676             "        <edge from-layer=\"49\" from-port=\"1\" to-layer=\"50\" to-port=\"0\"/>"
1677             "        <edge from-layer=\"50\" from-port=\"3\" to-layer=\"51\" to-port=\"0\"/>"
1678             "        <edge from-layer=\"49\" from-port=\"1\" to-layer=\"52\" to-port=\"0\"/>"
1679             "        <edge from-layer=\"52\" from-port=\"3\" to-layer=\"53\" to-port=\"0\"/>"
1680             "        <edge from-layer=\"51\" from-port=\"1\" to-layer=\"54\" to-port=\"0\"/>"
1681             "        <edge from-layer=\"53\" from-port=\"1\" to-layer=\"54\" to-port=\"1\"/>"
1682             "        <edge from-layer=\"54\" from-port=\"2\" to-layer=\"55\" to-port=\"0\"/>"
1683             "        <edge from-layer=\"55\" from-port=\"3\" to-layer=\"56\" to-port=\"0\"/>"
1684             "        <edge from-layer=\"56\" from-port=\"1\" to-layer=\"57\" to-port=\"0\"/>"
1685             "        <edge from-layer=\"57\" from-port=\"3\" to-layer=\"58\" to-port=\"0\"/>"
1686             "        <edge from-layer=\"56\" from-port=\"1\" to-layer=\"59\" to-port=\"0\"/>"
1687             "        <edge from-layer=\"59\" from-port=\"3\" to-layer=\"60\" to-port=\"0\"/>"
1688             "        <edge from-layer=\"58\" from-port=\"1\" to-layer=\"61\" to-port=\"0\"/>"
1689             "        <edge from-layer=\"60\" from-port=\"1\" to-layer=\"61\" to-port=\"1\"/>"
1690             "        <edge from-layer=\"61\" from-port=\"2\" to-layer=\"62\" to-port=\"0\"/>"
1691             "        <edge from-layer=\"62\" from-port=\"3\" to-layer=\"63\" to-port=\"0\"/>"
1692             "        <edge from-layer=\"63\" from-port=\"1\" to-layer=\"64\" to-port=\"0\"/>"
1693             "        <edge from-layer=\"64\" from-port=\"1\" to-layer=\"65\" to-port=\"0\"/>"
1694             "    </edges>"
1695             "</net>";
1696     CNNNetReaderImpl reader(make_shared<V2FormatParserCreator>());
1697
1698     ASSERT_EQ(GENERAL_ERROR, reader.ReadNetwork(model.data(), model.length(), &resp));
1699 }
1700
1701 TEST_F(CNNNetReaderImplTest, canRead3DConvolution) {
1702     std::string model =
1703             "<net batch=\"1\" name=\"Convolution_only\" version=\"3\">"
1704             "    <layers>"
1705             "        <layer id=\"0\" name=\"1\" precision=\"FP32\" type=\"Input\">"
1706             "            <output>"
1707             "                <port id=\"0\">"
1708             "                    <dim>1</dim>"
1709             "                    <dim>3</dim>"
1710             "                    <dim>16</dim>"
1711             "                    <dim>112</dim>"
1712             "                    <dim>112</dim>"
1713             "                </port>"
1714             "            </output>"
1715             "        </layer>"
1716             "        <layer id=\"1\" name=\"3D_conv\" precision=\"FP32\" type=\"Convolution\">"
1717             "            <data dilations=\"1,3,5\" group=\"1\" kernel=\"1,3,5\" output=\"64\" pads_begin=\"1,3,5\" pads_end=\"1,3,5\" strides=\"1,3,5\"/>"
1718             "            <input>"
1719             "                <port id=\"0\">"
1720             "                    <dim>1</dim>"
1721             "                    <dim>3</dim>"
1722             "                    <dim>16</dim>"
1723             "                    <dim>112</dim>"
1724             "                    <dim>112</dim>"
1725             "                </port>"
1726             "            </input>"
1727             "            <output>"
1728             "                <port id=\"1\">"
1729             "                    <dim>1</dim>"
1730             "                    <dim>64</dim>"
1731             "                    <dim>16</dim>"
1732             "                    <dim>56</dim>"
1733             "                    <dim>56</dim>"
1734             "                </port>"
1735             "            </output>"
1736             "            <blobs>"
1737             "                <weights offset=\"0\" size=\"263424\"/>"
1738             "                <biases offset=\"263424\" size=\"256\"/>"
1739             "            </blobs>"
1740             "        </layer>"
1741             "    </layers>"
1742             "    <edges>"
1743             "        <edge from-layer=\"0\" from-port=\"0\" to-layer=\"1\" to-port=\"0\"/>"
1744             "    </edges>"
1745             "</net>";
1746
1747     CNNNetReaderImpl reader(make_shared<V2FormatParserCreator>());
1748     ASSERT_EQ(OK, reader.ReadNetwork(model.data(), model.length(), &resp));
1749     ResponseDesc resp;
1750     auto network = reader.getNetwork(&resp);
1751
1752     CNNLayerPtr layer;
1753     ASSERT_EQ(OK, network->getLayerByName("3D_conv", layer, nullptr));
1754     auto* conv = dynamic_cast<ConvolutionLayer*>(layer.get());
1755     ASSERT_NE(nullptr, conv);
1756     ASSERT_EQ(conv->_kernel[X_AXIS], 5);
1757     ASSERT_EQ(conv->_kernel[Y_AXIS], 3);
1758     ASSERT_EQ(conv->_kernel[Z_AXIS], 1);
1759     ASSERT_EQ(conv->_dilation[X_AXIS], 5);
1760     ASSERT_EQ(conv->_dilation[Y_AXIS], 3);
1761     ASSERT_EQ(conv->_dilation[Z_AXIS], 1);
1762     ASSERT_EQ(conv->_stride[X_AXIS], 5);
1763     ASSERT_EQ(conv->_stride[Y_AXIS], 3);
1764     ASSERT_EQ(conv->_stride[Z_AXIS], 1);
1765     ASSERT_EQ(conv->_padding[X_AXIS], 5);
1766     ASSERT_EQ(conv->_padding[Y_AXIS], 3);
1767     ASSERT_EQ(conv->_padding[Z_AXIS], 1);
1768     ASSERT_EQ(conv->_pads_end[X_AXIS], 5);
1769     ASSERT_EQ(conv->_pads_end[Y_AXIS], 3);
1770     ASSERT_EQ(conv->_pads_end[Z_AXIS], 1);
1771 }
1772
1773 TEST_F(CNNNetReaderImplTest, canRead3DPooling) {
1774     std::string model =
1775             "<net batch=\"1\" name=\"Pooling_only\" version=\"3\">"
1776             "    <layers>"
1777             "        <layer id=\"0\" name=\"1\" precision=\"FP32\" type=\"Input\">"
1778             "            <output>"
1779             "                <port id=\"0\">"
1780             "                    <dim>1</dim>"
1781             "                    <dim>3</dim>"
1782             "                    <dim>16</dim>"
1783             "                    <dim>112</dim>"
1784             "                    <dim>112</dim>"
1785             "                </port>"
1786             "            </output>"
1787             "        </layer>"
1788             "        <layer id=\"1\" name=\"3D_pooling\" precision=\"FP32\" type=\"Pooling\">"
1789             "            <data exclude-pad=\"true\" kernel=\"1,3,5\" pads_begin=\"1,3,5\" pads_end=\"1,3,5\" pool-method=\"max\" rounding_type=\"ceil\" strides=\"1,3,5\"/>"
1790             "            <input>"
1791             "                <port id=\"0\">"
1792             "                    <dim>1</dim>"
1793             "                    <dim>3</dim>"
1794             "                    <dim>16</dim>"
1795             "                    <dim>112</dim>"
1796             "                    <dim>112</dim>"
1797             "                </port>"
1798             "            </input>"
1799             "            <output>"
1800             "                <port id=\"1\">"
1801             "                    <dim>1</dim>"
1802             "                    <dim>64</dim>"
1803             "                    <dim>8</dim>"
1804             "                    <dim>28</dim>"
1805             "                    <dim>28</dim>"
1806             "                </port>"
1807             "            </output>"
1808             "        </layer>"
1809             "    </layers>"
1810             "    <edges>"
1811             "        <edge from-layer=\"0\" from-port=\"0\" to-layer=\"1\" to-port=\"0\"/>"
1812             "    </edges>"
1813             "</net>";
1814
1815     CNNNetReaderImpl reader(make_shared<V2FormatParserCreator>());
1816     ASSERT_EQ(OK, reader.ReadNetwork(model.data(), model.length(), &resp));
1817     ResponseDesc resp;
1818     auto network = reader.getNetwork(&resp);
1819
1820     CNNLayerPtr layer;
1821
1822     ASSERT_EQ(OK, network->getLayerByName("3D_pooling", layer, nullptr));
1823     auto* pool = dynamic_cast<PoolingLayer*>(layer.get());
1824     ASSERT_NE(nullptr, pool);
1825     ASSERT_EQ(pool->_kernel[X_AXIS], 5);
1826     ASSERT_EQ(pool->_kernel[Y_AXIS], 3);
1827     ASSERT_EQ(pool->_kernel[Z_AXIS], 1);
1828     ASSERT_EQ(pool->_stride[X_AXIS], 5);
1829     ASSERT_EQ(pool->_stride[Y_AXIS], 3);
1830     ASSERT_EQ(pool->_stride[Z_AXIS], 1);
1831     ASSERT_EQ(pool->_padding[X_AXIS], 5);
1832     ASSERT_EQ(pool->_padding[Y_AXIS], 3);
1833     ASSERT_EQ(pool->_padding[Z_AXIS], 1);
1834     ASSERT_EQ(pool->_pads_end[X_AXIS], 5);
1835     ASSERT_EQ(pool->_pads_end[Y_AXIS], 3);
1836     ASSERT_EQ(pool->_pads_end[Z_AXIS], 1);
1837 }
1838
1839 TEST_F(CNNNetReaderImplTest, canParseWithoutInput_1to2) {
1840     std::string model = R"V0G0N(
1841 <net batch="1" name="SimpleNet" version="2">
1842     <layers>
1843         <layer id="1" name="Boo" precision="FP32" type="Split">
1844             <data operation="sum"/>
1845             <input>
1846                 <port id="0">
1847                     <dim>2</dim>
1848                     <dim>16</dim>
1849                 </port>
1850             </input>
1851             <output>
1852                 <port id="1">
1853                     <dim>1</dim>
1854                     <dim>16</dim>
1855                 </port>
1856                 <port id="2">
1857                     <dim>1</dim>
1858                     <dim>16</dim>
1859                 </port>
1860             </output>
1861         </layer>
1862     </layers>
1863 </net>
1864     )V0G0N";
1865
1866     CNNNetReaderImpl reader(make_shared<V2FormatParserCreator>());
1867     sts = reader.ReadNetwork(model.data(), model.length(), &resp);
1868     ASSERT_EQ(GENERAL_ERROR, sts) << resp.msg;
1869 }
1870
1871 TEST_F(CNNNetReaderImplTest, canParseWithoutInput_2to1) {
1872     std::string model = R"V0G0N(
1873 <net batch="1" name="SimpleNet" version="2">
1874     <layers>
1875         <layer id="1" name="Foo" precision="FP32" type="Eltwise">
1876             <data operation="sum"/>
1877             <input>
1878                 <port id="0">
1879                     <dim>1</dim>
1880                     <dim>16</dim>
1881                 </port>
1882                 <port id="1">
1883                     <dim>1</dim>
1884                     <dim>16</dim>
1885                 </port>
1886             </input>
1887             <output>
1888                 <port id="2">
1889                     <dim>1</dim>
1890                     <dim>16</dim>
1891                 </port>
1892             </output>
1893         </layer>
1894     </layers>
1895 </net>
1896     )V0G0N";
1897
1898     CNNNetReaderImpl reader(make_shared<V2FormatParserCreator>());
1899     sts = reader.ReadNetwork(model.data(), model.length(), &resp);
1900     ASSERT_EQ(GENERAL_ERROR, sts) << resp.msg;
1901 }
1902
1903 TEST_F(CNNNetReaderImplTest, canParseSimpleTI) {
1904     std::string model = R"V0G0N(
1905 <net batch="1" name="Simple_TI" version="4">
1906     <layers>
1907         <layer id="0" name="input" precision="FP32" type="Input">
1908             <output>
1909                 <port id="0">
1910                     <dim>1</dim>
1911                     <dim>5</dim>
1912                     <dim>16</dim>
1913                 </port>
1914             </output>
1915         </layer>
1916         <layer id="1" name="Bias" precision="FP32" type="Const">
1917             <output>
1918                 <port id="0">
1919                     <dim>1</dim>
1920                     <dim>16</dim>
1921                 </port>
1922             </output>
1923             <blobs>
1924                 <custom offset="0" size="64"/>
1925             </blobs>
1926         </layer>
1927         <layer id="2" name="SomeTI" precision="FP32" type="TensorIterator">
1928             <input>
1929                 <port id="0">
1930                     <dim>1</dim>
1931                     <dim>5</dim>
1932                     <dim>16</dim>
1933                 </port>
1934                 <port id="1">
1935                     <dim>1</dim>
1936                     <dim>16</dim>
1937                 </port>
1938             </input>
1939             <output>
1940                 <port id="3">
1941                     <dim>1</dim>
1942                     <dim>5</dim>
1943                     <dim>16</dim>
1944                 </port>
1945             </output>
1946             <port_map>
1947                 <input  external_port_id="0" internal_layer_id="0" internal_port_id="0" axis="1" />
1948                 <input  external_port_id="1" internal_layer_id="1" internal_port_id="1"/>
1949                 <output external_port_id="3" internal_layer_id="2" internal_port_id="1" axis="1" />
1950             </port_map>
1951             <back_edges>
1952                 <edge from-layer="1" from-port="2" to-layer="1" to-port="1"/>
1953             </back_edges>
1954             <body>
1955                 <layers>
1956                     <layer id="0" name="TI_reshape_in" precision="FP32" type="Reshape">
1957                         <data axis="0" dim="1,512" num_axes="-1"/>
1958                         <input>
1959                             <port id="0">
1960                                 <dim>1</dim>
1961                                 <dim>1</dim>
1962                                 <dim>16</dim>
1963                             </port>
1964                         </input>
1965                         <output>
1966                             <port id="1">
1967                                 <dim>1</dim>
1968                                 <dim>16</dim>
1969                             </port>
1970                         </output>
1971                     </layer>
1972                     <layer id="1" name="TI_sum" precision="FP32" type="Eltwise">
1973                         <data operation="sum"/>
1974                         <input>
1975                             <port id="0">
1976                                 <dim>1</dim>
1977                                 <dim>16</dim>
1978                             </port>
1979                             <port id="1">
1980                                 <dim>1</dim>
1981                                 <dim>16</dim>
1982                             </port>
1983                         </input>
1984                         <output>
1985                             <port id="2">
1986                                 <dim>1</dim>
1987                                 <dim>16</dim>
1988                             </port>
1989                         </output>
1990                     </layer>
1991                     <layer id="2" name="TI_reshape_out" precision="FP32" type="Reshape">
1992                         <data axis="0" dim="1,1,256" num_axes="-1"/>
1993                         <input>
1994                             <port id="0">
1995                                 <dim>1</dim>
1996                                 <dim>16</dim>
1997                             </port>
1998                         </input>
1999                         <output>
2000                             <port id="1">
2001                                 <dim>1</dim>
2002                                 <dim>1</dim>
2003                                 <dim>16</dim>
2004                             </port>
2005                         </output>
2006                     </layer>
2007                 </layers>
2008                 <edges>
2009                     <edge from-layer="0" from-port="1" to-layer="1" to-port="0"/>
2010                     <edge from-layer="1" from-port="2" to-layer="2" to-port="0"/>
2011                 </edges>
2012             </body>
2013         </layer>
2014     </layers>
2015     <edges>
2016         <edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
2017         <edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
2018     </edges>
2019 </net>
2020     )V0G0N";
2021
2022     CNNNetReaderImpl reader(make_shared<V2FormatParserCreator>());
2023     sts = reader.ReadNetwork(model.data(), model.length(), &resp);
2024     ASSERT_EQ(OK, sts) << resp.msg;
2025
2026     auto network = reader.getNetwork(&resp);
2027     ASSERT_NE(nullptr, network) << resp.msg;
2028
2029     CNNLayerPtr layer;
2030     sts = network->getLayerByName("SomeTI", layer, &resp);
2031     ASSERT_EQ(OK, sts) << resp.msg;
2032
2033     auto* ti = dynamic_cast<TensorIterator*>(layer.get());
2034     ASSERT_NE(nullptr, ti);
2035     ASSERT_EQ(ti->type, "TensorIterator");
2036
2037     //  Check Input port mapping
2038     ASSERT_EQ(ti->input_port_map.size(), 2);
2039     int i = ti->input_port_map[0].axis == 1 ? 0 : 1;
2040     ASSERT_EQ(ti->input_port_map[i].axis, 1);
2041     ASSERT_EQ(ti->input_port_map[i].stride, 1);
2042     ASSERT_EQ(ti->input_port_map[i].start, 0);
2043     ASSERT_EQ(ti->input_port_map[i].end, -1);
2044     ASSERT_EQ(ti->input_port_map[i].part_size, 1);
2045     ASSERT_EQ(ti->input_port_map[1 - i].axis, -1);
2046     ASSERT_EQ(ti->input_port_map[1 - i].stride, 1);
2047     ASSERT_EQ(ti->input_port_map[1 - i].start, 0);
2048     ASSERT_EQ(ti->input_port_map[1 - i].end, -1);
2049     ASSERT_EQ(ti->input_port_map[1 - i].part_size, 1);
2050
2051     //  Check Output port mapping
2052     ASSERT_EQ(ti->output_port_map.size(), 1);
2053     ASSERT_EQ(ti->output_port_map[0].axis, 1);
2054     ASSERT_EQ(ti->output_port_map[0].stride, 1);
2055     ASSERT_EQ(ti->output_port_map[0].start, 0);
2056     ASSERT_EQ(ti->output_port_map[0].end, -1);
2057     ASSERT_EQ(ti->output_port_map[0].part_size, 1);
2058
2059     //  No back edges
2060     ASSERT_EQ(ti->back_edges.size(), 1);
2061     ASSERT_EQ(ti->back_edges[0].from, 0);
2062     ASSERT_EQ(ti->back_edges[0].to, 1);
2063     ASSERT_EQ(ti->back_edges[0].axis, -1);
2064     ASSERT_EQ(ti->back_edges[0].stride, 1);
2065     ASSERT_EQ(ti->back_edges[0].start, 0);
2066     ASSERT_EQ(ti->back_edges[0].end, -1);
2067     ASSERT_EQ(ti->back_edges[0].part_size, 1);
2068 }
2069
2070 TEST_F(CNNNetReaderImplTest, canParseScalar) {
2071     std::string model = R"V0G0N(
2072 <net batch="1" name="SimpleNet" version="2">
2073     <layers>
2074         <layer id="0" name="input" precision="FP32" type="Input">
2075             <output>
2076                 <port id="0">
2077                     <dim>1</dim>
2078                     <dim>5</dim>
2079                     <dim>16</dim>
2080                 </port>
2081             </output>
2082         </layer>
2083         <layer id="1" name="scalar" precision="FP32" type="Const">
2084             <output>
2085                 <port id="0"/>
2086             </output>
2087             <blobs>
2088                 <custom offset="0" size="4"/>
2089             </blobs>
2090         </layer>
2091         <layer id="2" name="reshape" precision="FP32" type="Reshape">
2092             <input>
2093                 <port id="0">
2094                     <dim>1</dim>
2095                     <dim>5</dim>
2096                     <dim>16</dim>
2097                 </port>
2098                 <port id="1"/>
2099             </input>
2100             <output>
2101                 <port id="2">
2102                     <dim>90</dim>
2103                 </port>
2104             </output>
2105         </layer>
2106     </layers>
2107     <edges>
2108         <edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
2109         <edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
2110     </edges>
2111 </net>
2112     )V0G0N";
2113
2114     CNNNetReaderImpl reader(make_shared<V2FormatParserCreator>());
2115     sts = reader.ReadNetwork(model.data(), model.length(), &resp);
2116     ASSERT_EQ(OK, sts) << resp.msg;
2117     auto blob = make_shared_blob<uint8_t>(TensorDesc(Precision::U8, {4}, Layout::C));
2118     blob->allocate();
2119     auto buffer = blob->buffer().as<float*>();
2120     float SCALAR_VALUE = 90;
2121     buffer[0] = SCALAR_VALUE;
2122
2123     sts = reader.SetWeights(blob, &resp);
2124     ASSERT_EQ(OK, sts) << resp.msg;
2125
2126     auto net = reader.getNetwork(&resp);
2127
2128     ASSERT_NE(nullptr, net) << resp.msg;
2129     CNNLayerPtr layer;
2130     sts = net->getLayerByName("scalar", layer, &resp);
2131     ASSERT_EQ(OK, sts) << resp.msg;
2132     ASSERT_NE(nullptr, layer.get());
2133     ASSERT_EQ(layer->type, "Const");
2134     auto actualBlob = layer->blobs.begin()->second;
2135     ASSERT_EQ(actualBlob->buffer().as<float*>()[0], SCALAR_VALUE);
2136     auto scalarDesc = layer->outData[0]->getTensorDesc();
2137     ASSERT_TRUE(scalarDesc.getDims().empty());
2138     ASSERT_EQ(scalarDesc.getLayout(), SCALAR);
2139     ASSERT_EQ(scalarDesc.getPrecision(), Precision::FP32);
2140 }