aboutsummaryrefslogtreecommitdiff
path: root/21.02/_network_8cpp_source.xhtml
blob: 221c2af710f88a8be0215fafec599a4e4b2635bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: src/armnn/Network.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">21.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_network_8cpp_source.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Network.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_network_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_network_8hpp.xhtml">Network.hpp</a>&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_graph_8hpp.xhtml">Graph.hpp</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_layer_8hpp.xhtml">Layer.hpp</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_device_spec_8hpp.xhtml">DeviceSpec.hpp</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_optimizer_8hpp.xhtml">Optimizer.hpp</a>&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_subgraph_view_selector_8hpp.xhtml">SubgraphViewSelector.hpp</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_backend_settings_8hpp.xhtml">BackendSettings.hpp</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_all_8hpp.xhtml">optimizations/All.hpp</a>&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_cpu_tensor_handle_8hpp.xhtml">backendsCommon/CpuTensorHandle.hpp</a>&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_workload_factory_8hpp.xhtml">backendsCommon/WorkloadFactory.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2armnn_2backends_2_i_backend_internal_8hpp.xhtml">armnn/backends/IBackendInternal.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_tensor_handle_factory_registry_8hpp.xhtml">backendsCommon/TensorHandleFactoryRegistry.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_exceptions_8hpp.xhtml">armnn/Exceptions.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_utils_8hpp.xhtml">armnn/Utils.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_types_utils_8hpp.xhtml">armnn/TypesUtils.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_backend_registry_8hpp.xhtml">armnn/BackendRegistry.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_logging_8hpp.xhtml">armnn/Logging.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_assert_8hpp.xhtml">armnn/utility/Assert.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_ignore_unused_8hpp.xhtml">armnn/utility/IgnoreUnused.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_polymorphic_downcast_8hpp.xhtml">armnn/utility/PolymorphicDowncast.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_profiling_service_8hpp.xhtml">ProfilingService.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;fstream&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a2d936beb0fcf3c5d22ff332f0812b05e">   41</a></span>&#160;<a class="code" href="classarmnn_1_1_i_network.xhtml#a2d936beb0fcf3c5d22ff332f0812b05e">INetwork::INetwork</a>(<a class="code" href="namespacearmnn.xhtml#a4de71c3661093e5c4ae7775114f43413">NetworkOptions</a> networkOptions) : pNetworkImpl(new <a class="code" href="classarmnn_1_1_network_impl.xhtml">NetworkImpl</a>(networkOptions)) {}</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<a class="code" href="classarmnn_1_1_i_network.xhtml#af760179196d57e2ddbc64b989fb72586">INetwork::~INetwork</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#aff3fde909d22ed157046682e70129259">   45</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_network.xhtml#aff3fde909d22ed157046682e70129259">INetwork::PrintGraph</a>()</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;PrintGraph();</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#aa6c1c42ea44777302e87ce0fad5ac510">   50</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#aa6c1c42ea44777302e87ce0fad5ac510">INetwork::AddInputLayer</a>(<a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddInputLayer(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;}</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#adc8c1c505bca8233fe238b3b7fb80200">   56</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#adc8c1c505bca8233fe238b3b7fb80200">INetwork::AddArgMinMaxLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a>&amp; desc,</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;                                               <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddArgMinMaxLayer(desc, name);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;}</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a">   63</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a">INetwork::AddComparisonLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_comparison_descriptor.xhtml">ComparisonDescriptor</a>&amp; comparisonDescriptor,</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;                                                <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddComparisonLayer(comparisonDescriptor, name);</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;}</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#aea1059833739d3dccebb3a03ec35a1e6">   70</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#aea1059833739d3dccebb3a03ec35a1e6">INetwork::AddConcatLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">ConcatDescriptor</a>&amp; concatDescriptor,</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddConcatLayer(concatDescriptor, name);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;}</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a178a72bbf254eff34a807a5ca27cb61f">   77</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a178a72bbf254eff34a807a5ca27cb61f">INetwork::AddConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddConvolution2dLayer(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;}</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#abaf4646307d946a74c1bf7bdc8efb83b">   86</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a178a72bbf254eff34a807a5ca27cb61f">INetwork::AddConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> biases;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddConvolution2dLayer(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;}</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#aa54008a5c8e4916bd1da8e0923a2e049">   95</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a178a72bbf254eff34a807a5ca27cb61f">INetwork::AddConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; biases,</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name )</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;{</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddConvolution2dLayer(convolution2dDescriptor,</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                                               weights,</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                                               <a class="code" href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt;ConstTensor&gt;</a>(biases),</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;                                               name);</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;}</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#af1853466264ac187607c96b501a74e2b">  108</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#af1853466264ac187607c96b501a74e2b">INetwork::AddDepthToSpaceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">DepthToSpaceDescriptor</a>&amp; depthToSpaceDescriptor,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;{</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddDepthToSpaceLayer(depthToSpaceDescriptor, name);</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;}</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a58f85a122022527a525318473f93d4ef">  115</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a58f85a122022527a525318473f93d4ef">INetwork::AddDepthwiseConvolution2dLayer</a>(</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;{</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddDepthwiseConvolution2dLayer(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;}</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a02b981a246785121fd822a2eb996e716">  125</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a58f85a122022527a525318473f93d4ef">INetwork::AddDepthwiseConvolution2dLayer</a>(</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> biases;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddDepthwiseConvolution2dLayer(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;}</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#af326ea7544a5510e4d3465a3a842b4d4">  135</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a58f85a122022527a525318473f93d4ef">INetwork::AddDepthwiseConvolution2dLayer</a>(</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; biases,</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;{</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddDepthwiseConvolution2dLayer(convolution2dDescriptor, weights,</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                                                        <a class="code" href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt;ConstTensor&gt;</a>(biases), name);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;}</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a357aca04172ed22fa32e5a69122b0fec">  146</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a357aca04172ed22fa32e5a69122b0fec">INetwork::AddDequantizeLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;{</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddDequantizeLayer(name);</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;}</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ac1134a94265293ea7347180260f787d2">  152</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ac1134a94265293ea7347180260f787d2">INetwork::AddDetectionPostProcessLayer</a>(</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; <a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>,</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddDetectionPostProcessLayer(descriptor, anchors, name);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;}</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a095a9b700dc857edc23c5d3bf088919f">  161</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a095a9b700dc857edc23c5d3bf088919f">INetwork::AddElementwiseUnaryLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">ElementwiseUnaryDescriptor</a>&amp; elementwiseUnaryDescriptor,</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;                                                      <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;{</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddElementwiseUnaryLayer(elementwiseUnaryDescriptor, name);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;}</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#afc94c35c0bbe852a60046bf2e756b2e0">  168</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#afc94c35c0bbe852a60046bf2e756b2e0">INetwork::AddFillLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fill_descriptor.xhtml">FillDescriptor</a>&amp; fillDescriptor,</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                                          <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;{</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddFillLayer(fillDescriptor, name);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;}</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ae3ef3b97542241d331a38613ae189f3e">  175</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ae3ef3b97542241d331a38613ae189f3e">INetwork::AddFullyConnectedLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a>&amp; fullyConnectedDescriptor,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                                                    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;                                                    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                                                    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;{</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddFullyConnectedLayer(fullyConnectedDescriptor, weights, biases, name);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;}</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a44349b3cf3ff8d476d5f930946e89c47">  183</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ae3ef3b97542241d331a38613ae189f3e">INetwork::AddFullyConnectedLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a>&amp; fullyConnectedDescriptor,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                                                    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                                                    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;{</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> biases;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddFullyConnectedLayer(fullyConnectedDescriptor, weights, biases, name);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;}</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a5811dfe93a4938dbbc9e8dd266e339de">  191</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ae3ef3b97542241d331a38613ae189f3e">INetwork::AddFullyConnectedLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a>&amp; fullyConnectedDescriptor,</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                                                    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                                                    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; biases,</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                                                    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;{</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddFullyConnectedLayer(fullyConnectedDescriptor, weights,</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                                                <a class="code" href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt;ConstTensor&gt;</a>(biases), name);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;}</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a11f49d84f0cfd8df65f4d5206cd43b6d">  200</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a11f49d84f0cfd8df65f4d5206cd43b6d">INetwork::AddPermuteLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a>&amp; permuteDescriptor,</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;                                             <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;{</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddPermuteLayer(permuteDescriptor, name);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;}</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a9a9bcc00ae3d96343c93b437d6f77088">  206</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a9a9bcc00ae3d96343c93b437d6f77088">INetwork::AddBatchToSpaceNdLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a>&amp; batchToSpaceNdDescriptor,</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                                                    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;{</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddBatchToSpaceNdLayer(batchToSpaceNdDescriptor, name);</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;}</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ae913b4351b7027f37eb5657dd7867733">  212</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ae913b4351b7027f37eb5657dd7867733">INetwork::AddPooling2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a>&amp; pooling2dDescriptor,</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                                               <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;{</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddPooling2dLayer(pooling2dDescriptor, name);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;}</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#aa51350bdd4976f3dd5a4e9d00a906b2c">  218</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#aa51350bdd4976f3dd5a4e9d00a906b2c">INetwork::AddActivationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a>&amp; activationDescriptor,</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                                                <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;{</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddActivationLayer(activationDescriptor, name);</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;}</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a6c5376053e1f875776d7bc36fd0b7d45">  224</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a6c5376053e1f875776d7bc36fd0b7d45">INetwork::AddNormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a>&amp; normalizationDescriptor,</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;{</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddNormalizationLayer(normalizationDescriptor, name);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;}</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a8de6b047fcaff95df48dca683e1f3aa4">  230</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a8de6b047fcaff95df48dca683e1f3aa4">INetwork::AddSliceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a>&amp; sliceDescriptor, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;{</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddSliceLayer(sliceDescriptor, name);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;}</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a30528a3bd85a0dba158bd14e252bd68a">  234</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a30528a3bd85a0dba158bd14e252bd68a">INetwork::AddSoftmaxLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a>&amp; softmaxDescriptor,</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                                             <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;{</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddSoftmaxLayer(softmaxDescriptor, name);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;}</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a6f6d81d8a4f1f85f3616e8306760061c">  240</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a6f6d81d8a4f1f85f3616e8306760061c">INetwork::AddSplitterLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a>&amp; splitterDescriptor,</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;{</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddSplitterLayer(splitterDescriptor, name);</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;}</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a0f19808bdada45222e72edf7671a275a">  246</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a0f19808bdada45222e72edf7671a275a">INetwork::AddMergeLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;{</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddMergeLayer(name);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;}</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a34aa5f1a405a6886f79c97d53f9f65fd">  251</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a34aa5f1a405a6886f79c97d53f9f65fd">INetwork::AddMergerLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">MergerDescriptor</a>&amp; mergerDescriptor,</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddConcatLayer(mergerDescriptor, name);</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;}</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a030e8e7c1f6980ec9b2ac06b683ee74e">  257</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a030e8e7c1f6980ec9b2ac06b683ee74e">INetwork::AddAbsLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;{</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddElementwiseUnaryLayer(<a class="code" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">ElementwiseUnaryDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">UnaryOperation::Abs</a>), name);</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;}</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a39f1b38d89c4de186742eafcbb3b1319">  262</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a39f1b38d89c4de186742eafcbb3b1319">INetwork::AddAdditionLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;{</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddAdditionLayer(name);</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;}</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#abb59f6ba9988dae88e0f48e68d87fc32">  267</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#abb59f6ba9988dae88e0f48e68d87fc32">INetwork::AddMultiplicationLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;{</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddMultiplicationLayer(name);</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;}</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a8f798e19187ac7ae6ae6153ee64ab645">  272</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a8f798e19187ac7ae6ae6153ee64ab645">INetwork::AddBatchNormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a>&amp; desc,</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                                                        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; mean,</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;                                                        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; variance,</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;                                                        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; beta,</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;                                                        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; gamma,</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;                                                        <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddBatchNormalizationLayer(desc, mean, variance, beta, gamma, name);</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;}</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a25563024ec66627ee83727244a53e944">  282</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a25563024ec66627ee83727244a53e944">INetwork::AddRankLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;{</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddRankLayer(name);</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;}</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#acc9f9b91636c0714d96a3cba92c624f9">  287</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#acc9f9b91636c0714d96a3cba92c624f9">INetwork::AddResizeBilinearLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml">ResizeBilinearDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;                                                    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;{</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    <a class="code" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> resizeDescriptor;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a869254cb56968986a78a79e1d6d4a86b">m_Method</a>           = <a class="code" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">ResizeMethod::Bilinear</a>;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>       = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#adcf5037208faac36c0788239a073f75c">m_TargetWidth</a>      = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#adcf5037208faac36c0788239a073f75c">m_TargetWidth</a>;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a46c3fa15c46fb0d1dcdc24d0ea5cb5cd">m_TargetHeight</a>     = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a46c3fa15c46fb0d1dcdc24d0ea5cb5cd">m_TargetHeight</a>;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#ae1a4b3b6c60552509b89747cebb900a2">m_AlignCorners</a>     = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#ae1a4b3b6c60552509b89747cebb900a2">m_AlignCorners</a>;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a4022d5107338aaf5eb7abebf78a1360b">m_HalfPixelCenters</a> = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a4022d5107338aaf5eb7abebf78a1360b">m_HalfPixelCenters</a>;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddResizeLayer(resizeDescriptor, name);</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;}</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ad97411f1fcb2c30c212483d8c673506f">  301</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ad97411f1fcb2c30c212483d8c673506f">INetwork::AddResizeLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a>&amp; resizeDescriptor,</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;{</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddResizeLayer(resizeDescriptor, name);</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;}</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ae0cfae1ea51669892608a1a060d24fa0">  307</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ae0cfae1ea51669892608a1a060d24fa0">INetwork::AddReduceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_reduce_descriptor.xhtml">ReduceDescriptor</a>&amp; reduceDescriptor,</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddReduceLayer(reduceDescriptor, name);</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;}</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#abd61d3e7ab67551c75bc219bbc4baeb5">  313</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#abd61d3e7ab67551c75bc219bbc4baeb5">INetwork::AddInstanceNormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a>&amp; desc,</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;                                                           <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;{</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddInstanceNormalizationLayer(desc, name);</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;}</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#aaff51346dadec2c1430abf007fed4cc9">  319</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#aaff51346dadec2c1430abf007fed4cc9">INetwork::AddL2NormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a>&amp; desc,</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                                                     <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;{</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddL2NormalizationLayer(desc, name);</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;}</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a83b33973ca12078166b2436b313627b9">  325</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a83b33973ca12078166b2436b313627b9">INetwork::AddLogSoftmaxLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml">LogSoftmaxDescriptor</a>&amp; logSoftmaxDescriptor,</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                                                <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;{</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddLogSoftmaxLayer(logSoftmaxDescriptor, name);</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;}</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a1aa567f46c30960851c02847dc7b4215">  331</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a1aa567f46c30960851c02847dc7b4215">INetwork::AddConstantLayer</a>(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; input,</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;{</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddConstantLayer(input, name);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;}</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a8a3380be13fba749fc4208214b049347">  337</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a8a3380be13fba749fc4208214b049347">INetwork::AddReshapeLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a>&amp; reshapeDescriptor,</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;{</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddReshapeLayer(reshapeDescriptor, name);</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;}</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a72b9d30e9d555bb5c35460b62faedf0d">  343</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a72b9d30e9d555bb5c35460b62faedf0d">INetwork::AddSpaceToBatchNdLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a>&amp; spaceToBatchNdDescriptor,</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;{</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddSpaceToBatchNdLayer(spaceToBatchNdDescriptor, name);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;}</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a19bad0cc50526ca9f4f84a688812cdf5">  349</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a19bad0cc50526ca9f4f84a688812cdf5">INetwork::AddSpaceToDepthLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a>&amp; spaceToDepthDescriptor,</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddSpaceToDepthLayer(spaceToDepthDescriptor, name);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;}</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a435ea88480b8645026dd45fd692663a1">  355</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a435ea88480b8645026dd45fd692663a1">INetwork::AddFloorLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;{</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddFloorLayer(name);</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;}</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#af5790069aa11fd1c5bb2e17cecb06528">  359</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#af5790069aa11fd1c5bb2e17cecb06528">INetwork::AddOutputLayer</a>(<a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;{</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddOutputLayer(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;}</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a0a2fdd4f442952c97a8f24de6700473a">  364</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a0a2fdd4f442952c97a8f24de6700473a">INetwork::AddLstmLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                                          <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_lstm_input_params.xhtml">LstmInputParams</a>&amp; params,</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                                          <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;{</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddLstmLayer(descriptor, params, name);</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;}</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a0aeb4e528cf6ba4b7caca14a94fbcafe">  371</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a0aeb4e528cf6ba4b7caca14a94fbcafe">INetwork::AddDivisionLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;{</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddDivisionLayer(name);</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;}</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#af13795cdf49e63d8bc3cb409592cdb9d">  376</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#af13795cdf49e63d8bc3cb409592cdb9d">INetwork::AddSubtractionLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;{</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddSubtractionLayer(name);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;}</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a57590d7777211673d2052f702f0b07a1">  381</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a57590d7777211673d2052f702f0b07a1">INetwork::AddMaximumLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;{</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddMaximumLayer(name);</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;}</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ad4726f9b7dd11db250d2a494a8a39494">  386</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ad4726f9b7dd11db250d2a494a8a39494">INetwork::AddMeanLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a>&amp; meanDescriptor, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;{</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddMeanLayer(meanDescriptor, name);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;}</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a6e2df484ecc65bc82712590b96e04df4">  391</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a6e2df484ecc65bc82712590b96e04df4">INetwork::AddPadLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a>&amp; padDescriptor,</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                                         <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;{</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddPadLayer(padDescriptor, name);</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;}</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a0b426a3feffc76e66d73b5761806e899">  397</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a0b426a3feffc76e66d73b5761806e899">INetwork::AddQuantizeLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;{</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddQuantizeLayer(name);</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;}</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ac5c93cad39a690af862d49ffaec0d3c0">  402</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ac5c93cad39a690af862d49ffaec0d3c0">INetwork::AddStridedSliceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a>&amp; stridedSliceDescriptor,</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;{</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddStridedSliceLayer(stridedSliceDescriptor, name);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;}</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a4bfd8dee1a0315b651e977c672c0847c">  408</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a4bfd8dee1a0315b651e977c672c0847c">INetwork::AddMinimumLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddMinimumLayer(name);</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;}</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a9fcd8cc35c8ae7d092705e7c4c2a7c69">  413</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a9fcd8cc35c8ae7d092705e7c4c2a7c69">INetwork::AddGreaterLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;{</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddComparisonLayer(<a class="code" href="structarmnn_1_1_comparison_descriptor.xhtml">ComparisonDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">ComparisonOperation::Greater</a>), name);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;}</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a7ba52238d75f06ff59a0d2ba613acefe">  418</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a7ba52238d75f06ff59a0d2ba613acefe">INetwork::AddEqualLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;{</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddComparisonLayer(<a class="code" href="structarmnn_1_1_comparison_descriptor.xhtml">ComparisonDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">ComparisonOperation::Equal</a>), name);</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;}</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ae2f5193942457daafa733998f3e61449">  423</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ae2f5193942457daafa733998f3e61449">INetwork::AddRsqrtLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddElementwiseUnaryLayer(<a class="code" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">ElementwiseUnaryDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">UnaryOperation::Rsqrt</a>), name);</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;}</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a31f19249d1491464736b08b967be68b4">  428</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a31f19249d1491464736b08b967be68b4">INetwork::AddGatherLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;{</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <a class="code" href="structarmnn_1_1_gather_descriptor.xhtml">GatherDescriptor</a> gatherDescriptor{};</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddGatherLayer(gatherDescriptor, name);</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;}</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a1da203a7e3caa6ae4f0630a4758aac55">  434</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a31f19249d1491464736b08b967be68b4">INetwork::AddGatherLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_gather_descriptor.xhtml">GatherDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;{</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddGatherLayer(descriptor, name);</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;}</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a26e69cda5fe9642f9198c24ae5fdf9bc">  440</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a26e69cda5fe9642f9198c24ae5fdf9bc">INetwork::AddSwitchLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;{</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddSwitchLayer(name);</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;}</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a6d614a503a34ea3712b388aa4340ddbe">  445</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a6d614a503a34ea3712b388aa4340ddbe">INetwork::AddPreluLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;{</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddPreluLayer(name);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;}</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a41fd7b56923d5625bac2cbfebed1a393">  450</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a41fd7b56923d5625bac2cbfebed1a393">INetwork::AddTransposeConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;                                                            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                                                            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;                                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddTransposeConvolution2dLayer(descriptor, weights, biases, name);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;}</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#ab067ba4ee9416d93abb8a52f3dc8feba">  458</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#ab067ba4ee9416d93abb8a52f3dc8feba">INetwork::AddTransposeLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a>&amp; transposeDescriptor,</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                                               <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;{</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddTransposeLayer(transposeDescriptor, name);</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;}</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a5210b3df77e7a51ab369b577de821aa2">  464</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a5210b3df77e7a51ab369b577de821aa2">INetwork::AddStackLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;                                           <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddStackLayer(descriptor, name);</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;}</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a74894d085e78ff80f45fc09dd2381f08">  470</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a74894d085e78ff80f45fc09dd2381f08">INetwork::AddStandInLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_stand_in_descriptor.xhtml">StandInDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                                             <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;{</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddStandInLayer(descriptor, name);</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;}</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a40067b05f30a3ab65568c826df7a8ea7">  476</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a40067b05f30a3ab65568c826df7a8ea7">INetwork::AddQuantizedLstmLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml">QuantizedLstmInputParams</a>&amp; params,</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;{</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddQuantizedLstmLayer(params, name);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;}</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a2acbae0b9e98c94b843677484775c86a">  482</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a2acbae0b9e98c94b843677484775c86a">INetwork::AddQLstmLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml">QLstmDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;                                           <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_lstm_input_params.xhtml">LstmInputParams</a>&amp; params,</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;                                           <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;{</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddQLstmLayer(descriptor, params, name);</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;}</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a7dfc9717e76257867ad0a9239f210df0">  489</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a7dfc9717e76257867ad0a9239f210df0">INetwork::AddLogicalBinaryLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_logical_binary_descriptor.xhtml">LogicalBinaryDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;{</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;AddLogicalBinaryLayer(descriptor, name);</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;}</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a1163a712898cd2c368ef2e4510fc36c3">  495</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a1163a712898cd2c368ef2e4510fc36c3">INetwork::Accept</a>(<a class="code" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a>&amp; visitor)<span class="keyword"> const</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;Accept(visitor);</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;}</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a72032c65bf8b8acf09b564b7d80078c5">  500</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a72032c65bf8b8acf09b564b7d80078c5">INetwork::ExecuteStrategy</a>(<a class="code" href="classarmnn_1_1_i_strategy.xhtml">IStrategy</a>&amp; strategy)<span class="keyword"> const</span></div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;ExecuteStrategy(strategy);</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;}</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a230005513ac5eee1f3944b1960b6f2ed">  505</a></span>&#160;<a class="code" href="classarmnn_1_1_i_network.xhtml">armnn::INetwork</a>* <a class="code" href="classarmnn_1_1_i_network.xhtml#a230005513ac5eee1f3944b1960b6f2ed">INetwork::CreateRaw</a>(<a class="code" href="namespacearmnn.xhtml#a4de71c3661093e5c4ae7775114f43413">NetworkOptions</a> networkOptions)</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;{</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a2d936beb0fcf3c5d22ff332f0812b05e">INetwork</a>(networkOptions);</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;}</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a464f0ff87b1aabf71febaa71321dd40b">  510</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a> <a class="code" href="classarmnn_1_1_i_network.xhtml#a464f0ff87b1aabf71febaa71321dd40b">INetwork::Create</a>(<a class="code" href="namespacearmnn.xhtml#a4de71c3661093e5c4ae7775114f43413">NetworkOptions</a> networkOptions)</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;{</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>(<a class="code" href="classarmnn_1_1_i_network.xhtml#a230005513ac5eee1f3944b1960b6f2ed">CreateRaw</a>(networkOptions), &amp;<a class="code" href="classarmnn_1_1_i_network.xhtml#a55bd1bb29076dc45bb335e7322781463">INetwork::Destroy</a>);</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;}</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_network.xhtml#a55bd1bb29076dc45bb335e7322781463">  515</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_network.xhtml#a55bd1bb29076dc45bb335e7322781463">INetwork::Destroy</a>(<a class="code" href="classarmnn_1_1_i_network.xhtml">INetwork</a>* network)</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;{</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;    <span class="keyword">delete</span> network;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;}</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_optimized_network.xhtml#af730a6ec3deb072dc2687089f3f77f9e">  521</a></span>&#160;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#af730a6ec3deb072dc2687089f3f77f9e">IOptimizedNetwork::IOptimizedNetwork</a>(std::unique_ptr&lt;Graph&gt; graph)</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    : pOptimizedNetworkImpl(new <a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a>(<a class="code" href="namespacestd.xhtml">std</a>::move(graph))) {}</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_optimized_network.xhtml#a5fd8b75db92fb2a84d12e2092a173716">  524</a></span>&#160;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#af730a6ec3deb072dc2687089f3f77f9e">IOptimizedNetwork::IOptimizedNetwork</a>(std::unique_ptr&lt;OptimizedNetworkImpl&gt; impl)</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    : <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>(<a class="code" href="namespacestd.xhtml">std</a>::move(impl)) {}</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_optimized_network.xhtml#a230acad28622c18ab32254f74af569b0">  527</a></span>&#160;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#af730a6ec3deb072dc2687089f3f77f9e">IOptimizedNetwork::IOptimizedNetwork</a>(std::unique_ptr&lt;Graph&gt; graph, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a>&amp; modelOptions)</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    : <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>(new <a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a>(<a class="code" href="namespacestd.xhtml">std</a>::move(graph), modelOptions)) {}</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a437cc59f5247f213adf34e84696f60da">IOptimizedNetwork::~IOptimizedNetwork</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">  532</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">IOptimizedNetwork::Destroy</a>(<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>* network)</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;{</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;    <span class="keyword">delete</span> network;</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;}</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_optimized_network.xhtml#aff3fde909d22ed157046682e70129259">  537</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#aff3fde909d22ed157046682e70129259">IOptimizedNetwork::PrintGraph</a>()</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;{</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;PrintGraph();</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;}</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_optimized_network.xhtml#a26794f014974a6f963a8925de07bffeb">  542</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a26794f014974a6f963a8925de07bffeb">IOptimizedNetwork::SerializeToDot</a>(std::ostream&amp; stream)<span class="keyword"> const</span></div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;SerializeToDot(stream);</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;}</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="classarmnn_1_1_i_optimized_network.xhtml#ab986223ec7e4f04929cb47c74a27aa93">  547</a></span>&#160;<a class="code" href="classarmnn_1_1profiling_1_1_profiling_guid.xhtml">profiling::ProfilingGuid</a> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#ab986223ec7e4f04929cb47c74a27aa93">IOptimizedNetwork::GetGuid</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;GetGuid();</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;}</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classarmnn_1_1_optimized_network_impl.xhtml#aff3fde909d22ed157046682e70129259">  552</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#aff3fde909d22ed157046682e70129259">OptimizedNetworkImpl::PrintGraph</a>()</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;{</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    m_Graph-&gt;Print();</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;}</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classarmnn_1_1_optimized_network_impl.xhtml#a26794f014974a6f963a8925de07bffeb">  558</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#a26794f014974a6f963a8925de07bffeb">OptimizedNetworkImpl::SerializeToDot</a>(std::ostream&amp; stream)<span class="keyword"> const</span></div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;SerializeToDot(stream);</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;}</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">  563</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(<span class="keyword">const</span> std::string&amp; errorMessage,</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;                 <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errorMessages)</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;{</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;    std::stringstream fullErrorMessage;</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    fullErrorMessage &lt;&lt; <span class="stringliteral">&quot;ERROR: &quot;</span> &lt;&lt; errorMessage;</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>) &lt;&lt; fullErrorMessage.str();</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    <span class="keywordflow">if</span> (errorMessages)</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    {</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        errorMessages.value().push_back(fullErrorMessage.str());</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    }</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;}</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">  575</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(<span class="keyword">const</span> std::string&amp; warningMessage,</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;                   <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; warningMessages)</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;{</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;    std::stringstream fullWarningMessage;</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;    fullWarningMessage &lt;&lt; <span class="stringliteral">&quot;WARNING: &quot;</span> &lt;&lt; warningMessage;</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>) &lt;&lt; fullWarningMessage.str();</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;    <span class="keywordflow">if</span> (warningMessages)</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;    {</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        warningMessages.value().push_back(fullWarningMessage.str());</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    }</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;}</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">  587</a></span>&#160;<a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> <a class="code" href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">ReturnWithError</a>(<a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> res,</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer,</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;                                   <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a>&amp; backendSettings,</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;                                   <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errMessages)</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;{</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    std::stringstream failureMsg;</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    failureMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>())</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;               &lt;&lt; <span class="stringliteral">&quot; is not supported on any preferred backend &quot;</span> &lt;&lt; backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#ae6d0506ac92f9ba9529d019847144aa3">m_PreferredBackends</a>;</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;    res.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;}</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#af002111f64aee648e3258247075cae36">  602</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacearmnn.xhtml#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a>(<a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer, <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errMessages)</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;{</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    <span class="keywordtype">bool</span> noErrors = <span class="keyword">true</span>;</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a1594bddc87d6477df300317658f566bb">GetNumOutputSlots</a>();</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutputs; i++) {</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;        <a class="code" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a>&amp; outputSlot = layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(i);</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;        <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#ada2ad7d1caeeb4ef6195c8925fad6a65">GetTensorInfo</a>();</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> == info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>()) {</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;            <span class="keywordflow">if</span> (0.f == info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>()) {</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;                noErrors = <span class="keyword">false</span>;</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;                std::stringstream ss;</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;                ss &lt;&lt; <span class="stringliteral">&quot;output &quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot; of layer &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>())</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a9a97cb6d32661a57fc33bd29b8e41ff4">GetNameStr</a>() &lt;&lt; <span class="stringliteral">&quot;) is of type&quot;</span></div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; Quantized 8 bit but its scale parameter has not been set&quot;</span>;</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;                <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(ss.str(), errMessages);</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;            }</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;            <span class="comment">// Softmax under QuantisedAsymm8 must always be scale (1.0f/256.0f) and offset 0</span></div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;            <span class="keywordflow">if</span> ((info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>() != (1.0f / 256.0f) ||</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                 info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>() != 0) &amp;&amp;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                 layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a>)</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;            {</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;                std::stringstream ss;</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;                ss &lt;&lt; <span class="stringliteral">&quot;Quantization parameters for Softmax layer (Scale: &quot;</span> &lt;&lt;</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>() &lt;&lt; <span class="stringliteral">&quot; and Offset: &quot;</span> &lt;&lt; info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>() &lt;&lt;</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;                <span class="stringliteral">&quot;) are incorrect and have been updated to Scale: 0.00390625 and Offset: 0&quot;</span>;</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;                <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>) &lt;&lt; ss.str();</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;                info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>((1.0f /256.0f));</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;                info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a63cbc581012c957f9d68d224ddc3e43c">SetQuantizationOffset</a>(0);</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;                outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(info);</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;            }</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        }</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;    }</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;    <span class="keywordflow">return</span> noErrors;</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;}</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> LayerT&gt;</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a33d586a0d9bbb1f12ac7a3ba8d03e21e">  638</a></span>&#160;LayerT* <a class="code" href="namespacearmnn.xhtml#a33d586a0d9bbb1f12ac7a3ba8d03e21e">ConvertBf16ToFp32Weight</a>(<a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* l)</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;{</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;    LayerT* layer = PolymorphicDowncast&lt;LayerT*&gt;(l);</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;    <span class="keywordflow">if</span> ((layer-&gt;GetType() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">LayerType::Convolution2d</a> || layer-&gt;GetType() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">LayerType::FullyConnected</a>)</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;         &amp;&amp; layer-&gt;m_Weight)</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;    {</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;m_Weight-&gt;GetTensorInfo();</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        <span class="keywordflow">if</span> (info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>() == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>)</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;        {</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;            std::vector&lt;float&gt; newValues(info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;            <a class="code" href="classarmnn_utils_1_1_floating_point_converter.xhtml#af9e9df90cb6319b0406acf9a3bc27667">armnnUtils::FloatingPointConverter::ConvertBFloat16ToFloat32</a>(</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;                layer-&gt;m_Weight-&gt;template GetTensor&lt;armnn::BFloat16&gt;(), info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(), newValues.data());</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;            <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> newInfo(info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>);</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;            <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> newInput(newInfo, newValues);</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;            layer-&gt;m_Weight.reset(<span class="keyword">new</span> <a class="code" href="classarmnn_1_1_scoped_cpu_tensor_handle.xhtml">ScopedCpuTensorHandle</a>(newInput));</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;        }</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    }</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;}</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">  661</a></span>&#160;<a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> <a class="code" href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">AttemptBackendAssignment</a>(<a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a>&amp; backendSettings,</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;                                            <a class="code" href="classarmnn_1_1_graph.xhtml">Graph</a>&amp; graph,</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;                                            <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer,</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;                                            <a class="code" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> backend,</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;                                            <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeIn,</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;                                            <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeOut,</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;                                            <span class="keyword">const</span> std::vector&lt;BackendId&gt;&amp; availablePreferredBackends,</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;                                            std::string&amp; reasonIfUnsupported,</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;                                            <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errMessages)</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;{</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> result;</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    <span class="comment">// Helper lambda to compose meaningful error message before returning with error</span></div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;    <span class="keyword">auto</span> ReturnError = [&amp;](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer)</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;        {</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">ReturnWithError</a>(result, layer, backendSettings, errMessages);</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;        };</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;    <span class="comment">// need to set the compute device on the layer</span></div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;    <span class="comment">// before we can check if it is supported</span></div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(backend);</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;    <span class="keywordflow">if</span> (!<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">IWorkloadFactory::IsLayerSupported</a>(*layer, <a class="code" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>(), reasonIfUnsupported))</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;    {</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;        <span class="keywordflow">if</span> (dataTypeIn == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> || dataTypeOut == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>)</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;        {</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">IWorkloadFactory::IsLayerSupported</a>(*layer, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>, reasonIfUnsupported)</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;                &amp;&amp; layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">LayerType::ConvertFp32ToFp16</a></div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                &amp;&amp; layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">LayerType::ConvertFp16ToFp32</a>)</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;            {</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;                <span class="comment">// Insert FP16 -&gt; FP32 conversion layer before current layer</span></div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;                std::vector&lt;ConvertFp16ToFp32Layer*&gt; convertFp16ToFp32Layers;</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;                <span class="keywordflow">if</span> (dataTypeIn == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>)</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;                {</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;                    convertFp16ToFp32Layers =</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;                        <a class="code" href="namespacearmnn.xhtml#ad31c56533e4f9f9f51719599fbfcf7bb">InsertConvertFp16ToFp32LayersBefore</a>(graph, *layer);</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;                }</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;                <span class="comment">// Insert FP32 -&gt; FP16 conversion layer after current layer</span></div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;                std::vector&lt;ConvertFp32ToFp16Layer*&gt; convertFp32ToFp16Layers;</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;                <span class="keywordflow">if</span> (dataTypeOut == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>)</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;                {</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;                    convertFp32ToFp16Layers =</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;                        <a class="code" href="namespacearmnn.xhtml#abf625e50a5eaeafce5b39580dc95a9d3">InsertConvertFp32ToFp16LayersAfter</a>(graph, *layer);</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;                }</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;                <span class="comment">// Assign a supported backend to the newly introduced conversion layers</span></div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;                <span class="keyword">auto</span> AssignFirstSupportedBackend = [&amp;](<a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer, <a class="code" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> preferredBackend)</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;                    {</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;                        <span class="keywordtype">bool</span> supportedBackendFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;                        std::string reasonIfUnsupported;</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;                        <span class="comment">// Try preferred backend first</span></div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;                        layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(preferredBackend);</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">IWorkloadFactory::IsLayerSupported</a>(*layer,</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;                                                               <a class="code" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>(),</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;                                                               reasonIfUnsupported))</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;                        {</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;                            supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;                        }</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;                        <span class="keywordflow">else</span></div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;                        {</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;                            <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;                            {</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;                                <span class="comment">// Skip preferred backend (we already determined that it is not supported)</span></div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;                                <span class="keywordflow">if</span> (backend == preferredBackend)</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;                                {</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;                                    <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;                                }</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;                                layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(backend);</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;                                <span class="keywordflow">if</span> (<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">IWorkloadFactory::IsLayerSupported</a>(*layer,</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;                                                                       <a class="code" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>(),</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;                                                                       reasonIfUnsupported))</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;                                {</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;                                    supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;                                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;                                }</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;                            }</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;                        }</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;                        <span class="keywordflow">return</span> supportedBackendFound;</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;                    };</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a>* convertLayer : convertFp16ToFp32Layers)</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;                {</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;                    <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;                    {</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;                        <span class="keywordflow">return</span> ReturnError(convertLayer);</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;                    }</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;                }</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a>* convertLayer : convertFp32ToFp16Layers)</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;                {</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;                    <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;                    {</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;                        <span class="keywordflow">return</span> ReturnError(convertLayer);</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;                    }</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;                }</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;                <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;            }</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;        }</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dataTypeIn == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a> || dataTypeOut == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>)</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;        {</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">IWorkloadFactory::IsLayerSupported</a>(*layer, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>, reasonIfUnsupported)</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;                &amp;&amp; layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6512859957de2cf2a5fe4dccb07bd9da">LayerType::ConvertFp32ToBf16</a></div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;                &amp;&amp; layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a2ba4c46787312a2467153f40c542851a">LayerType::ConvertBf16ToFp32</a>)</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;            {</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;                <span class="comment">// Insert BF16 -&gt; FP32 conversion layer before current layer</span></div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;                std::vector&lt;ConvertBf16ToFp32Layer*&gt; convertBf16ToFp32Layers;</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;                <span class="keywordflow">if</span> (dataTypeIn == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>)</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;                {</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;                    convertBf16ToFp32Layers =</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;                        <a class="code" href="namespacearmnn.xhtml#adf69fa0e439ddb632462b42253d67b6a">InsertConvertBf16ToFp32LayersBefore</a>(graph, *layer);</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;                    <span class="keywordflow">if</span> (layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">LayerType::Convolution2d</a>)</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;                    {</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;                        ConvertBf16ToFp32Weight&lt;Convolution2dLayer&gt;(layer);</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;                    }</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">LayerType::FullyConnected</a>)</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;                    {</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;                        ConvertBf16ToFp32Weight&lt;FullyConnectedLayer&gt;(layer);</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;                    }</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;                }</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;                <span class="comment">// Insert FP32 -&gt; BF16 conversion layer after current layer</span></div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;                std::vector&lt;ConvertFp32ToBf16Layer*&gt; convertFp32ToBf16Layers;</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;                <span class="keywordflow">if</span> (dataTypeOut == <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>)</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;                {</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;                    convertFp32ToBf16Layers =</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;                        <a class="code" href="namespacearmnn.xhtml#a8ae358a041b4adc33577e8b4c07b8d23">InsertConvertFp32ToBf16LayersAfter</a>(graph, *layer);</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;                }</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;                <span class="comment">// Assign a supported backend to the newly introduced conversion layers</span></div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;                <span class="keyword">auto</span> AssignFirstSupportedBackend = [&amp;](<a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer, <a class="code" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> preferredBackend)</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;                    {</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;                        <span class="keywordtype">bool</span> supportedBackendFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;                        std::string reasonIfUnsupported;</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;                        <span class="comment">// Try preferred backend first</span></div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;                        layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(preferredBackend);</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">IWorkloadFactory::IsLayerSupported</a>(*layer,</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;                                                               <a class="code" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>(),</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;                                                               reasonIfUnsupported))</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;                        {</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;                            supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;                        }</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;                        <span class="keywordflow">else</span></div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;                        {</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;                            <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;                            {</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;                                <span class="comment">// Skip preferred backend (we already determined that it is not supported)</span></div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;                                <span class="keywordflow">if</span> (backend == preferredBackend)</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;                                {</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;                                    <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;                                }</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;                                layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(backend);</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;                                <span class="keywordflow">if</span> (<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">IWorkloadFactory::IsLayerSupported</a>(*layer,</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;                                                                       <a class="code" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>(),</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;                                                                       reasonIfUnsupported))</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;                                {</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;                                    supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;                                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;                                }</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;                            }</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;                        }</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;                        <span class="keywordflow">return</span> supportedBackendFound;</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;                    };</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_convert_bf16_to_fp32_layer.xhtml">ConvertBf16ToFp32Layer</a>* convertLayer : convertBf16ToFp32Layers)</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;                {</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;                    <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;                    {</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;                        <span class="keywordflow">return</span> ReturnError(convertLayer);</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;                    }</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;                }</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;                <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_convert_fp32_to_bf16_layer.xhtml">ConvertFp32ToBf16Layer</a>* convertLayer : convertFp32ToBf16Layers)</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;                {</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;                    <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                    {</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;                        <span class="keywordflow">return</span> ReturnError(convertLayer);</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;                    }</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;                }</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;                <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;            }</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;        }</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        std::stringstream warningMsg;</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;        warningMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#addb6b14dd1b632263ffe77430259a7c4">GetLayerTypeAsCString</a>(layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>())</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; is not supported on requested backend &quot;</span> &lt;&lt; layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>().<a class="code" href="classarmnn_1_1_backend_id.xhtml#af7445617163d3f07c47b92ae56c6cf8b">Get</a>()</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; for input data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeIn)</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; and output data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeOut)</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; (reason: &quot;</span> &lt;&lt; reasonIfUnsupported</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot;), falling back to the next backend.&quot;</span>;</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;        <a class="code" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>(<span class="keyword">true</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;    }</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;    {</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;    }</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;}</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">  869</a></span>&#160;<a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> <a class="code" href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">AssignBackends</a>(<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a>* optNetObjPtr,</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;                                  <a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a>&amp; backendSettings,</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;                                  <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a>&amp; firstLayer,</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;                                  <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a>&amp; lastLayer,</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;                                  <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errMessages)</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;{</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> result;</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;    <span class="comment">// Helper lambda to compose meaningful error message before returning with error</span></div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;    <span class="keyword">auto</span> ReturnError = [&amp;](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer)</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;        {</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">ReturnWithError</a>(result, layer, backendSettings, errMessages);</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;        };</div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;    <span class="keyword">auto</span> availablePreferredBackends = backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#ad4ca579528452c669b45f3f35300fd4e">GetAvailablePreferredBackends</a>();</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;    <span class="keywordflow">if</span> (availablePreferredBackends.empty())</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;    {</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;        std::stringstream failureMsg;</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;        failureMsg &lt;&lt; <span class="stringliteral">&quot;No preferred backends are available&quot;</span>;</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;        <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;        result.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;    }</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = firstLayer; it != lastLayer; ++it)</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;    {</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;        <span class="keyword">auto</span> layer = *it;</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;        <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeIn  = layer-&gt;GetNumInputSlots() == 0 ? <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> :</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;            layer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo().GetDataType();</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;        <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeOut = layer-&gt;GetNumOutputSlots() == 0 ? <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> :</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;            layer-&gt;GetOutputSlot(0).GetTensorInfo().GetDataType();</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        std::string reasonIfUnsupported;</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        <span class="keywordflow">if</span> (!<a class="code" href="namespacearmnn.xhtml#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a>(layer, errMessages))</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        {</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;            <span class="comment">// don&#39;t bomb immediately, find all the quantized outputs</span></div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;            <span class="comment">// which haven&#39;t had a scale set and report them all back.</span></div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;            result.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;        }</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;        <span class="comment">// First try assign layer to hint backend</span></div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;        <span class="keywordflow">if</span> (layer-&gt;GetBackendHint().has_value() &amp;&amp;</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;            backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#aa5df3120ee0fbb3321df3133ec9e83ae">IsBackendSupported</a>(layer-&gt;GetBackendHint().value()) &amp;&amp;</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;            <a class="code" href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">AttemptBackendAssignment</a>(backendSettings,</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;                                     optNetObjPtr-&gt;<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#a49800ad35ea869aa5569519760d3b339">GetGraph</a>(),</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;                                     layer,</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;                                     layer-&gt;GetBackendHint().value(),</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;                                     dataTypeIn,</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;                                     dataTypeOut,</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;                                     availablePreferredBackends,</div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;                                     reasonIfUnsupported,</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;                                     errMessages).IsOk())</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;        {</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;            found = <span class="keyword">true</span>;</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;            backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#aa09ac75b83067c5ed455f2bb35c7c98d">m_SelectedBackends</a>.insert(layer-&gt;GetBackendHint().value());</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;        }</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;        {</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;            <span class="comment">// Try assign layer to prefered list of backends</span></div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;            {</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;                <span class="keywordflow">if</span> (layer-&gt;GetBackendHint().has_value() &amp;&amp;</div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;                    layer-&gt;GetBackendHint().value() == backend)</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;                {</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;                    <span class="keywordflow">continue</span>; <span class="comment">//Don&#39;t re-test the backend hint</span></div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;                }</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;                <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> res = <a class="code" href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">AttemptBackendAssignment</a>(backendSettings,</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                                                                  optNetObjPtr-&gt;<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#a49800ad35ea869aa5569519760d3b339">GetGraph</a>(),</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;                                                                  layer,</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;                                                                  backend,</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;                                                                  dataTypeIn,</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;                                                                  dataTypeOut,</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;                                                                  availablePreferredBackends,</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;                                                                  reasonIfUnsupported,</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;                                                                  errMessages);</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;                <span class="keywordflow">if</span> (res.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a955b65059e7f9429a5d6041136bc1487">IsOk</a>())</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;                {</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;                    found = <span class="keyword">true</span>;</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;                    backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#aa09ac75b83067c5ed455f2bb35c7c98d">m_SelectedBackends</a>.insert(backend);</div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;                }</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (res.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#aca1654c65182fe4e7d5fd45f556fcd57">IsError</a>())</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;                {</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;                   <span class="keywordflow">return</span> res;  <span class="comment">// Cannot continue.</span></div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;                   <span class="comment">// Note: we don&#39;t need to log the error as it would already</span></div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;                   <span class="comment">// be logged in AttemptBackendAssignment().</span></div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;                }</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;                {</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;                    <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(res.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a2a35773a5a0e08b180a12205c3e15500">IsWarningOnly</a>(), <span class="stringliteral">&quot;OptimizationResult in unexpected state.&quot;</span>);</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;                }</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;            }</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;        }</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;        <span class="comment">// If the layer is unsupported by any devices, log and return a null network.</span></div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;        <span class="keywordflow">if</span> (!found)</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;        {</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;            <span class="comment">// NOTE: if the layer is not an operation queue type AND we have not got CpuRef as a</span></div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;            <span class="comment">//       fallback we should set the compute device on the layer to CpuRef (these are not</span></div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;            <span class="comment">//       available as accelerated operations, or are only available under certain</span></div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;            <span class="comment">//       conditions, currently they comprise MemCopy, Constant, Permute)</span></div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;            <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a> layerType = layer-&gt;GetType();</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;            <span class="keywordflow">if</span> (!backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#ae4f9f2c5e3b5cf694315f66cde5b33f0">IsCpuRefUsed</a>() &amp;&amp; (layerType == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a> ||</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;                                                    layerType == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a> ||</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;                                                    layerType == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a>))</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;            {</div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;                <a class="code" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> cpuBackendId(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;                layer-&gt;SetBackendId(cpuBackendId);</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;                backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#aa09ac75b83067c5ed455f2bb35c7c98d">m_SelectedBackends</a>.insert(cpuBackendId);</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;            }</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;            {</div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;                <span class="keywordflow">return</span> ReturnError(layer);</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;            }</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;        }</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;    }</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;}</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;</div><div class="line"><a name="l00995"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a48e4d70ae8893f6f1a8ebfced5b03a07">  995</a></span>&#160;<a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> <a class="code" href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">AssignBackends</a>(<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a>* optNetObjPtr,</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;                                  <a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a>&amp; backendSettings,</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;                                  <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a>&amp; subgraph,</div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;                                  <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errMessages)</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;{</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> firstLayer = subgraph.<a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a2fc512b3ddb7bb2cdf02f44038ca2500">begin</a>();</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> lastLayer  = subgraph.<a class="code" href="classarmnn_1_1_subgraph_view.xhtml#aaf68d7cca5c48a7f3d398452a5244667">end</a>();</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;                          backendSettings,</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;                          firstLayer,</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;                          lastLayer,</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;                          errMessages);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;}</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5"> 1009</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> <a class="code" href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a>(<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a>&amp; handleFactoryRegistry,</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;                                    <a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a>&amp; backendSettings)</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;{</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;    <span class="keyword">auto</span> <span class="keyword">const</span>&amp; backendRegistry = <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>();</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#a0b160952af61b24d88125d66ed6d43c1">m_SupportedBackends</a>)</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;    {</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;        <span class="keyword">auto</span> backendFactory = backendRegistry.GetFactory(selectedBackend);</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;        <span class="keyword">auto</span> backendObjPtr = backendFactory();</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;        <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(backendObjPtr);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;        backendObjPtr-&gt;RegisterTensorHandleFactories(handleFactoryRegistry);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;        backends[backendObjPtr-&gt;GetId()] = std::move(backendObjPtr);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;    }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;    <span class="keywordflow">return</span> backends;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;}</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;</div><div class="line"><a name="l01028"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a9f31d956861d8277fa5f8fb877dbbb6c"> 1028</a></span>&#160;<a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> <a class="code" href="namespacearmnn.xhtml#a9f31d956861d8277fa5f8fb877dbbb6c">ApplyBackendOptimizations</a>(<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml">OptimizedNetworkImpl</a>* optNetObjPtr,</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;                                             <a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a>&amp; backendSettings,</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;                                             <a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&amp; backends,</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;                                             <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a>&amp; modelOptions,</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;                                             <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errMessages)</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;{</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(optNetObjPtr);</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> result;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;    <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">Graph</a>&amp; optGraph = optNetObjPtr-&gt;<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#a49800ad35ea869aa5569519760d3b339">GetGraph</a>();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;    <span class="comment">// Run backend specific optimizations</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#aa09ac75b83067c5ed455f2bb35c7c98d">m_SelectedBackends</a>)</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    {</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;        <span class="keyword">auto</span> backendObjPtr = backends.find(selectedBackend)-&gt;second.get();</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;        <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(backendObjPtr);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;        <span class="comment">// Select sub-graphs based on backend</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;        <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#aaf71a63dbbc776f8961b0f4fdb9da021">SubgraphViewSelector::Subgraphs</a> subgraphs =</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;                <a class="code" href="classarmnn_1_1_subgraph_view_selector.xhtml#a3730b0a6006f0d87f894a44e01869d90">SubgraphViewSelector::SelectSubgraphs</a>(optGraph,</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;                                                      <span class="comment">// Select layers assigned to the requested backend</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;                                                      [&amp;backendObjPtr](<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; layer)</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;                                                      {</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;                                                          <span class="keywordflow">return</span> layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">LayerType::Input</a> &amp;&amp;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;                                                                 layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() != <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">LayerType::Output</a> &amp;&amp;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;                                                                 layer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>() == backendObjPtr-&gt;GetId();</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;                                                      });</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;        <span class="keywordflow">if</span> (subgraphs.empty())</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;        {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;            <span class="comment">// No sub-graphs found, try with next selected backend</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;            <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;        }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;        <span class="comment">// Try to optimize each sub-graph</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; subgraph : subgraphs)</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;        {</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;            <span class="comment">// Try to optimize the current sub-graph</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;            <a class="code" href="classarmnn_1_1_optimization_views.xhtml">OptimizationViews</a> optimizationViews = backendObjPtr-&gt;OptimizeSubgraphView(*subgraph, modelOptions);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#a58dc3ea86870112f745b2a1f7dca55e9">Validate</a>(*subgraph));</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;            <span class="comment">// Optimization attempted, check the resulting optimized sub-graph</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; substitution : optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#a9a1555f25af4a0ae2c0a1fc0ed9aded8">GetSubstitutions</a>())</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;            {</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;                <span class="comment">// Sub-graph optimized, substitute the sub-graph with the new optimized one in the main optimized graph</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;                <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a>&amp; replacementSubgraph   = substitution.m_ReplacementSubgraph;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;                <a class="code" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a>&amp; substitutableSubgraph = substitution.m_SubstitutableSubgraph;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;                optGraph.<a class="code" href="classarmnn_1_1_graph.xhtml#aafbd4b469e47160017f409df8d077184">SubstituteSubgraph</a>(substitutableSubgraph, replacementSubgraph);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;                <span class="comment">// Assign the current backend to the optimized sub-graph</span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;                std::for_each(replacementSubgraph.<a class="code" href="classarmnn_1_1_subgraph_view.xhtml#a2fc512b3ddb7bb2cdf02f44038ca2500">begin</a>(), replacementSubgraph.<a class="code" href="classarmnn_1_1_subgraph_view.xhtml#aaf68d7cca5c48a7f3d398452a5244667">end</a>(), [&amp;selectedBackend](<a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* l)</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;                    {</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;                        <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(l);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;                        l-&gt;SetBackendId(selectedBackend);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;                    });</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;            }</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;            <span class="keywordflow">if</span> (!optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#ad5fee4381bf82ffa37658dddf4d1fa01">GetFailedSubgraphs</a>().empty())</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;            {</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;                std::stringstream warningMsg;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;                warningMsg &lt;&lt; <span class="stringliteral">&quot;Some sub-graph(s) failed to optimized on &quot;</span> &lt;&lt; backendObjPtr-&gt;GetId() &lt;&lt; <span class="stringliteral">&quot; backend.&quot;</span>;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;                <a class="code" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;                <span class="comment">// Failed to optimize the given sub-graph, re-assign the sub-graph layers to other available backends</span></div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;                <a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> settingsCopy(backendSettings);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;                <span class="keywordflow">if</span> (!backendObjPtr-&gt;GetId().IsCpuRef())</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;                {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;                    <span class="comment">// Add the current backend to the list of backends to ignore</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;                    settingsCopy.m_IgnoredBackends.insert(backendObjPtr-&gt;GetId());</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;                }</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;                <span class="keywordtype">int</span> count=0;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;                <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; failedSubgraph : optimizationViews.<a class="code" href="classarmnn_1_1_optimization_views.xhtml#ad5fee4381bf82ffa37658dddf4d1fa01">GetFailedSubgraphs</a>())</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;                {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;                    <span class="comment">// An error occurred: the optimization was attempted but not performed, try different backends</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;                    std::stringstream subgraphMsg;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;                    subgraphMsg &lt;&lt; <span class="stringliteral">&quot;Re-assigning backends to &quot;</span> &lt;&lt; failedSubgraph.GetLayers().size()</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;                                &lt;&lt; <span class="stringliteral">&quot; layers inside sub-graph &quot;</span> &lt;&lt; count++;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;                    <a class="code" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(subgraphMsg.str(), errMessages);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;                    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> reassignmentResult = <a class="code" href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;                                                                           settingsCopy,</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;                                                                           *subgraph,</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;                                                                           errMessages);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;                    <span class="keywordflow">if</span> (reassignmentResult.m_Error)</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;                    {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;                        <span class="comment">// Failed to re-assign one of the remaining backends to each layer of the sub-graph</span></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;                        result.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;                        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;                    }</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;                }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;            }</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;        }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;    }</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;}</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div><div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a5ee4a1cca55f69b31e625c786655ed1a"> 1127</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacearmnn.xhtml#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a>(<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> src,</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;                  <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> dst,</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;                  <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a>&amp; registry)</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;{</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;    <span class="keywordflow">if</span> (src != dst)</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;    {</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;        <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a>* srcFactory = registry.<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">GetFactory</a>(src);</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;        <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a>* dstFactory = registry.<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">GetFactory</a>(dst);</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;        <span class="keywordflow">if</span> (srcFactory &amp;&amp; dstFactory &amp;&amp;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;            (srcFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9892b82652ffac03f1e4e7ad93906078">GetExportFlags</a>() &amp; dstFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ab17a7eb3afac8667ace153b0fe2f82fe">GetImportFlags</a>()) != 0)</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;        {</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;        }</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;    }</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;}</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment">// Find the handle factory for the input layer which results in fewest required copies.</span></div><div class="line"><a name="l01147"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#accb1637c58e1523f740025e0d0e7c6dd"> 1147</a></span>&#160;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> <a class="code" href="namespacearmnn.xhtml#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a>(<a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&amp; backends,</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;                                                            <a class="code" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a>&amp; slot,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;                                                            <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a>&amp; registry)</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;{</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; layer = slot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7ddaf04177053a536f0e7be83a642bc6">GetOwningLayer</a>();</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(layer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">LayerType::Input</a>);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;    <span class="comment">// Explicitly select the tensorhandle factory for InputLayer because the rules for it are slightly different. It</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;    <span class="comment">// doesn&#39;t matter which backend it is assigned to because they all use the same implementation, which</span></div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;    <span class="comment">// requires Map/Unmap support. This means that, so long as the handle type supports map/unmap semantics, we can</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;    <span class="comment">// select a factory with maximum compatibility with the layers connected to the InputLayer.</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;    <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;    <span class="keyword">auto</span> frmBackend = backends.find(layer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>());</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;    <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;        !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;    {</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;    }</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;    <span class="comment">// Go through all connections to the output slot and determine the TensorHandleFactory which results in the</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;    <span class="comment">// fewest copies.</span></div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;    std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;    <span class="keywordtype">int</span> topScore = 0;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;    <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> topChoice = <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : slot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a50b562d4a4edc64d7d8abcca056f0b8c">GetConnections</a>())</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;    {</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;        <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>());</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;        <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;        <span class="keywordflow">if</span> (!toBackend-&gt;second.get()-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;        {</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;            <span class="comment">// The destination backend does not support the tensor allocator API, move to the next one</span></div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;            <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;        }</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;        <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;        {</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;            <span class="comment">// Input layers use the mem copy workload or import, so the selected factory must</span></div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;            <span class="comment">// support either the map/unmap API or Import API</span></div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;            <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a>* factory = registry.<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">GetFactory</a>(dst);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;            <span class="keywordflow">if</span> (!factory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#aa262a54803b53b8198cd60e7af2f60e4">SupportsMapUnmap</a>() &amp;&amp;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;                !<a class="code" href="namespacearmnn.xhtml#a84f86b4de5adf0b164e811c87051a0ee">CheckFlag</a>(factory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ab17a7eb3afac8667ace153b0fe2f82fe">GetImportFlags</a>(), <a class="code" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">MemorySource::Malloc</a>)) <span class="comment">// Just support cpu mem imports for now</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;            {</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;                <span class="comment">// The current tensor handle factory does not support the map/unmap or import</span></div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;                <span class="comment">// strategy, move to the next one</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;            }</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;            <span class="keyword">auto</span> it = factoryScores.find(dst);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;            <span class="keywordflow">if</span> (it == factoryScores.end())</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;            {</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;                <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;                factoryScores[dst] = 0;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;                <span class="keywordflow">if</span> (topChoice == <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>)</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;                {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;                    topChoice = dst;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;                }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;            }</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;            {</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;                <span class="comment">// Increase the score</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;                factoryScores[dst]++;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;                <span class="comment">// Track the best option</span></div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;                <span class="keywordflow">if</span> (factoryScores[dst] &gt; topScore)</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;                {</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;                    topScore = factoryScores[dst];</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;                    topChoice = dst;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;                }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;            }</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;        }</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;    }</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;    <span class="keywordflow">return</span> topChoice;</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;}</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment">// Find the handle factory for the output layer which results in fewest required copies.</span></div><div class="line"><a name="l01229"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#ab46c7f5f4736d550ab0e5e05a0fff4a9"> 1229</a></span>&#160;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> <a class="code" href="namespacearmnn.xhtml#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a>(<a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&amp; backends,</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;                                                            <a class="code" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a>&amp; slot,</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;                                                            <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a>&amp; registry)</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;{</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(backends, slot, registry);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043d9a6e3f861fc6aa057ff95e56f18">ITensorHandleFactory::DeferredFactoryId</a>;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;}</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="comment">// For all handle factories supported on the source backend, we wish to find the one which requires the fewest copies</span></div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;<span class="comment">// when considering all connections.</span></div><div class="line"><a name="l01239"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a8d9f52bbb69750456acca06988beabda"> 1239</a></span>&#160;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> <a class="code" href="namespacearmnn.xhtml#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a>(<a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&amp; backends,</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;                                                    <a class="code" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a>&amp; outputSlot,</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;                                                    <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a>&amp; registry)</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;{</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;    <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; layer = outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7ddaf04177053a536f0e7be83a642bc6">GetOwningLayer</a>();</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;    <span class="keyword">auto</span> frmBackend = backends.find(layer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>());</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;    <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;        !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;    {</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;    }</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;    <span class="comment">// Connections to Output Layers requires support for map/unmap on the TensorHandle.</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;    <span class="keywordtype">bool</span> requiresMapUnmap = <span class="keyword">false</span>;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a50b562d4a4edc64d7d8abcca056f0b8c">GetConnections</a>())</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;    {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;        <span class="keywordflow">if</span> (connectedLayer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">LayerType::Output</a>)</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;        {</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;            requiresMapUnmap = <span class="keyword">true</span>;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;        }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;    }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;    <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml">IBackendInternal</a>* srcBackend = frmBackend-&gt;second.get();</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;    <span class="keyword">auto</span> srcPrefs = srcBackend-&gt;<a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#ac5d107c5672f446603b6e6b92bce6244">GetHandleFactoryPreferences</a>();</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;    <span class="comment">// Initialize the scores</span></div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;    std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : srcPrefs)</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;    {</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;        <span class="keywordflow">if</span> (requiresMapUnmap) <span class="comment">// Only consider factories that support map/unmap if required</span></div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;        {</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;            <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a>* factory = registry.<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">GetFactory</a>(pref);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;            <span class="keywordflow">if</span> (!factory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#aa262a54803b53b8198cd60e7af2f60e4">SupportsMapUnmap</a>())</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;            {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;                <span class="comment">// The current tensor handle factory does not support the map/unmap strategy, move to the next one</span></div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;            }</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;        }</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;        <span class="keyword">auto</span> it = factoryScores.find(pref);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;        <span class="keywordflow">if</span> (it == factoryScores.end())</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;        {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;            <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;            factoryScores[pref] = 0;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;        }</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;    }</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;    <span class="comment">// Score each handle factory based on how many times it requires copies on the slot connections</span></div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a50b562d4a4edc64d7d8abcca056f0b8c">GetConnections</a>())</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;    {</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;        <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>());</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;        <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;        <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; src : srcPrefs)</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;        {</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;            <span class="keywordflow">if</span> (factoryScores.find(src) == factoryScores.end()) <span class="comment">// Don&#39;t consider excluded factories</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;            {</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;            }</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;            {</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a>(src, dst, registry))</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;                {</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;                    <span class="comment">// Copy avoided, increase the score</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;                    factoryScores[src]++;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;                }</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;            }</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;        }</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;    }</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;    <span class="comment">// Find the lowest score</span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;    <span class="keywordtype">int</span> minScore = std::numeric_limits&lt;int&gt;::max();</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;    {</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;        minScore = std::min(minScore, it.second);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;    }</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;    <span class="comment">// Collect factories matching the best(lowest) score</span></div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;    std::vector&lt;ITensorHandleFactory::FactoryId&gt; optimalFactories;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;    {</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;        <span class="keywordflow">if</span> (it.second == minScore)</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;        {</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;            optimalFactories.push_back(it.first);</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;        }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;    }</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;    <span class="comment">// For all compatible Factories matching the best score, find the preferred one for the current layer.</span></div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; srcPref : srcPrefs)</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;    {</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; comp : optimalFactories)</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;        {</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;            <span class="keywordflow">if</span> (comp == srcPref)</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;            {</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;                <span class="keywordflow">return</span> comp;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;            }</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;        }</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;    }</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>;</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;}</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;</div><div class="line"><a name="l01348"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a738d3243c1dc564304d78908c6112e4f"> 1348</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> <a class="code" href="namespacearmnn.xhtml#a738d3243c1dc564304d78908c6112e4f">CalculateEdgeStrategy</a>(<a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&amp; backends,</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;                                   <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> srcFactoryId,</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; layer,</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; connectedLayer,</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;                                   <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a>&amp; registry,</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;                                   <span class="keywordtype">bool</span> importEnabled)</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;{</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;    <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>());</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;    <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;    <span class="comment">// Legacy API check for backward compatibility</span></div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;    <span class="keywordflow">if</span> (srcFactoryId == <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a> || dstPrefs.empty())</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;    {</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;        <span class="keywordflow">if</span> (layer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>() != connectedLayer.<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>())</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;        {</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">EdgeStrategy::CopyToTarget</a>;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;        }</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;        {</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">EdgeStrategy::DirectCompatibility</a>;</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;        }</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;    }</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;    <span class="comment">// TensorHandleFactory API present, so perform more sophisticated strategies.</span></div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;    <span class="comment">// Dst Output layers don&#39;t require copy because they use import or map/unmap</span></div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;    <span class="keywordflow">if</span> (connectedLayer.<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">LayerType::Output</a>)</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;    {</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">EdgeStrategy::DirectCompatibility</a>;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;    }</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;    <span class="comment">// Search for direct match in prefs</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;    {</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;        <span class="keywordflow">if</span> (pref == srcFactoryId)</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;        {</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">EdgeStrategy::DirectCompatibility</a>;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;        }</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;    }</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;    <span class="comment">// Search for export/import options</span></div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;    <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a>* srcFactory = registry.<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">GetFactory</a>(srcFactoryId);</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;    <span class="keywordflow">if</span> (srcFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9892b82652ffac03f1e4e7ad93906078">GetExportFlags</a>() != 0 &amp;&amp; importEnabled)</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;    {</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;        {</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;            <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a>* dstFactory = registry.<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">GetFactory</a>(pref);</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;            <span class="comment">// Handles cases when a destPref is not listed in TensorHandleFactoryRegistry</span></div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;            <span class="keywordflow">if</span> (!dstFactory) {</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;            }</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;            <span class="keywordflow">if</span> ((dstFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ab17a7eb3afac8667ace153b0fe2f82fe">GetImportFlags</a>() &amp; srcFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9892b82652ffac03f1e4e7ad93906078">GetExportFlags</a>()) != 0)</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;            {</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;                <span class="keyword">auto</span> srcCapability = srcFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a73fbbe9df988c8cabddea04a8dcb9323">GetCapabilities</a>(&amp;layer, &amp;layer, <a class="code" href="namespacearmnn.xhtml#a10c50bc964cc8cc559eebcd7df5a8af3aa47abd1077ef632a38ada05b6edbf389">CapabilityClass::PaddingRequired</a>);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;                <span class="keyword">auto</span> dstCapability = dstFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a73fbbe9df988c8cabddea04a8dcb9323">GetCapabilities</a>(&amp;connectedLayer,</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;                                                                 &amp;connectedLayer,</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;                                                                 <a class="code" href="namespacearmnn.xhtml#a10c50bc964cc8cc559eebcd7df5a8af3aa47abd1077ef632a38ada05b6edbf389">CapabilityClass::PaddingRequired</a>);</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;                <span class="comment">// Do not require memory copy if the source and destination do not require padding.</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;                <span class="keywordflow">if</span> (srcCapability.empty() &amp;&amp; dstCapability.empty())</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;                {</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;                    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">EdgeStrategy::ExportToTarget</a>;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;                }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;            }</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;        }</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;    }</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;    <span class="comment">// Search for copy options via map/unmap</span></div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;    <span class="keywordflow">if</span> (srcFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#aa262a54803b53b8198cd60e7af2f60e4">SupportsMapUnmap</a>())</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;    {</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;        {</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;            <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a>* dstFactory = registry.<a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">GetFactory</a>(pref);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;            <span class="keywordflow">if</span> (dstFactory &amp;&amp; dstFactory-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#aa262a54803b53b8198cd60e7af2f60e4">SupportsMapUnmap</a>())</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;            {</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;                <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">EdgeStrategy::CopyToTarget</a>;</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;            }</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;        }</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;    }</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">EdgeStrategy::Undefined</a>;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment">// Select the TensorHandleFactories and the corresponding memory strategy</span></div><div class="line"><a name="l01434"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a86541d11fcad5246a78cbc21d637a504"> 1434</a></span>&#160;<a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> <a class="code" href="namespacearmnn.xhtml#a86541d11fcad5246a78cbc21d637a504">SelectTensorHandleStrategy</a>(<a class="code" href="classarmnn_1_1_graph.xhtml">Graph</a>&amp; optGraph,</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;                                              <a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&amp; backends,</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;                                              <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a>&amp; registry,</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;                                              <span class="keywordtype">bool</span> importEnabled,</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;                                              <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; errMessages)</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;{</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> result;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;    optGraph.<a class="code" href="classarmnn_1_1_graph.xhtml#ad6521013ad981519904822f2ada2c4ec">ForEachLayer</a>([&amp;backends, &amp;registry, &amp;result, &amp;errMessages, importEnabled](<a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* layer)</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;    {</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;        <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(layer);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;        <span class="comment">// Lets make sure the backend is in our list of supported backends. Something went wrong during backend</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;        <span class="comment">// assignment if this check fails</span></div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;        <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(backends.find(layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>()) != backends.end());</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;        <span class="comment">// Check each output separately</span></div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> slotIdx = 0; slotIdx &lt; layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a1594bddc87d6477df300317658f566bb">GetNumOutputSlots</a>(); slotIdx++)</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;        {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;            <a class="code" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a>&amp; outputSlot = layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(slotIdx);</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;            <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> slotOption = <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">ITensorHandleFactory::LegacyFactoryId</a>;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;            <span class="comment">// Calculate the factory to use which results in the fewest copies being made.</span></div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;            <span class="keywordflow">switch</span>(layer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">GetType</a>())</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;            {</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">LayerType::Input</a>:</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;                    slotOption = <a class="code" href="namespacearmnn.xhtml#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">LayerType::Output</a>:</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;                    slotOption = <a class="code" href="namespacearmnn.xhtml#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;                <span class="keywordflow">default</span>:</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;                    slotOption = <a class="code" href="namespacearmnn.xhtml#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a>(backends, outputSlot, registry);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;            }</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;            outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#af29f6883785691ef946d0c32b6d2f338">SetTensorHandleFactory</a>(slotOption);</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;            <span class="comment">// Now determine the &quot;best&quot; edge strategy for each connection given the slotOption.</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> connectionIdx = 0;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a50b562d4a4edc64d7d8abcca056f0b8c">GetConnections</a>())</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;            {</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;                <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;                <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy = <a class="code" href="namespacearmnn.xhtml#a738d3243c1dc564304d78908c6112e4f">CalculateEdgeStrategy</a>(backends, slotOption, *layer, connectedLayer,</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;                                                              registry, importEnabled);</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;                <span class="keywordflow">if</span> (strategy == <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">EdgeStrategy::Undefined</a>)</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;                {</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;                    result.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;                    <span class="keywordflow">if</span> (errMessages)</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;                    {</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;                        errMessages.value().emplace_back(<span class="stringliteral">&quot;Could not find valid strategy required for compatibility&quot;</span></div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;                                                         <span class="stringliteral">&quot; between backends.&quot;</span>);</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;                    }</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;                    <span class="keywordflow">return</span>;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;                }</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;                outputSlot.<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(connectionIdx, strategy);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;                connectionIdx++;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;            }</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;        }</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;    });</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;}</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;</div><div class="line"><a name="l01502"></a><span class="lineno"><a class="line" href="namespacearmnn.xhtml#a82e98ef05fd67036d1195ba17174d685"> 1502</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a22df7404d1196068ad18d0286f9b9425">Optimize</a>(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_network.xhtml">INetwork</a>&amp; inNetwork,</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;                              <span class="keyword">const</span> std::vector&lt;BackendId&gt;&amp; backendPreferences,</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;                              <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a>&amp; deviceSpec,</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;                              <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a>&amp; options,</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;                              <a class="code" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;std::vector&lt;std::string&gt;&amp;&gt; messages)</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;{</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;    <span class="keywordflow">if</span> (backendPreferences.empty())</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;    {</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;Invoked Optimize with no backends specified&quot;</span>);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;    }</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;    <span class="keywordflow">if</span> (options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a6e1a42622ca43dafc7ba8e684c016eb4">m_ReduceFp32ToFp16</a> &amp;&amp; options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a11f463726addcc1d2845266997d79e9c">m_ReduceFp32ToBf16</a>)</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;    {</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;BFloat16 and Float16 optimization cannot be enabled at the same time.&quot;</span>);</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;    }</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;    std::unique_ptr&lt;Graph&gt; graph = std::make_unique&lt;Graph&gt;(inNetwork.<a class="code" href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">pNetworkImpl</a>-&gt;GetGraph());</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;    <span class="keyword">auto</span> optNet = <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">new</span> <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#af730a6ec3deb072dc2687089f3f77f9e">IOptimizedNetwork</a>(std::move(graph), options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a71194277c60153a5f86539f5d39f01db">m_ModelOptions</a>),</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;                                       &amp;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">IOptimizedNetwork::Destroy</a>);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;    <a class="code" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>* optNetObjPtr = optNet.get();</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;    <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">Graph</a>&amp; optGraph = optNetObjPtr-&gt;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;GetGraph();</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;    <span class="comment">// Perform AddBroadcastReshapeLayer optimisation</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;    <span class="keyword">using namespace </span>optimizations;</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;    <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a4fc55afb4885278ad1510b2c4307af76">AddBroadcastReshapeLayer</a>()));</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;    <span class="comment">// Infer the tensor infos for all output slots. Throws an exception on failure</span></div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;    optGraph.<a class="code" href="classarmnn_1_1_graph.xhtml#a2ceda8d369e861997d558fac74d79c33">InferTensorInfos</a>();</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;    <span class="comment">// Perform optimisation passes</span></div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;    <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a64ddffb38fbe5b78ec92b753cd4bd0ba">SquashEqualPermuteSiblings</a>(),</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aba7b0ca6192b8b58ecd517a82b4f378e">SquashEqualTransposeSiblings</a>(),</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a29f8d97b2d74f99c88298881cd1d825b">SquashEqualReshapeSiblings</a>(),</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa31127c77d2117f78d43ca2958dcae19">OptimizeInversePermutes</a>(),</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a2f9d1a13be2ac1c4213729a0ef181fc0">OptimizeInverseTransposes</a>(),</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aafc70d5af99400ff5ea7991825658b2f">MovePermuteUp</a>(),</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a5918588fa316cf4c23f1cf02c81ee706">MoveTransposeUp</a>(),</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ae0b1382e3af141896a46531c50e8863f">PermuteAsReshape</a>(),</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ad1aaeee71293f34d9f65d2dd2792830d">TransposeAsReshape</a>(),</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a8341ca3512ebafb19d60eba44d40d9e4">OptimizeConsecutiveReshapes</a>(),</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#add2180a15cdcf5a229de32bb956cb224">FoldPadIntoConvolution2d</a>(),</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a17d1279f5f8e3b92c328b1ed3b6fd549">PermuteAndBatchToSpaceAsDepthToSpace</a>(),</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a98f54d4391347d517c7a7869e7707203">TransposeAndBatchToSpaceAsDepthToSpace</a>(),</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa52c06792e18dc13030e82476f706f9e">FuseBatchNormIntoConvolution2DFloat32</a>(),</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a8a81178ddcebb93ec0c35b6e6284273c">FuseBatchNormIntoConvolution2DFloat16</a>(),</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a56e54a818166a2f4b2c1a7f76a3629ff">FuseBatchNormIntoDepthwiseConvolution2DFloat32</a>(),</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ab40bb51feca46649eb9d00522bfe51f6">FuseBatchNormIntoDepthwiseConvolution2DFloat16</a>()));</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;    <span class="comment">// If Fp32 to Fp16 optimization is set convert Fp32 network to Fp16</span></div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;    <span class="keywordflow">if</span> (options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a6e1a42622ca43dafc7ba8e684c016eb4">m_ReduceFp32ToFp16</a>)</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;    {</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;        <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a86d19da62b6cfed3928f6fe7026f22fa">Fp32NetworkToFp16Converter</a>()));</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;        <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;    }</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;    <span class="comment">// If Fp32 to Bf16 optimization is set convert Fp32 network to Bf16</span></div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;    <span class="comment">// Convert input of Convolution2d and FullyConnected from Fp32 to Bf16</span></div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;    <span class="comment">// Only Constant weight of Convolution2d and FullyConnected are converted from Fp32 to Bf16</span></div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;    <span class="keywordflow">if</span> (options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a11f463726addcc1d2845266997d79e9c">m_ReduceFp32ToBf16</a>)</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;    {</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;        <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#aeb70f8fcf5180bdd5c94be7bb2f9d176">Fp32NetworkToBf16Converter</a>()));</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;    }</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    <span class="comment">// Initialize backend settings</span></div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;    <a class="code" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> backendSettings(backendPreferences, deviceSpec);</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;    <span class="keywordflow">if</span> (backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#ad4ca579528452c669b45f3f35300fd4e">GetAvailablePreferredBackends</a>().empty())</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;    {</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;        std::stringstream failureMsg;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;        failureMsg &lt;&lt; <span class="stringliteral">&quot;None of the preferred backends &quot;</span> &lt;&lt; backendPreferences</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; are supported. Current platform provides &quot;</span> &lt;&lt; backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#a0b160952af61b24d88125d66ed6d43c1">m_SupportedBackends</a>;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;        <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), messages);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(failureMsg.str());</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;    }</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;    <span class="comment">// Create a map to temporarily hold initialized backend objects</span></div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> tensorHandleFactoryRegistry;</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends = <a class="code" href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a>(tensorHandleFactoryRegistry, backendSettings);</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;    <span class="comment">// Assign an available backend to each layer</span></div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> firstLayer = optGraph.<a class="code" href="classarmnn_1_1_graph.xhtml#a2387033802383edbdc95f9bbb12a707e">begin</a>();</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> lastLayer  = optGraph.<a class="code" href="classarmnn_1_1_graph.xhtml#ab45dae688fc5d8983727abffa4389003">end</a>();</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> assignBackendsResult = <a class="code" href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">AssignBackends</a>(optNetObjPtr-&gt;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>.get(),</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;                                                             backendSettings,</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;                                                             firstLayer,</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;                                                             lastLayer,</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;                                                             messages);</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;    <span class="keywordflow">if</span> (assignBackendsResult.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a>)</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;    {</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;        <span class="comment">// Failed to assign a backend to each layer</span></div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;Failed to assign a backend to each layer&quot;</span>);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;    }</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;    <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a1a9d718b48612b5817a3c369f9fd71ee">OptimizeInverseConversionsFp16</a>(),</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;                                                <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ae1509d340bc981b11101c3316ee8afd6">OptimizeInverseConversionsFp32</a>()));</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;    <span class="comment">// Apply the backend-specific optimizations</span></div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> backendOptimizationResult = <a class="code" href="namespacearmnn.xhtml#a9f31d956861d8277fa5f8fb877dbbb6c">ApplyBackendOptimizations</a>(optNetObjPtr-&gt;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>.get(),</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;                                                                             backendSettings,</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;                                                                             backends,</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;                                                                             options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a71194277c60153a5f86539f5d39f01db">m_ModelOptions</a>,</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;                                                                             messages);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;    <span class="keywordflow">if</span> (backendOptimizationResult.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a>)</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;    {</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;        <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;Failed to apply the backend-specific optimizations&quot;</span>);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;    }</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;    <span class="comment">// If the debug flag is set, then insert a DebugLayer after each layer</span></div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;    <span class="comment">// Doing this after applying the backend optimizations as they might have changed some layers</span></div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;    <span class="keywordflow">if</span> (options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a69eb14082d40fa0a3cff50457344a5e0">m_Debug</a>)</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;    {</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;        <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa76c76565125ad77092403176d74fd85">InsertDebugLayer</a>()));</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;    }</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;    <span class="comment">// Calculate the compatibility strategies for tensor handles</span></div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;    <a class="code" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> strategyResult = <a class="code" href="namespacearmnn.xhtml#a86541d11fcad5246a78cbc21d637a504">SelectTensorHandleStrategy</a>(optGraph,</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;                                                                   backends,</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;                                                                   tensorHandleFactoryRegistry,</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;                                                                   options.<a class="code" href="structarmnn_1_1_optimizer_options.xhtml#a05c1bba6ba3ecc1339d4c4c10c0d8890">m_ImportEnabled</a>,</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;                                                                   messages);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;    <span class="keywordflow">if</span> (strategyResult.<a class="code" href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">m_Error</a>)</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;    {</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;        <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">IOptimizedNetwork::Destroy</a>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;    }</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;    <span class="comment">// Based on the tensor handle strategy determined above, insert copy layers where required.</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;    optGraph.<a class="code" href="classarmnn_1_1_graph.xhtml#ad1bbee7bf5f93b792675886f57d3ebe0">AddCompatibilityLayers</a>(backends, tensorHandleFactoryRegistry);</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;    <span class="comment">// Convert constants</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;    <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;    <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a06cac66872538895dd6b59cdf39173d2">ConvertConstantsHalfToFloat</a>()));</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;    <span class="comment">// Run backend specific optimizations (deprecated)</span></div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; chosenBackend : backendSettings.<a class="code" href="structarmnn_1_1_backend_settings.xhtml#aa09ac75b83067c5ed455f2bb35c7c98d">m_SelectedBackends</a>)</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;    {</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;        <span class="keyword">auto</span> factoryFun = <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#afc0c63ca8db8957b58826f6d7bd231b2">GetFactory</a>(chosenBackend);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;        <span class="keyword">auto</span> backendPtr = factoryFun();</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;        <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(backendPtr.get() != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;        <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;        <span class="keyword">auto</span> backendSpecificOptimizations = backendPtr-&gt;GetOptimizations();</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;        <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;        <span class="keywordflow">if</span> (!backendSpecificOptimizations.empty())</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;        {</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;            <a class="code" href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">Optimizer::Pass</a>(optNetObjPtr-&gt;<a class="code" href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">pOptimizedNetworkImpl</a>-&gt;GetGraph(), backendSpecificOptimizations);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;        }</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;    }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;    <span class="keywordflow">return</span> optNet;</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;}</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;<span class="keywordtype">bool</span> NetworkImpl::GetShapeInferenceMethod()</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;{</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;    <span class="keywordflow">if</span> (m_NetworkOptions.size() &gt; 0 &amp;&amp; m_NetworkOptions[0].GetBackendId().Get() == <span class="stringliteral">&quot;ShapeInferenceMethod&quot;</span>)</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;    {</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;        <span class="keywordflow">return</span> m_NetworkOptions[0].GetOption(0).GetValue().AsBool();</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;    }</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;}</div><div class="line"><a name="l01667"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a55e83c091dbe02c2ca6d3b33a902ae02"> 1667</a></span>&#160;<a class="code" href="classarmnn_1_1_network_impl.xhtml#a55e83c091dbe02c2ca6d3b33a902ae02">NetworkImpl::NetworkImpl</a>(<a class="code" href="namespacearmnn.xhtml#a4de71c3661093e5c4ae7775114f43413">NetworkOptions</a> networkOptions)</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;: m_NetworkOptions(networkOptions),</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;  m_Graph(<a class="code" href="namespacestd.xhtml">std</a>::make_unique&lt;<a class="code" href="classarmnn_1_1_graph.xhtml">Graph</a>&gt;(GetShapeInferenceMethod()))</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;{}</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;</div><div class="line"><a name="l01672"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ad443897d51b291c83d81d809af07f4e0"> 1672</a></span>&#160;<a class="code" href="classarmnn_1_1_network_impl.xhtml#ad443897d51b291c83d81d809af07f4e0">NetworkImpl::~NetworkImpl</a>()</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;{</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;}</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;</div><div class="line"><a name="l01676"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#aff3fde909d22ed157046682e70129259"> 1676</a></span>&#160;<a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> <a class="code" href="classarmnn_1_1_network_impl.xhtml#aff3fde909d22ed157046682e70129259">NetworkImpl::PrintGraph</a>()</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;{</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;    m_Graph-&gt;Print();</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Status::Success</a>;</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;}</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;</div><div class="line"><a name="l01682"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#aa6c1c42ea44777302e87ce0fad5ac510"> 1682</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#aa6c1c42ea44777302e87ce0fad5ac510">NetworkImpl::AddInputLayer</a>(<a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;{</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_input_layer.xhtml">InputLayer</a>&gt;(id, name);</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;}</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;</div><div class="line"><a name="l01687"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a9a9bcc00ae3d96343c93b437d6f77088"> 1687</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a9a9bcc00ae3d96343c93b437d6f77088">NetworkImpl::AddBatchToSpaceNdLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a>&amp; batchToSpaceNdDescriptor,</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;{</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_batch_to_space_nd_layer.xhtml">BatchToSpaceNdLayer</a>&gt;(batchToSpaceNdDescriptor, name);</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;}</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;</div><div class="line"><a name="l01693"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a"> 1693</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a">NetworkImpl::AddComparisonLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_comparison_descriptor.xhtml">ComparisonDescriptor</a>&amp; comparisonDescriptor,</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;                                               <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;{</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_comparison_layer.xhtml">ComparisonLayer</a>&gt;(comparisonDescriptor, name);</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;}</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;</div><div class="line"><a name="l01699"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a095a9b700dc857edc23c5d3bf088919f"> 1699</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a095a9b700dc857edc23c5d3bf088919f">NetworkImpl::AddElementwiseUnaryLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">ElementwiseUnaryDescriptor</a>&amp; elementwiseUnaryDescriptor,</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;                                                     <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;{</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_elementwise_unary_layer.xhtml">ElementwiseUnaryLayer</a>&gt;(elementwiseUnaryDescriptor, name);</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;}</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;</div><div class="line"><a name="l01705"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#afc94c35c0bbe852a60046bf2e756b2e0"> 1705</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#afc94c35c0bbe852a60046bf2e756b2e0">NetworkImpl::AddFillLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fill_descriptor.xhtml">FillDescriptor</a>&amp; fillDescriptor,</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;                                         <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;{</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_fill_layer.xhtml">FillLayer</a>&gt;(fillDescriptor, name);</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;}</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* NetworkImpl::AddFullyConnectedLayerImpl(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a>&amp; fullyConnectedDescriptor,</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;                                                       <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;                                                       <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;                                                       <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;{</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;    <span class="keywordflow">if</span> (fullyConnectedDescriptor.<a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> &amp;&amp; !biases.<a class="code" href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>())</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;    {</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddFullyConnectedLayer: biases cannot be empty&quot;</span>);</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;    }</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_fully_connected_layer.xhtml">FullyConnectedLayer</a>&gt;(fullyConnectedDescriptor, name);</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_fully_connected_layer.xhtml#a2664044e28e69309ea08ef385fe53903">m_Weight</a> = std::make_unique&lt;ScopedCpuTensorHandle&gt;(weights);</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;    <span class="keywordflow">if</span> (fullyConnectedDescriptor.m_BiasEnabled)</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;    {</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;        layer-&gt;m_Bias = std::make_unique&lt;ScopedCpuTensorHandle&gt;(biases.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>());</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;    }</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;}</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;</div><div class="line"><a name="l01733"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ae3ef3b97542241d331a38613ae189f3e"> 1733</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ae3ef3b97542241d331a38613ae189f3e">NetworkImpl::AddFullyConnectedLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a>&amp; fullyConnectedDescriptor,</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;{</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;    <span class="keywordflow">return</span> AddFullyConnectedLayerImpl(fullyConnectedDescriptor, weights, biases, name);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;}</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;</div><div class="line"><a name="l01741"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a44349b3cf3ff8d476d5f930946e89c47"> 1741</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ae3ef3b97542241d331a38613ae189f3e">NetworkImpl::AddFullyConnectedLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a>&amp; fullyConnectedDescriptor,</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;{</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> biases;</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;    <span class="keywordflow">return</span> AddFullyConnectedLayerImpl(fullyConnectedDescriptor, weights, biases, name);</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;}</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;</div><div class="line"><a name="l01749"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a5811dfe93a4938dbbc9e8dd266e339de"> 1749</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ae3ef3b97542241d331a38613ae189f3e">NetworkImpl::AddFullyConnectedLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a>&amp; fullyConnectedDescriptor,</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;                                                   <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; biases,</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;{</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> optionalBiases(biases);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;    <span class="keywordflow">return</span> AddFullyConnectedLayerImpl(fullyConnectedDescriptor, weights, optionalBiases, name);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;}</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;</div><div class="line"><a name="l01758"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#aea1059833739d3dccebb3a03ec35a1e6"> 1758</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#aea1059833739d3dccebb3a03ec35a1e6">NetworkImpl::AddConcatLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">ConcatDescriptor</a>&amp; concatDescriptor,</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;                                           <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;{</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_concat_layer.xhtml">ConcatLayer</a>&gt;(concatDescriptor, name);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;}</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* NetworkImpl::AddConvolution2dLayerImpl(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;                                                          <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;                                                          <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;                                                          <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;{</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;    <span class="keywordflow">if</span> (convolution2dDescriptor.<a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> &amp;&amp; !biases.<a class="code" href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>())</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;    {</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddConvolution2dLayer: biases cannot be empty&quot;</span>);</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;    }</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_convolution2d_layer.xhtml">Convolution2dLayer</a>&gt;(convolution2dDescriptor, name);</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_convolution2d_layer.xhtml#a2664044e28e69309ea08ef385fe53903">m_Weight</a> = std::make_unique&lt;ScopedCpuTensorHandle&gt;(weights);</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;    <span class="keywordflow">if</span> (convolution2dDescriptor.m_BiasEnabled)</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;    {</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;        layer-&gt;m_Bias = std::make_unique&lt;ScopedCpuTensorHandle&gt;(biases.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>());</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;    }</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;}</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;</div><div class="line"><a name="l01786"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a178a72bbf254eff34a807a5ca27cb61f"> 1786</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a178a72bbf254eff34a807a5ca27cb61f">NetworkImpl::AddConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;                                                  <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;                                                  <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;{</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;    <span class="keywordflow">return</span> AddConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;}</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;</div><div class="line"><a name="l01794"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#abaf4646307d946a74c1bf7bdc8efb83b"> 1794</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a178a72bbf254eff34a807a5ca27cb61f">NetworkImpl::AddConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;                                                  <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;{</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> biases;</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;    <span class="keywordflow">return</span> AddConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;}</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;</div><div class="line"><a name="l01802"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#aa54008a5c8e4916bd1da8e0923a2e049"> 1802</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a178a72bbf254eff34a807a5ca27cb61f">NetworkImpl::AddConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;                                                  <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;                                                  <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; biases,</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;{</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> optionalBiases(biases);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;    <span class="keywordflow">return</span> AddConvolution2dLayerImpl(convolution2dDescriptor, weights, optionalBiases, name);</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;}</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* NetworkImpl::AddDepthwiseConvolution2dLayerImpl(</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;    <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;{</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;    <span class="keywordflow">if</span> (convolution2dDescriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> &amp;&amp; !biases.<a class="code" href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>())</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;    {</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddDepthwiseConvolution2dLayer: biases cannot be empty&quot;</span>);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;    }</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml">DepthwiseConvolution2dLayer</a>&gt;(convolution2dDescriptor, name);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml#a2664044e28e69309ea08ef385fe53903">m_Weight</a> = std::make_unique&lt;ScopedCpuTensorHandle&gt;(weights);</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;    <span class="keywordflow">if</span> (convolution2dDescriptor.m_BiasEnabled)</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;    {</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;        layer-&gt;m_Bias = std::make_unique&lt;ScopedCpuTensorHandle&gt;(biases.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>());</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;    }</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;}</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;</div><div class="line"><a name="l01834"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#af1853466264ac187607c96b501a74e2b"> 1834</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#af1853466264ac187607c96b501a74e2b">NetworkImpl::AddDepthToSpaceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">DepthToSpaceDescriptor</a>&amp; depthToSpaceDescriptor,</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;{</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_depth_to_space_layer.xhtml">DepthToSpaceLayer</a>&gt;(depthToSpaceDescriptor, name);</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;}</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;</div><div class="line"><a name="l01840"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a58f85a122022527a525318473f93d4ef"> 1840</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a58f85a122022527a525318473f93d4ef">NetworkImpl::AddDepthwiseConvolution2dLayer</a>(</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;        <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;{</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;    <span class="keywordflow">return</span> AddDepthwiseConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;}</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;</div><div class="line"><a name="l01849"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a02b981a246785121fd822a2eb996e716"> 1849</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a58f85a122022527a525318473f93d4ef">NetworkImpl::AddDepthwiseConvolution2dLayer</a>(</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;    <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;{</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> biases;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;    <span class="keywordflow">return</span> AddDepthwiseConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;}</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;</div><div class="line"><a name="l01858"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#af326ea7544a5510e4d3465a3a842b4d4"> 1858</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a58f85a122022527a525318473f93d4ef">NetworkImpl::AddDepthwiseConvolution2dLayer</a>(</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;    <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a>&amp; convolution2dDescriptor,</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; biases,</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;{</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;    <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a> optionalBiases(biases);</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;    <span class="keywordflow">return</span> AddDepthwiseConvolution2dLayerImpl(convolution2dDescriptor, weights, optionalBiases, name);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;}</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;</div><div class="line"><a name="l01868"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ac1134a94265293ea7347180260f787d2"> 1868</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ac1134a94265293ea7347180260f787d2">NetworkImpl::AddDetectionPostProcessLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">armnn::DetectionPostProcessDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;                                                         <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; <a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;{</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_detection_post_process_layer.xhtml">DetectionPostProcessLayer</a>&gt;(descriptor, name);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_detection_post_process_layer.xhtml#a6844fecab0edaf324de5a57fee8b65f1">m_Anchors</a> = std::make_unique&lt;ScopedCpuTensorHandle&gt;(<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>);</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;}</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;</div><div class="line"><a name="l01878"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a11f49d84f0cfd8df65f4d5206cd43b6d"> 1878</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a11f49d84f0cfd8df65f4d5206cd43b6d">NetworkImpl::AddPermuteLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a>&amp; permuteDescriptor,</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;{</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_permute_layer.xhtml">PermuteLayer</a>&gt;(permuteDescriptor, name);</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;}</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;</div><div class="line"><a name="l01884"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ae913b4351b7027f37eb5657dd7867733"> 1884</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ae913b4351b7027f37eb5657dd7867733">NetworkImpl::AddPooling2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a>&amp; pooling2dDescriptor,</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;{</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_pooling2d_layer.xhtml">Pooling2dLayer</a>&gt;(pooling2dDescriptor, name);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;}</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;</div><div class="line"><a name="l01890"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#aa51350bdd4976f3dd5a4e9d00a906b2c"> 1890</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#aa51350bdd4976f3dd5a4e9d00a906b2c">NetworkImpl::AddActivationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a>&amp; activationDescriptor,</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;{</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">ActivationLayer</a>&gt;(activationDescriptor, name);</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;}</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;</div><div class="line"><a name="l01896"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#adc8c1c505bca8233fe238b3b7fb80200"> 1896</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#adc8c1c505bca8233fe238b3b7fb80200">NetworkImpl::AddArgMinMaxLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a>&amp; argMinMaxDescriptor,</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;{</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_arg_min_max_layer.xhtml">ArgMinMaxLayer</a>&gt;(argMinMaxDescriptor, name);</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;}</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;</div><div class="line"><a name="l01902"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a6c5376053e1f875776d7bc36fd0b7d45"> 1902</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a6c5376053e1f875776d7bc36fd0b7d45">NetworkImpl::AddNormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a>&amp;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;normalizationDescriptor,</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;{</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_normalization_layer.xhtml">NormalizationLayer</a>&gt;(normalizationDescriptor, name);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;}</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;</div><div class="line"><a name="l01909"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a8de6b047fcaff95df48dca683e1f3aa4"> 1909</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a8de6b047fcaff95df48dca683e1f3aa4">NetworkImpl::AddSliceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a>&amp; sliceDescriptor, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;{</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_slice_layer.xhtml">SliceLayer</a>&gt;(sliceDescriptor, name);</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;}</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;</div><div class="line"><a name="l01914"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a30528a3bd85a0dba158bd14e252bd68a"> 1914</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a30528a3bd85a0dba158bd14e252bd68a">NetworkImpl::AddSoftmaxLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a>&amp; softmaxDescriptor,</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;{</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_softmax_layer.xhtml">SoftmaxLayer</a>&gt;(softmaxDescriptor, name);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;}</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;</div><div class="line"><a name="l01920"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a6f6d81d8a4f1f85f3616e8306760061c"> 1920</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a6f6d81d8a4f1f85f3616e8306760061c">NetworkImpl::AddSplitterLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a>&amp; splitterDescriptor,</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;{</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_splitter_layer.xhtml">SplitterLayer</a>&gt;(splitterDescriptor, name);</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;}</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;</div><div class="line"><a name="l01926"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a57590d7777211673d2052f702f0b07a1"> 1926</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a57590d7777211673d2052f702f0b07a1">NetworkImpl::AddMaximumLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;{</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_maximum_layer.xhtml">MaximumLayer</a>&gt;(name);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;}</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;</div><div class="line"><a name="l01931"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a4bfd8dee1a0315b651e977c672c0847c"> 1931</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a4bfd8dee1a0315b651e977c672c0847c">NetworkImpl::AddMinimumLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;{</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_minimum_layer.xhtml">MinimumLayer</a>&gt;(name);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;}</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;</div><div class="line"><a name="l01936"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a34aa5f1a405a6886f79c97d53f9f65fd"> 1936</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a34aa5f1a405a6886f79c97d53f9f65fd">NetworkImpl::AddMergerLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">MergerDescriptor</a>&amp; mergerDescriptor,</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;                                           <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;{</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#aea1059833739d3dccebb3a03ec35a1e6">AddConcatLayer</a>(mergerDescriptor, name);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;}</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;</div><div class="line"><a name="l01942"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a030e8e7c1f6980ec9b2ac06b683ee74e"> 1942</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a030e8e7c1f6980ec9b2ac06b683ee74e">NetworkImpl::AddAbsLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * name)</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;{</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#a095a9b700dc857edc23c5d3bf088919f">AddElementwiseUnaryLayer</a>(<a class="code" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">ElementwiseUnaryDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">UnaryOperation::Abs</a>), name);</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;}</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;</div><div class="line"><a name="l01947"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a39f1b38d89c4de186742eafcbb3b1319"> 1947</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a39f1b38d89c4de186742eafcbb3b1319">NetworkImpl::AddAdditionLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;{</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_addition_layer.xhtml">AdditionLayer</a>&gt;(name);</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;}</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;</div><div class="line"><a name="l01952"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#abb59f6ba9988dae88e0f48e68d87fc32"> 1952</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#abb59f6ba9988dae88e0f48e68d87fc32">NetworkImpl::AddMultiplicationLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;{</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_multiplication_layer.xhtml">MultiplicationLayer</a>&gt;(name);</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;}</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;</div><div class="line"><a name="l01957"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#af5790069aa11fd1c5bb2e17cecb06528"> 1957</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#af5790069aa11fd1c5bb2e17cecb06528">NetworkImpl::AddOutputLayer</a>(<a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;{</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_output_layer.xhtml">OutputLayer</a>&gt;(id, name);</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;}</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;</div><div class="line"><a name="l01962"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a8f798e19187ac7ae6ae6153ee64ab645"> 1962</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a8f798e19187ac7ae6ae6153ee64ab645">NetworkImpl::AddBatchNormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a>&amp; desc,</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;                                                       <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp;                  mean,</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;                                                       <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp;                  variance,</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;                                                       <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp;                  beta,</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;                                                       <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp;                  gamma,</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;                                                       <span class="keyword">const</span> <span class="keywordtype">char</span>*                         name)</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160;{</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_batch_normalization_layer.xhtml">BatchNormalizationLayer</a>&gt;(desc, name);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_batch_normalization_layer.xhtml#a3540afac8fad99bbe68b3f7b57590160">m_Mean</a> = std::make_unique&lt;ScopedCpuTensorHandle&gt;(mean);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;    layer-&gt;m_Variance = std::make_unique&lt;ScopedCpuTensorHandle&gt;(variance);</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;    layer-&gt;m_Beta = std::make_unique&lt;ScopedCpuTensorHandle&gt;(beta);</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;    layer-&gt;m_Gamma = std::make_unique&lt;ScopedCpuTensorHandle&gt;(gamma);</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;}</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div><div class="line"><a name="l01979"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a25563024ec66627ee83727244a53e944"> 1979</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a25563024ec66627ee83727244a53e944">NetworkImpl::AddRankLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;{</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_rank_layer.xhtml">RankLayer</a>&gt;(name);</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;}</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div><div class="line"><a name="l01984"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ae0cfae1ea51669892608a1a060d24fa0"> 1984</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ae0cfae1ea51669892608a1a060d24fa0">NetworkImpl::AddReduceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_reduce_descriptor.xhtml">ReduceDescriptor</a>&amp; reduceDescriptor,</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;                                               <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;{</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_reduce_layer.xhtml">ReduceLayer</a>&gt;(reduceDescriptor, name);</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;}</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;</div><div class="line"><a name="l01990"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#acc9f9b91636c0714d96a3cba92c624f9"> 1990</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#acc9f9b91636c0714d96a3cba92c624f9">NetworkImpl::AddResizeBilinearLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml">ResizeBilinearDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;                                                       <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;{</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;    <a class="code" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> resizeDescriptor;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a869254cb56968986a78a79e1d6d4a86b">m_Method</a>           = <a class="code" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">ResizeMethod::Bilinear</a>;</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>       = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#adcf5037208faac36c0788239a073f75c">m_TargetWidth</a>      = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#adcf5037208faac36c0788239a073f75c">m_TargetWidth</a>;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a46c3fa15c46fb0d1dcdc24d0ea5cb5cd">m_TargetHeight</a>     = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a46c3fa15c46fb0d1dcdc24d0ea5cb5cd">m_TargetHeight</a>;</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#ae1a4b3b6c60552509b89747cebb900a2">m_AlignCorners</a>     = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#ae1a4b3b6c60552509b89747cebb900a2">m_AlignCorners</a>;</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;    resizeDescriptor.<a class="code" href="structarmnn_1_1_resize_descriptor.xhtml#a4022d5107338aaf5eb7abebf78a1360b">m_HalfPixelCenters</a> = descriptor.<a class="code" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a4022d5107338aaf5eb7abebf78a1360b">m_HalfPixelCenters</a>;</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_resize_layer.xhtml">ResizeLayer</a>&gt;(resizeDescriptor, name);</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;}</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;</div><div class="line"><a name="l02004"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ad97411f1fcb2c30c212483d8c673506f"> 2004</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ad97411f1fcb2c30c212483d8c673506f">NetworkImpl::AddResizeLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a>&amp; resizeDescriptor, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;{</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_resize_layer.xhtml">ResizeLayer</a>&gt;(resizeDescriptor, name);</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;}</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;</div><div class="line"><a name="l02009"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#abd61d3e7ab67551c75bc219bbc4baeb5"> 2009</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#abd61d3e7ab67551c75bc219bbc4baeb5">NetworkImpl::AddInstanceNormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a>&amp; desc,</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;                                                              <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;{</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_instance_normalization_layer.xhtml">InstanceNormalizationLayer</a>&gt;(desc, name);</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;}</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;</div><div class="line"><a name="l02015"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#aaff51346dadec2c1430abf007fed4cc9"> 2015</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#aaff51346dadec2c1430abf007fed4cc9">NetworkImpl::AddL2NormalizationLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a>&amp; desc,</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;                                                        <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;{</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_l2_normalization_layer.xhtml">L2NormalizationLayer</a>&gt;(desc, name);</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;}</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;</div><div class="line"><a name="l02021"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a83b33973ca12078166b2436b313627b9"> 2021</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a83b33973ca12078166b2436b313627b9">NetworkImpl::AddLogSoftmaxLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml">LogSoftmaxDescriptor</a>&amp; desc,</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;                                               <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;{</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_log_softmax_layer.xhtml">LogSoftmaxLayer</a>&gt;(desc, name);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;}</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;</div><div class="line"><a name="l02027"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a1aa567f46c30960851c02847dc7b4215"> 2027</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a1aa567f46c30960851c02847dc7b4215">NetworkImpl::AddConstantLayer</a>(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; input, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;{</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;    <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_constant_layer.xhtml">ConstantLayer</a>&gt;(name);</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_constant_layer.xhtml#a67ccc257eeefce0964c1cafc4b255c9f">m_LayerOutput</a> = std::make_unique&lt;ScopedCpuTensorHandle&gt;(input);</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;}</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;</div><div class="line"><a name="l02036"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a8a3380be13fba749fc4208214b049347"> 2036</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a8a3380be13fba749fc4208214b049347">NetworkImpl::AddReshapeLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a>&amp; reshapeDescriptor,</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;{</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_reshape_layer.xhtml">ReshapeLayer</a>&gt;(reshapeDescriptor, name);</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;}</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;</div><div class="line"><a name="l02042"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a72b9d30e9d555bb5c35460b62faedf0d"> 2042</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a72b9d30e9d555bb5c35460b62faedf0d">NetworkImpl::AddSpaceToBatchNdLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a>&amp; spaceToBatchNdDescriptor,</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;                                                   <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;{</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_space_to_batch_nd_layer.xhtml">SpaceToBatchNdLayer</a>&gt;(spaceToBatchNdDescriptor, name);</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;}</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;</div><div class="line"><a name="l02048"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a19bad0cc50526ca9f4f84a688812cdf5"> 2048</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a19bad0cc50526ca9f4f84a688812cdf5">NetworkImpl::AddSpaceToDepthLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a>&amp; spaceToDepthDescriptor,</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;{</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_space_to_depth_layer.xhtml">SpaceToDepthLayer</a>&gt;(spaceToDepthDescriptor, name);</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;}</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;</div><div class="line"><a name="l02054"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a435ea88480b8645026dd45fd692663a1"> 2054</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a435ea88480b8645026dd45fd692663a1">NetworkImpl::AddFloorLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;{</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_floor_layer.xhtml">FloorLayer</a>&gt;(name);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;}</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;</div><div class="line"><a name="l02059"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a0a2fdd4f442952c97a8f24de6700473a"> 2059</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a0a2fdd4f442952c97a8f24de6700473a">NetworkImpl::AddLstmLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a>&amp;  descriptor,</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;                                         <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_lstm_input_params.xhtml">LstmInputParams</a>&amp; params,</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;                                         <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;{</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_lstm_layer.xhtml">LstmLayer</a>&gt;(descriptor, name);</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;    <span class="comment">//Lstm Basic Parameters</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_lstm_layer.xhtml#a8838b317568861294a9df608221f185e">m_BasicParameters</a>.<a class="code" href="structarmnn_1_1_lstm_basic_parameters.xhtml#a5a0d8af26a6aad1e5be521ea7dc550eb">m_InputToForgetWeights</a> =</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;        std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a31da1ead6794dd64571afdd0b6efc771">m_InputToForgetWeights</a>));</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;    layer-&gt;m_BasicParameters.m_InputToCellWeights =</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;        std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a49e11acda22742cbaf6f1b259ead0d84">m_InputToCellWeights</a>));</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;    layer-&gt;m_BasicParameters.m_InputToOutputWeights =</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;        std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a6e30c7b3451da3ea9cf4259fb602e6e6">m_InputToOutputWeights</a>));</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;    layer-&gt;m_BasicParameters.m_RecurrentToForgetWeights =</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;        std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ae83131e16df1cace69395a5f99bc5ecb">m_RecurrentToForgetWeights</a>));</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;    layer-&gt;m_BasicParameters.m_RecurrentToCellWeights =</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;        std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a1759754ccb88ecc9af44f3aae6e244ee">m_RecurrentToCellWeights</a>));</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;    layer-&gt;m_BasicParameters.m_RecurrentToOutputWeights =</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;        std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a56b81ca8ba4b4937e0787e4951f043fc">m_RecurrentToOutputWeights</a>));</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;    layer-&gt;m_BasicParameters.m_ForgetGateBias =</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ace7a1f1f1041b412b7d8ef82b95ff352">m_ForgetGateBias</a>));</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;    layer-&gt;m_BasicParameters.m_CellBias =</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a4a9d678146f572808a361dbdc5489f38">m_CellBias</a>));</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;    layer-&gt;m_BasicParameters.m_OutputGateBias =</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a8c0f6d48705f40c5590dde09be262222">m_OutputGateBias</a>));</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;    <span class="comment">//Lstm Cifg parameters</span></div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;    <span class="keywordflow">if</span>(!descriptor.m_CifgEnabled)</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;    {</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#affcee5f4ab5994a21bee3b78b4e43de3">m_InputToInputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;        {</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Input To Input Weights cannot be NULL &quot;</span></div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;                                           <span class="stringliteral">&quot;when CIFG is disabled.&quot;</span>);</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;        }</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a435d3651482bbfcc11263b4e4e0c900f">m_RecurrentToInputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;        {</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;                    <span class="stringliteral">&quot;AddLstmLayer: Recurrent To Input Weights cannot be NULL &quot;</span></div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;                    <span class="stringliteral">&quot;when CIFG is disabled.&quot;</span>);</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;        }</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9e081a9b94defb30d1558dc912507e0e">m_InputGateBias</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;        {</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Input Gate Bias cannot be NULL &quot;</span></div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;                                           <span class="stringliteral">&quot;when CIFG is disabled.&quot;</span>);</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;        }</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;        layer-&gt;m_CifgParameters.m_InputToInputWeights =</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#affcee5f4ab5994a21bee3b78b4e43de3">m_InputToInputWeights</a>));</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;        layer-&gt;m_CifgParameters.m_RecurrentToInputWeights =</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a435d3651482bbfcc11263b4e4e0c900f">m_RecurrentToInputWeights</a>));</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;        layer-&gt;m_CifgParameters.m_InputGateBias =</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9e081a9b94defb30d1558dc912507e0e">m_InputGateBias</a>));</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;    }</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;    <span class="comment">//Lstm projection parameters</span></div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;    <span class="keywordflow">if</span>(descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;    {</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ab03e6e1514f74427916c892f473fe04c">m_ProjectionWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;        {</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Projection Weights cannot be NULL &quot;</span></div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;                                           <span class="stringliteral">&quot;when projection is enabled.&quot;</span>);</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;        }</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;        layer-&gt;m_ProjectionParameters.m_ProjectionWeights =</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ab03e6e1514f74427916c892f473fe04c">m_ProjectionWeights</a>));</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a44b0e6b16708df7f0d2bbab141688aaa">m_ProjectionBias</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;        {</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;            layer-&gt;m_ProjectionParameters.m_ProjectionBias =</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a44b0e6b16708df7f0d2bbab141688aaa">m_ProjectionBias</a>));</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;        }</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;    }</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;    <span class="comment">//Lstm Peephole params</span></div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;    <span class="keywordflow">if</span>(descriptor.m_PeepholeEnabled)</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;    {</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;        <span class="keywordflow">if</span>(!descriptor.m_CifgEnabled)</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;        {</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;            <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a484bafa2f8453a7c5a4a00b92a61b006">m_CellToInputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;            {</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;                <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Cell To Input Weights cannot be NULL &quot;</span></div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;                                               <span class="stringliteral">&quot;when Peephole is enabled and CIFG disabled.&quot;</span>);</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;            }</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;            layer-&gt;m_PeepholeParameters.m_CellToInputWeights =</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a484bafa2f8453a7c5a4a00b92a61b006">m_CellToInputWeights</a>));</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;        }</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a35b112e30c3eb153806a2a8c16d178e3">m_CellToForgetWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;        {</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Cell To Forget Weights cannot be NULL &quot;</span></div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;                                           <span class="stringliteral">&quot;when Peephole is enabled.&quot;</span>);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;        }</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#afe204ca375b74e9a72640c9227918d0a">m_CellToOutputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;        {</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Cell To Output Weights cannot be NULL &quot;</span></div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;                                           <span class="stringliteral">&quot;when Peephole is enabled.&quot;</span>);</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;        }</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;        layer-&gt;m_PeepholeParameters.m_CellToForgetWeights =</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a35b112e30c3eb153806a2a8c16d178e3">m_CellToForgetWeights</a>));</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;        layer-&gt;m_PeepholeParameters.m_CellToOutputWeights =</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#afe204ca375b74e9a72640c9227918d0a">m_CellToOutputWeights</a>));</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;    }</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;    <span class="comment">//Lstm Layer Normalization params</span></div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;    <span class="keywordflow">if</span>(descriptor.m_LayerNormEnabled)</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;    {</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;        <span class="keywordflow">if</span>(!descriptor.m_CifgEnabled)</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;        {</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;            <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a0cd848f65ec31778d708852f0042fe37">m_InputLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;            {</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;                <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Input layer normalization weights cannot be NULL &quot;</span></div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;                                               <span class="stringliteral">&quot;when layer normalization is enabled and CIFG disabled.&quot;</span>);</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;            }</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;            layer-&gt;m_LayerNormParameters.m_InputLayerNormWeights =</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;                    std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a0cd848f65ec31778d708852f0042fe37">m_InputLayerNormWeights</a>));</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;        }</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#af0f796fba1a2be9c56b4c9ee534577ee">m_ForgetLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;        {</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Forget layer normalization weights cannot be NULL &quot;</span></div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;                                           <span class="stringliteral">&quot;when layer normalization is enabled.&quot;</span>);</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;        }</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ad0b8c32bb5381f4cc999093ba3b98b43">m_CellLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;        {</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Cell layer normalization weights cannot be NULL &quot;</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;                                           <span class="stringliteral">&quot;when layer normalization is enabled.&quot;</span>);</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;        }</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9b18daea2e9f42386055326fd016519a">m_OutputLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;        {</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddLstmLayer: Output layer normalization weights cannot be NULL &quot;</span></div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;                                           <span class="stringliteral">&quot;when layer normalization is enabled.&quot;</span>);</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;        }</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;        layer-&gt;m_LayerNormParameters.m_ForgetLayerNormWeights =</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#af0f796fba1a2be9c56b4c9ee534577ee">m_ForgetLayerNormWeights</a>));</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;        layer-&gt;m_LayerNormParameters.m_CellLayerNormWeights =</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ad0b8c32bb5381f4cc999093ba3b98b43">m_CellLayerNormWeights</a>));</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;        layer-&gt;m_LayerNormParameters.m_OutputLayerNormWeights =</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9b18daea2e9f42386055326fd016519a">m_OutputLayerNormWeights</a>));</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;    }</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;}</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;</div><div class="line"><a name="l02200"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a0aeb4e528cf6ba4b7caca14a94fbcafe"> 2200</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a0aeb4e528cf6ba4b7caca14a94fbcafe">NetworkImpl::AddDivisionLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;{</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_division_layer.xhtml">DivisionLayer</a>&gt;(name);</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;}</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;</div><div class="line"><a name="l02205"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#af13795cdf49e63d8bc3cb409592cdb9d"> 2205</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#af13795cdf49e63d8bc3cb409592cdb9d">NetworkImpl::AddSubtractionLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;{</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_subtraction_layer.xhtml">SubtractionLayer</a>&gt;(name);</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;}</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;</div><div class="line"><a name="l02210"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ad4726f9b7dd11db250d2a494a8a39494"> 2210</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ad4726f9b7dd11db250d2a494a8a39494">NetworkImpl::AddMeanLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a>&amp; meanDescriptor, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;{</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_mean_layer.xhtml">MeanLayer</a>&gt;(meanDescriptor,name);</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;}</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;</div><div class="line"><a name="l02215"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a6e2df484ecc65bc82712590b96e04df4"> 2215</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a6e2df484ecc65bc82712590b96e04df4">NetworkImpl::AddPadLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a>&amp; padDescriptor, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;{</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_pad_layer.xhtml">PadLayer</a>&gt;(padDescriptor,name);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;}</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;</div><div class="line"><a name="l02220"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a0b426a3feffc76e66d73b5761806e899"> 2220</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *<a class="code" href="classarmnn_1_1_network_impl.xhtml#a0b426a3feffc76e66d73b5761806e899">NetworkImpl::AddQuantizeLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;{</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_quantize_layer.xhtml">QuantizeLayer</a>&gt;(name);</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;}</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;</div><div class="line"><a name="l02225"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a357aca04172ed22fa32e5a69122b0fec"> 2225</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a357aca04172ed22fa32e5a69122b0fec">NetworkImpl::AddDequantizeLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;{</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_dequantize_layer.xhtml">DequantizeLayer</a>&gt;(name);</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;}</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;</div><div class="line"><a name="l02230"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ac5c93cad39a690af862d49ffaec0d3c0"> 2230</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ac5c93cad39a690af862d49ffaec0d3c0">NetworkImpl::AddStridedSliceLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a>&amp; stridedSliceDescriptor,</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;{</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_strided_slice_layer.xhtml">StridedSliceLayer</a>&gt;(stridedSliceDescriptor, name);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;}</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;</div><div class="line"><a name="l02236"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a9fcd8cc35c8ae7d092705e7c4c2a7c69"> 2236</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a9fcd8cc35c8ae7d092705e7c4c2a7c69">NetworkImpl::AddGreaterLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;{</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a">AddComparisonLayer</a>(<a class="code" href="structarmnn_1_1_comparison_descriptor.xhtml">ComparisonDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">ComparisonOperation::Greater</a>), name);</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;}</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;</div><div class="line"><a name="l02241"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a7ba52238d75f06ff59a0d2ba613acefe"> 2241</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a7ba52238d75f06ff59a0d2ba613acefe">NetworkImpl::AddEqualLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160;{</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a">AddComparisonLayer</a>(<a class="code" href="structarmnn_1_1_comparison_descriptor.xhtml">ComparisonDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">ComparisonOperation::Equal</a>), name);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;}</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;</div><div class="line"><a name="l02246"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ae2f5193942457daafa733998f3e61449"> 2246</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ae2f5193942457daafa733998f3e61449">NetworkImpl::AddRsqrtLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * name)</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;{</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#a095a9b700dc857edc23c5d3bf088919f">AddElementwiseUnaryLayer</a>(<a class="code" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">ElementwiseUnaryDescriptor</a>(<a class="code" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">UnaryOperation::Rsqrt</a>), name);</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;}</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;</div><div class="line"><a name="l02251"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a31f19249d1491464736b08b967be68b4"> 2251</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a31f19249d1491464736b08b967be68b4">NetworkImpl::AddGatherLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;{</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;    <a class="code" href="structarmnn_1_1_gather_descriptor.xhtml">GatherDescriptor</a> gatherDescriptor{};</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#a31f19249d1491464736b08b967be68b4">AddGatherLayer</a>(gatherDescriptor, name);</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;}</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;</div><div class="line"><a name="l02257"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#aaf5e9645806f49d0fcd7ac07ba187f4e"> 2257</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a31f19249d1491464736b08b967be68b4">NetworkImpl::AddGatherLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_gather_descriptor.xhtml">GatherDescriptor</a>&amp; gatherDescriptor,</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;                                           <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;{</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_gather_layer.xhtml">GatherLayer</a>&gt;(gatherDescriptor, name);</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;}</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;</div><div class="line"><a name="l02263"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a0f19808bdada45222e72edf7671a275a"> 2263</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a0f19808bdada45222e72edf7671a275a">NetworkImpl::AddMergeLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;{</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_merge_layer.xhtml">MergeLayer</a>&gt;(name);</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;}</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160;</div><div class="line"><a name="l02268"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a26e69cda5fe9642f9198c24ae5fdf9bc"> 2268</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a26e69cda5fe9642f9198c24ae5fdf9bc">NetworkImpl::AddSwitchLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;{</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_switch_layer.xhtml">SwitchLayer</a>&gt;(name);</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;}</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;</div><div class="line"><a name="l02273"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a6d614a503a34ea3712b388aa4340ddbe"> 2273</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a6d614a503a34ea3712b388aa4340ddbe">NetworkImpl::AddPreluLayer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;{</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_prelu_layer.xhtml">PreluLayer</a>&gt;(name);</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;}</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;</div><div class="line"><a name="l02278"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a41fd7b56923d5625bac2cbfebed1a393"> 2278</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a41fd7b56923d5625bac2cbfebed1a393">NetworkImpl::AddTransposeConvolution2dLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a>&amp; descriptor,</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;                                                           <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&amp; weights,</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;                                                           <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;ConstTensor&gt;</a>&amp; biases,</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;                                                           <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;{</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;    <span class="keywordflow">if</span> (descriptor.<a class="code" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a> &amp;&amp; !biases.<a class="code" href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>())</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;    {</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;        <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddTransposeConvolution2dLayer: Biases cannot be empty&quot;</span>);</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;    }</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_transpose_convolution2d_layer.xhtml">TransposeConvolution2dLayer</a>&gt;(descriptor, name);</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_transpose_convolution2d_layer.xhtml#a2664044e28e69309ea08ef385fe53903">m_Weight</a> = std::make_unique&lt;ScopedCpuTensorHandle&gt;(weights);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;    <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;    {</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;        layer-&gt;m_Bias = std::make_unique&lt;ScopedCpuTensorHandle&gt;(biases.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>());</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;    }</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;}</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;</div><div class="line"><a name="l02300"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#ab067ba4ee9416d93abb8a52f3dc8feba"> 2300</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#ab067ba4ee9416d93abb8a52f3dc8feba">NetworkImpl::AddTransposeLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a>&amp; transposeDescriptor,</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;{</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_transpose_layer.xhtml">TransposeLayer</a>&gt;(transposeDescriptor, name);</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;}</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;</div><div class="line"><a name="l02306"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a446181daeb60b49cbcfd9f907f974ec1"> 2306</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a446181daeb60b49cbcfd9f907f974ec1">NetworkImpl::AddStackLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a>&amp; stackDescriptor,</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160;                                          <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;{</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_stack_layer.xhtml">StackLayer</a>&gt;(stackDescriptor, name);</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;}</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160;</div><div class="line"><a name="l02313"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a74894d085e78ff80f45fc09dd2381f08"> 2313</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a74894d085e78ff80f45fc09dd2381f08">NetworkImpl::AddStandInLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_stand_in_descriptor.xhtml">StandInDescriptor</a>&amp; desc,</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;{</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_stand_in_layer.xhtml">StandInLayer</a>&gt;(desc, name);</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;}</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160;</div><div class="line"><a name="l02319"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a40067b05f30a3ab65568c826df7a8ea7"> 2319</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a40067b05f30a3ab65568c826df7a8ea7">NetworkImpl::AddQuantizedLstmLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml">QuantizedLstmInputParams</a>&amp; params,</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;{</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_quantized_lstm_layer.xhtml">QuantizedLstmLayer</a>&gt;(name);</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160;</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;    <span class="comment">// InputToX weights</span></div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_quantized_lstm_layer.xhtml#ad3c37b52145c3cf1b4856c0df008a468">m_QuantizedLstmParameters</a>.<a class="code" href="structarmnn_1_1_quantized_lstm_parameters.xhtml#a4d731c5e73638c7cf7e63f65e9f8b550">m_InputToInputWeights</a> =</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a23d6133552ba91cc0571517896792ea4">GetInputToInputWeights</a>());</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_InputToForgetWeights =</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a339c19855613274cf0ea13921af9e5a3">GetInputToForgetWeights</a>());</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_InputToCellWeights =</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a928f70dd19a2b0d3e9b75c27a2099c44">GetInputToCellWeights</a>());</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_InputToOutputWeights =</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a477440c44fe870fb6f2486bf68214395">GetInputToOutputWeights</a>());</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160;    <span class="comment">// RecurrentToX weights</span></div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_RecurrentToInputWeights =</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#ad2e53e6428416a65ae4ba566207cc6bf">GetRecurrentToInputWeights</a>());</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_RecurrentToForgetWeights =</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a8ad69d6d46b4b12f47fbe6032c9b7a18">GetRecurrentToForgetWeights</a>());</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_RecurrentToCellWeights =</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a63e34dd3e41262e750f7a54de8ca81d1">GetRecurrentToCellWeights</a>());</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_RecurrentToOutputWeights =</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a94645f29b99800c2e57acc4832519a53">GetRecurrentToOutputWeights</a>());</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;    <span class="comment">// Bias</span></div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_InputGateBias =</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#aba6d12c9d5671017b6711b80316069ff">GetInputGateBias</a>());</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_ForgetGateBias =</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a715696f29b5376cbb8aaec0b77a092af">GetForgetGateBias</a>());</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_CellBias =</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a89f3c8b72e3a802240156915141de5ca">GetCellBias</a>());</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;    layer-&gt;m_QuantizedLstmParameters.m_OutputGateBias =</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(params.<a class="code" href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a1691bf16df2cabf1a4b82aecbb021f31">GetOutputGateBias</a>());</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160;</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;}</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;</div><div class="line"><a name="l02357"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a2acbae0b9e98c94b843677484775c86a"> 2357</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a2acbae0b9e98c94b843677484775c86a">NetworkImpl::AddQLstmLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml">QLstmDescriptor</a>&amp;  descriptor,</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;                                          <span class="keyword">const</span> <a class="code" href="structarmnn_1_1_lstm_input_params.xhtml">LstmInputParams</a>&amp; params,</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;                                          <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;{</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span> layer = m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_q_lstm_layer.xhtml">QLstmLayer</a>&gt;(descriptor, name);</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;    <span class="comment">// QLstm Basic Parameters</span></div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;    layer-&gt;<a class="code" href="classarmnn_1_1_q_lstm_layer.xhtml#aada2b9060461ecf785d483eee0dc071a">m_BasicParameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_basic_parameters.xhtml#a5a0d8af26a6aad1e5be521ea7dc550eb">m_InputToForgetWeights</a> =</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a31da1ead6794dd64571afdd0b6efc771">m_InputToForgetWeights</a>));</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;    layer-&gt;m_BasicParameters.m_InputToCellWeights =</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a49e11acda22742cbaf6f1b259ead0d84">m_InputToCellWeights</a>));</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;    layer-&gt;m_BasicParameters.m_InputToOutputWeights =</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a6e30c7b3451da3ea9cf4259fb602e6e6">m_InputToOutputWeights</a>));</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;    layer-&gt;m_BasicParameters.m_RecurrentToForgetWeights =</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ae83131e16df1cace69395a5f99bc5ecb">m_RecurrentToForgetWeights</a>));</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;    layer-&gt;m_BasicParameters.m_RecurrentToCellWeights =</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a1759754ccb88ecc9af44f3aae6e244ee">m_RecurrentToCellWeights</a>));</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160;    layer-&gt;m_BasicParameters.m_RecurrentToOutputWeights =</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a56b81ca8ba4b4937e0787e4951f043fc">m_RecurrentToOutputWeights</a>));</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160;    layer-&gt;m_BasicParameters.m_ForgetGateBias =</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ace7a1f1f1041b412b7d8ef82b95ff352">m_ForgetGateBias</a>));</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;    layer-&gt;m_BasicParameters.m_CellBias =</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a4a9d678146f572808a361dbdc5489f38">m_CellBias</a>));</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160;    layer-&gt;m_BasicParameters.m_OutputGateBias =</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;            std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a8c0f6d48705f40c5590dde09be262222">m_OutputGateBias</a>));</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160;    <span class="comment">// QLstm Cifg parameters</span></div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;    <span class="keywordflow">if</span>(!descriptor.m_CifgEnabled)</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;    {</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#affcee5f4ab5994a21bee3b78b4e43de3">m_InputToInputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;        {</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Input To Input Weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;        }</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a435d3651482bbfcc11263b4e4e0c900f">m_RecurrentToInputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;        {</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;                    <span class="stringliteral">&quot;AddQLstmLayer: Recurrent To Input Weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;        }</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9e081a9b94defb30d1558dc912507e0e">m_InputGateBias</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;        {</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Input Gate Bias cannot be NULL&quot;</span>);</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;        }</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;        layer-&gt;m_CifgParameters.m_InputToInputWeights =</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#affcee5f4ab5994a21bee3b78b4e43de3">m_InputToInputWeights</a>));</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;        layer-&gt;m_CifgParameters.m_RecurrentToInputWeights =</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a435d3651482bbfcc11263b4e4e0c900f">m_RecurrentToInputWeights</a>));</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;        layer-&gt;m_CifgParameters.m_InputGateBias =</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9e081a9b94defb30d1558dc912507e0e">m_InputGateBias</a>));</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;    }</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160;    <span class="comment">// QLstm Projection parameters</span></div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;    <span class="keywordflow">if</span>(descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160;    {</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ab03e6e1514f74427916c892f473fe04c">m_ProjectionWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;        {</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Projection Weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;        }</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;        layer-&gt;m_ProjectionParameters.m_ProjectionWeights =</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ab03e6e1514f74427916c892f473fe04c">m_ProjectionWeights</a>));</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160;</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;        <span class="comment">// Projection bias is optional even if projection is enabled</span></div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ab03e6e1514f74427916c892f473fe04c">m_ProjectionWeights</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;        {</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;            layer-&gt;m_ProjectionParameters.m_ProjectionBias =</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;                    std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a44b0e6b16708df7f0d2bbab141688aaa">m_ProjectionBias</a>));</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;        }</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;    }</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;    <span class="comment">// QLstm Peephole params</span></div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;    <span class="keywordflow">if</span>(descriptor.m_PeepholeEnabled)</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;    {</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a35b112e30c3eb153806a2a8c16d178e3">m_CellToForgetWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;        {</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Cell To Forget Weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;        }</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#afe204ca375b74e9a72640c9227918d0a">m_CellToOutputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;        {</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Cell To Output Weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;        }</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;        <span class="keywordflow">if</span>(!descriptor.m_CifgEnabled)</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;        {</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;            <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a484bafa2f8453a7c5a4a00b92a61b006">m_CellToInputWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;            {</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;                <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Cell To Input Weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;            }</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;            layer-&gt;m_PeepholeParameters.m_CellToInputWeights =</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;                    std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a484bafa2f8453a7c5a4a00b92a61b006">m_CellToInputWeights</a>));</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;        }</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;        layer-&gt;m_PeepholeParameters.m_CellToForgetWeights =</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a35b112e30c3eb153806a2a8c16d178e3">m_CellToForgetWeights</a>));</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;        layer-&gt;m_PeepholeParameters.m_CellToOutputWeights =</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#afe204ca375b74e9a72640c9227918d0a">m_CellToOutputWeights</a>));</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160;    }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;    <span class="comment">// QLstm Layer Normalization params</span></div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;    <span class="keywordflow">if</span>(descriptor.m_LayerNormEnabled)</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;    {</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#af0f796fba1a2be9c56b4c9ee534577ee">m_ForgetLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;        {</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Forget layer normalization weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;        }</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ad0b8c32bb5381f4cc999093ba3b98b43">m_CellLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;        {</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Cell layer normalization weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;        }</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;        <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9b18daea2e9f42386055326fd016519a">m_OutputLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;        {</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Output layer normalization weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;        }</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;        <span class="keywordflow">if</span>(!descriptor.m_CifgEnabled)</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;        {</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;            <span class="keywordflow">if</span>(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a0cd848f65ec31778d708852f0042fe37">m_InputLayerNormWeights</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;            {</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;                <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(<span class="stringliteral">&quot;AddQLstmLayer: Input layer normalization weights cannot be NULL&quot;</span>);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;            }</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;            layer-&gt;m_LayerNormParameters.m_InputLayerNormWeights =</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;                    std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a0cd848f65ec31778d708852f0042fe37">m_InputLayerNormWeights</a>));</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;        }</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;        layer-&gt;m_LayerNormParameters.m_ForgetLayerNormWeights =</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#af0f796fba1a2be9c56b4c9ee534577ee">m_ForgetLayerNormWeights</a>));</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;        layer-&gt;m_LayerNormParameters.m_CellLayerNormWeights =</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#ad0b8c32bb5381f4cc999093ba3b98b43">m_CellLayerNormWeights</a>));</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;        layer-&gt;m_LayerNormParameters.m_OutputLayerNormWeights =</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;                std::make_unique&lt;ScopedCpuTensorHandle&gt;(*(params.<a class="code" href="structarmnn_1_1_lstm_input_params.xhtml#a9b18daea2e9f42386055326fd016519a">m_OutputLayerNormWeights</a>));</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;    }</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;    <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;}</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160;</div><div class="line"><a name="l02499"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a1ff7534e1254dfb3ef8288194cca7ce3"> 2499</a></span>&#160;<a class="code" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* <a class="code" href="classarmnn_1_1_network_impl.xhtml#a1ff7534e1254dfb3ef8288194cca7ce3">NetworkImpl::AddLogicalBinaryLayer</a>(<span class="keyword">const</span> <a class="code" href="structarmnn_1_1_logical_binary_descriptor.xhtml">LogicalBinaryDescriptor</a>&amp; logicalBinaryDescriptor,</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160;{</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;    <span class="keywordflow">return</span> m_Graph-&gt;AddLayer&lt;<a class="code" href="classarmnn_1_1_logical_binary_layer.xhtml">LogicalBinaryLayer</a>&gt;(logicalBinaryDescriptor, name);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;}</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160;</div><div class="line"><a name="l02505"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a1163a712898cd2c368ef2e4510fc36c3"> 2505</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#a1163a712898cd2c368ef2e4510fc36c3">NetworkImpl::Accept</a>(<a class="code" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a>&amp; visitor)<span class="keyword"> const</span></div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> layer : <a class="code" href="classarmnn_1_1_network_impl.xhtml#afe0a4f719f9752a405e71878da7012ba">GetGraph</a>())</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;    {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;        layer-&gt;Accept(visitor);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160;    };</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;}</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;</div><div class="line"><a name="l02513"></a><span class="lineno"><a class="line" href="classarmnn_1_1_network_impl.xhtml#a72032c65bf8b8acf09b564b7d80078c5"> 2513</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classarmnn_1_1_network_impl.xhtml#a72032c65bf8b8acf09b564b7d80078c5">NetworkImpl::ExecuteStrategy</a>(<a class="code" href="classarmnn_1_1_i_strategy.xhtml">IStrategy</a>&amp; strategy)<span class="keyword"> const</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> layer : <a class="code" href="classarmnn_1_1_network_impl.xhtml#afe0a4f719f9752a405e71878da7012ba">GetGraph</a>())</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;    {</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;        layer-&gt;ExecuteStrategy(strategy);</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;    };</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160;}</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160;</div><div class="line"><a name="l02521"></a><span class="lineno"><a class="line" href="classarmnn_1_1_optimized_network_impl.xhtml#afc73993a557309c43043aa0592fd7981"> 2521</a></span>&#160;<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#afc73993a557309c43043aa0592fd7981">OptimizedNetworkImpl::OptimizedNetworkImpl</a>(std::unique_ptr&lt;Graph&gt; graph)</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;    : m_Graph(<a class="code" href="namespacestd.xhtml">std</a>::move(graph)), m_Guid(profiling::<a class="code" href="classarmnn_1_1profiling_1_1_profiling_service.xhtml">ProfilingService</a>::GetNextGuid())</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;{</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;}</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;</div><div class="line"><a name="l02526"></a><span class="lineno"><a class="line" href="classarmnn_1_1_optimized_network_impl.xhtml#a9a2e9e1491ef82892e7ea2308957ff44"> 2526</a></span>&#160;<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#afc73993a557309c43043aa0592fd7981">OptimizedNetworkImpl::OptimizedNetworkImpl</a>(std::unique_ptr&lt;Graph&gt; graph, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">ModelOptions</a>&amp; modelOptions)</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;    : m_Graph(<a class="code" href="namespacestd.xhtml">std</a>::move(graph)), m_Guid(profiling::<a class="code" href="classarmnn_1_1profiling_1_1_profiling_service.xhtml">ProfilingService</a>::GetNextGuid()), m_ModelOptions(modelOptions)</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;{</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;}</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;</div><div class="line"><a name="l02531"></a><span class="lineno"><a class="line" href="classarmnn_1_1_optimized_network_impl.xhtml#a06d0b70cbc134b412ff7715d9db1617b"> 2531</a></span>&#160;<a class="code" href="classarmnn_1_1_optimized_network_impl.xhtml#a06d0b70cbc134b412ff7715d9db1617b">OptimizedNetworkImpl::~OptimizedNetworkImpl</a>()</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;{</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160;}</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;} <span class="comment">// namespace armnn</span></div><div class="ttc" id="classarmnn_1_1_constant_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_constant_layer.xhtml">armnn::ConstantLayer</a></div><div class="ttdoc">A layer that the constant data can be bound to. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_layer_8hpp_source.xhtml#l00015">ConstantLayer.hpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a64ddffb38fbe5b78ec92b753cd4bd0ba"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a64ddffb38fbe5b78ec92b753cd4bd0ba">armnn::optimizations::SquashEqualPermuteSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, SquashEqualSiblingsImpl&lt; PermuteLayer &gt; &gt; SquashEqualPermuteSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00067">SquashEqualSiblings.hpp:67</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00563">Network.cpp:563</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_a2387033802383edbdc95f9bbb12a707e"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#a2387033802383edbdc95f9bbb12a707e">armnn::Graph::begin</a></div><div class="ttdeci">Iterator begin()</div><div class="ttdoc">Returns iterator pointing to the beginning of the list. Lowercase for range-based for loops...</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00162">Graph.hpp:162</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_af13795cdf49e63d8bc3cb409592cdb9d"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#af13795cdf49e63d8bc3cb409592cdb9d">armnn::INetwork::AddSubtractionLayer</a></div><div class="ttdeci">IConnectableLayer * AddSubtractionLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a subtraction layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00376">Network.cpp:376</a></div></div>
<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_xhtml_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">armnn::Convolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00454">Descriptors.hpp:454</a></div></div>
<div class="ttc" id="_device_spec_8hpp_xhtml"><div class="ttname"><a href="_device_spec_8hpp.xhtml">DeviceSpec.hpp</a></div></div>
<div class="ttc" id="_ignore_unused_8hpp_xhtml"><div class="ttname"><a href="_ignore_unused_8hpp.xhtml">IgnoreUnused.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ae0cfae1ea51669892608a1a060d24fa0"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ae0cfae1ea51669892608a1a060d24fa0">armnn::NetworkImpl::AddReduceLayer</a></div><div class="ttdeci">IConnectableLayer * AddReduceLayer(const ReduceDescriptor &amp;reduceDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01984">Network.cpp:1984</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">armnn::ComparisonOperation::Greater</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a71194277c60153a5f86539f5d39f01db"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a71194277c60153a5f86539f5d39f01db">armnn::OptimizerOptions::m_ModelOptions</a></div><div class="ttdeci">ModelOptions m_ModelOptions</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00168">INetwork.hpp:168</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ae2f5193942457daafa733998f3e61449"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ae2f5193942457daafa733998f3e61449">armnn::NetworkImpl::AddRsqrtLayer</a></div><div class="ttdeci">IConnectableLayer * AddRsqrtLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02246">Network.cpp:2246</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_aa51350bdd4976f3dd5a4e9d00a906b2c"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#aa51350bdd4976f3dd5a4e9d00a906b2c">armnn::INetwork::AddActivationLayer</a></div><div class="ttdeci">IConnectableLayer * AddActivationLayer(const ActivationDescriptor &amp;activationDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds an activation layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00218">Network.cpp:218</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_bilinear_descriptor_xhtml_a4022d5107338aaf5eb7abebf78a1360b"><div class="ttname"><a href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a4022d5107338aaf5eb7abebf78a1360b">armnn::ResizeBilinearDescriptor::m_HalfPixelCenters</a></div><div class="ttdeci">bool m_HalfPixelCenters</div><div class="ttdoc">Half Pixel Centers. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00790">Descriptors.hpp:790</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_bilinear_descriptor_xhtml_ae1a4b3b6c60552509b89747cebb900a2"><div class="ttname"><a href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#ae1a4b3b6c60552509b89747cebb900a2">armnn::ResizeBilinearDescriptor::m_AlignCorners</a></div><div class="ttdeci">bool m_AlignCorners</div><div class="ttdoc">Aligned corners. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00788">Descriptors.hpp:788</a></div></div>
<div class="ttc" id="classarmnn_1_1_minimum_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_minimum_layer.xhtml">armnn::MinimumLayer</a></div><div class="ttdoc">This layer represents a minimum operation. </div><div class="ttdef"><b>Definition:</b> <a href="_minimum_layer_8hpp_source.xhtml#l00014">MinimumLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_ac043d9a6e3f861fc6aa057ff95e56f18"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043d9a6e3f861fc6aa057ff95e56f18">armnn::ITensorHandleFactory::DeferredFactoryId</a></div><div class="ttdeci">static const FactoryId DeferredFactoryId</div><div class="ttdoc">Use the workload factory to create the tensor handle. </div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00046">ITensorHandleFactory.hpp:46</a></div></div>
<div class="ttc" id="classarmnn_1_1_splitter_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_splitter_layer.xhtml">armnn::SplitterLayer</a></div><div class="ttdoc">This layer represents a split operation. </div><div class="ttdef"><b>Definition:</b> <a href="_splitter_layer_8hpp_source.xhtml#l00013">SplitterLayer.hpp:13</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a224df72b3d7a3bba8609bc167286e3f7"><div class="ttname"><a href="namespacearmnn.xhtml#a224df72b3d7a3bba8609bc167286e3f7">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetworkImpl *optNetObjPtr, BackendSettings &amp;backendSettings, Graph::Iterator &amp;firstLayer, Graph::Iterator &amp;lastLayer, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00869">Network.cpp:869</a></div></div>
<div class="ttc" id="classarmnn_1_1_lstm_layer_xhtml_a8838b317568861294a9df608221f185e"><div class="ttname"><a href="classarmnn_1_1_lstm_layer.xhtml#a8838b317568861294a9df608221f185e">armnn::LstmLayer::m_BasicParameters</a></div><div class="ttdeci">LstmBasicParameters m_BasicParameters</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_layer_8hpp_source.xhtml#l00081">LstmLayer.hpp:81</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_ab03e6e1514f74427916c892f473fe04c"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#ab03e6e1514f74427916c892f473fe04c">armnn::LstmInputParams::m_ProjectionWeights</a></div><div class="ttdeci">const ConstTensor * m_ProjectionWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00055">LstmParams.hpp:55</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_a50b562d4a4edc64d7d8abcca056f0b8c"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#a50b562d4a4edc64d7d8abcca056f0b8c">armnn::OutputSlot::GetConnections</a></div><div class="ttdeci">const std::vector&lt; InputSlot * &gt; &amp; GetConnections() const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00125">Layer.hpp:125</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a94645f29b99800c2e57acc4832519a53"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a94645f29b99800c2e57acc4832519a53">armnn::QuantizedLstmInputParams::GetRecurrentToOutputWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetRecurrentToOutputWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00093">QuantizedLstmParams.hpp:93</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_afc0c63ca8db8957b58826f6d7bd231b2"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#afc0c63ca8db8957b58826f6d7bd231b2">armnn::BackendRegistry::GetFactory</a></div><div class="ttdeci">FactoryFunction GetFactory(const BackendId &amp;id) const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00054">BackendRegistry.cpp:54</a></div></div>
<div class="ttc" id="classarmnn_1_1_batch_normalization_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_batch_normalization_layer.xhtml">armnn::BatchNormalizationLayer</a></div><div class="ttdoc">This layer represents a batch normalization operation. </div><div class="ttdef"><b>Definition:</b> <a href="_batch_normalization_layer_8hpp_source.xhtml#l00015">BatchNormalizationLayer.hpp:15</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a55bd1bb29076dc45bb335e7322781463"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a55bd1bb29076dc45bb335e7322781463">armnn::INetwork::Destroy</a></div><div class="ttdeci">static void Destroy(INetwork *network)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00515">Network.cpp:515</a></div></div>
<div class="ttc" id="structarmnn_1_1_views_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.xhtml">armnn::ViewsDescriptor</a></div><div class="ttdoc">A ViewsDescriptor for the SplitterLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00206">Descriptors.hpp:206</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_connectable_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_connectable_layer.xhtml">armnn::IConnectableLayer</a></div><div class="ttdoc">Interface for a layer that is connectable to other layers via InputSlots and OutputSlots. </div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00062">INetwork.hpp:62</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa31127c77d2117f78d43ca2958dcae19"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa31127c77d2117f78d43ca2958dcae19">armnn::optimizations::OptimizeInversePermutes</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, PermuteLayer, OptimizeInversePermutesImpl&lt; PermuteLayer &gt; &gt; OptimizeInversePermutes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.xhtml#l00043">OptimizeInversePermutes.hpp:43</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_aa262a54803b53b8198cd60e7af2f60e4"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#aa262a54803b53b8198cd60e7af2f60e4">armnn::ITensorHandleFactory::SupportsMapUnmap</a></div><div class="ttdeci">virtual bool SupportsMapUnmap() const final</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00083">ITensorHandleFactory.hpp:83</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a4a9d678146f572808a361dbdc5489f38"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a4a9d678146f572808a361dbdc5489f38">armnn::LstmInputParams::m_CellBias</a></div><div class="ttdeci">const ConstTensor * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00053">LstmParams.hpp:53</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_abf625e50a5eaeafce5b39580dc95a9d3"><div class="ttname"><a href="namespacearmnn.xhtml#abf625e50a5eaeafce5b39580dc95a9d3">armnn::InsertConvertFp32ToFp16LayersAfter</a></div><div class="ttdeci">std::vector&lt; ConvertFp32ToFp16Layer * &gt; InsertConvertFp32ToFp16LayersAfter(Graph &amp;graph, Layer &amp;layer)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.xhtml#l00201">NetworkUtils.cpp:201</a></div></div>
<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00506">Descriptors.hpp:506</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a72032c65bf8b8acf09b564b7d80078c5"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a72032c65bf8b8acf09b564b7d80078c5">armnn::INetwork::ExecuteStrategy</a></div><div class="ttdeci">void ExecuteStrategy(IStrategy &amp;strategy) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00500">Network.cpp:500</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_a3f80ddd1f76ed4ad599e0d1a00659ee5"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">armnn::OutputSlot::SetEdgeStrategy</a></div><div class="ttdeci">void SetEdgeStrategy(unsigned int connectionIndex, EdgeStrategy strategy)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.xhtml#l00181">Layer.cpp:181</a></div></div>
<div class="ttc" id="classarmnn_1_1_quantized_lstm_layer_xhtml_ad3c37b52145c3cf1b4856c0df008a468"><div class="ttname"><a href="classarmnn_1_1_quantized_lstm_layer.xhtml#ad3c37b52145c3cf1b4856c0df008a468">armnn::QuantizedLstmLayer::m_QuantizedLstmParameters</a></div><div class="ttdeci">QuantizedLstmParameters m_QuantizedLstmParameters</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_layer_8hpp_source.xhtml#l00049">QuantizedLstmLayer.hpp:49</a></div></div>
<div class="ttc" id="classarmnn_1_1_transpose_convolution2d_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_transpose_convolution2d_layer.xhtml">armnn::TransposeConvolution2dLayer</a></div><div class="ttdoc">This layer represents a 2D transpose convolution operation. </div><div class="ttdef"><b>Definition:</b> <a href="_transpose_convolution2d_layer_8hpp_source.xhtml#l00015">TransposeConvolution2dLayer.hpp:15</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimized_network_impl_xhtml_aff3fde909d22ed157046682e70129259"><div class="ttname"><a href="classarmnn_1_1_optimized_network_impl.xhtml#aff3fde909d22ed157046682e70129259">armnn::OptimizedNetworkImpl::PrintGraph</a></div><div class="ttdeci">virtual Status PrintGraph()</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00552">Network.cpp:552</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a></div><div class="ttdoc">No strategy has been defined. Used internally to verify integrity of optimizations. </div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad31c56533e4f9f9f51719599fbfcf7bb"><div class="ttname"><a href="namespacearmnn.xhtml#ad31c56533e4f9f9f51719599fbfcf7bb">armnn::InsertConvertFp16ToFp32LayersBefore</a></div><div class="ttdeci">std::vector&lt; ConvertFp16ToFp32Layer * &gt; InsertConvertFp16ToFp32LayersBefore(Graph &amp;graph, Layer &amp;layer, bool expectCorrectInputType)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.xhtml#l00129">NetworkUtils.cpp:129</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ad97411f1fcb2c30c212483d8c673506f"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ad97411f1fcb2c30c212483d8c673506f">armnn::NetworkImpl::AddResizeLayer</a></div><div class="ttdeci">IConnectableLayer * AddResizeLayer(const ResizeDescriptor &amp;resizeDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02004">Network.cpp:2004</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimized_network_impl_xhtml_a06d0b70cbc134b412ff7715d9db1617b"><div class="ttname"><a href="classarmnn_1_1_optimized_network_impl.xhtml#a06d0b70cbc134b412ff7715d9db1617b">armnn::OptimizedNetworkImpl::~OptimizedNetworkImpl</a></div><div class="ttdeci">virtual ~OptimizedNetworkImpl()</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02531">Network.cpp:2531</a></div></div>
<div class="ttc" id="structarmnn_1_1_transpose_convolution2d_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">armnn::TransposeConvolution2dDescriptor</a></div><div class="ttdoc">A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01213">Descriptors.hpp:1213</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00187">Tensor.hpp:187</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a41fd7b56923d5625bac2cbfebed1a393"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a41fd7b56923d5625bac2cbfebed1a393">armnn::INetwork::AddTransposeConvolution2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddTransposeConvolution2dLayer(const TransposeConvolution2dDescriptor &amp;descriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdoc">Adds a 2D transpose convolution layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00450">Network.cpp:450</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a0b426a3feffc76e66d73b5761806e899"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a0b426a3feffc76e66d73b5761806e899">armnn::NetworkImpl::AddQuantizeLayer</a></div><div class="ttdeci">IConnectableLayer * AddQuantizeLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02220">Network.cpp:2220</a></div></div>
<div class="ttc" id="_utils_8hpp_xhtml"><div class="ttname"><a href="_utils_8hpp.xhtml">Utils.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ae3ef3b97542241d331a38613ae189f3e"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ae3ef3b97542241d331a38613ae189f3e">armnn::NetworkImpl::AddFullyConnectedLayer</a></div><div class="ttdeci">IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &amp;fullyConnectedDescriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01733">Network.cpp:1733</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aa7427025a851113a492de0b68b23d22a"><div class="ttname"><a href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">armnn::MakeOptimizations</a></div><div class="ttdeci">Optimizer::Optimizations MakeOptimizations(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.xhtml#l00043">Optimizer.hpp:43</a></div></div>
<div class="ttc" id="classarmnn_1_1_fully_connected_layer_xhtml_a2664044e28e69309ea08ef385fe53903"><div class="ttname"><a href="classarmnn_1_1_fully_connected_layer.xhtml#a2664044e28e69309ea08ef385fe53903">armnn::FullyConnectedLayer::m_Weight</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_Weight</div><div class="ttdoc">A unique pointer to store Weight values. </div><div class="ttdef"><b>Definition:</b> <a href="_fully_connected_layer_8hpp_source.xhtml#l00019">FullyConnectedLayer.hpp:19</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_xhtml"><div class="ttname"><a href="classarmnn_1_1_optional.xhtml">armnn::Optional</a></div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00270">Optional.hpp:270</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a2acbae0b9e98c94b843677484775c86a"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a2acbae0b9e98c94b843677484775c86a">armnn::INetwork::AddQLstmLayer</a></div><div class="ttdeci">IConnectableLayer * AddQLstmLayer(const QLstmDescriptor &amp;descriptor, const LstmInputParams &amp;params, const char *name=nullptr)</div><div class="ttdoc">Add a QLstm layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00482">Network.cpp:482</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">armnn::ComparisonOperation::Equal</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a25563024ec66627ee83727244a53e944"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a25563024ec66627ee83727244a53e944">armnn::NetworkImpl::AddRankLayer</a></div><div class="ttdeci">IConnectableLayer * AddRankLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01979">Network.cpp:1979</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml">armnn::IBackendInternal</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00068">IBackendInternal.hpp:68</a></div></div>
<div class="ttc" id="structarmnn_1_1_reshape_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_reshape_descriptor.xhtml">armnn::ReshapeDescriptor</a></div><div class="ttdoc">A ReshapeDescriptor for the ReshapeLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00832">Descriptors.hpp:832</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a8d9f52bbb69750456acca06988beabda"><div class="ttname"><a href="namespacearmnn.xhtml#a8d9f52bbb69750456acca06988beabda">armnn::CalculateSlotOption</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOption(BackendsMap &amp;backends, OutputSlot &amp;outputSlot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01239">Network.cpp:1239</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a2f9d1a13be2ac1c4213729a0ef181fc0"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a2f9d1a13be2ac1c4213729a0ef181fc0">armnn::optimizations::OptimizeInverseTransposes</a></div><div class="ttdeci">OptimizeForConnection&lt; TransposeLayer, TransposeLayer, OptimizeInversePermutesImpl&lt; TransposeLayer &gt; &gt; OptimizeInverseTransposes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.xhtml#l00045">OptimizeInversePermutes.hpp:45</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a39f1b38d89c4de186742eafcbb3b1319"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a39f1b38d89c4de186742eafcbb3b1319">armnn::NetworkImpl::AddAdditionLayer</a></div><div class="ttdeci">IConnectableLayer * AddAdditionLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01947">Network.cpp:1947</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a8ad69d6d46b4b12f47fbe6032c9b7a18"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a8ad69d6d46b4b12f47fbe6032c9b7a18">armnn::QuantizedLstmInputParams::GetRecurrentToForgetWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetRecurrentToForgetWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00083">QuantizedLstmParams.hpp:83</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a98f54d4391347d517c7a7869e7707203"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a98f54d4391347d517c7a7869e7707203">armnn::optimizations::TransposeAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; TransposeLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl&lt; TransposeLayer &gt; &gt; TransposeAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.xhtml#l00104">PermuteAndBatchToSpaceAsDepthToSpace.hpp:104</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_afe204ca375b74e9a72640c9227918d0a"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#afe204ca375b74e9a72640c9227918d0a">armnn::LstmInputParams::m_CellToOutputWeights</a></div><div class="ttdeci">const ConstTensor * m_CellToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00050">LstmParams.hpp:50</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a56e54a818166a2f4b2c1a7f76a3629ff"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a56e54a818166a2f4b2c1a7f76a3629ff">armnn::optimizations::FuseBatchNormIntoDepthwiseConvolution2DFloat32</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; DepthwiseConvolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; DepthwiseConvolution2dLayer, armnn::DataType::Float32 &gt; &gt; FuseBatchNormIntoDepthwiseConvolution2DFloat32</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00197">FuseBatchNorm.hpp:197</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a1aa567f46c30960851c02847dc7b4215"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a1aa567f46c30960851c02847dc7b4215">armnn::INetwork::AddConstantLayer</a></div><div class="ttdeci">IConnectableLayer * AddConstantLayer(const ConstTensor &amp;input, const char *name=nullptr)</div><div class="ttdoc">Adds a layer with no inputs and a single output, which always corresponds to the passed in constant t...</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00331">Network.cpp:331</a></div></div>
<div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
<div class="ttc" id="_workload_factory_8hpp_xhtml"><div class="ttname"><a href="_workload_factory_8hpp.xhtml">WorkloadFactory.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00152">Tensor.hpp:152</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a58f85a122022527a525318473f93d4ef"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a58f85a122022527a525318473f93d4ef">armnn::INetwork::AddDepthwiseConvolution2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddDepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor &amp;convolution2dDescriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdoc">Adds a 2D depthwise convolution layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00115">Network.cpp:115</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ab46c7f5f4736d550ab0e5e05a0fff4a9"><div class="ttname"><a href="namespacearmnn.xhtml#ab46c7f5f4736d550ab0e5e05a0fff4a9">armnn::CalculateSlotOptionForOutput</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOptionForOutput(BackendsMap &amp;backends, OutputSlot &amp;slot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01229">Network.cpp:1229</a></div></div>
<div class="ttc" id="structarmnn_1_1_comparison_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_comparison_descriptor.xhtml">armnn::ComparisonDescriptor</a></div><div class="ttdoc">A ComparisonDescriptor for the ComparisonLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00078">Descriptors.hpp:78</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a030e8e7c1f6980ec9b2ac06b683ee74e"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a030e8e7c1f6980ec9b2ac06b683ee74e">armnn::NetworkImpl::AddAbsLayer</a></div><div class="ttdeci">IConnectableLayer * AddAbsLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01942">Network.cpp:1942</a></div></div>
<div class="ttc" id="classarmnn_1_1_depthwise_convolution2d_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml">armnn::DepthwiseConvolution2dLayer</a></div><div class="ttdoc">This layer represents a depthwise convolution 2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_depthwise_convolution2d_layer_8hpp_source.xhtml#l00015">DepthwiseConvolution2dLayer.hpp:15</a></div></div>
<div class="ttc" id="classarmnn_utils_1_1_floating_point_converter_xhtml_af9e9df90cb6319b0406acf9a3bc27667"><div class="ttname"><a href="classarmnn_utils_1_1_floating_point_converter.xhtml#af9e9df90cb6319b0406acf9a3bc27667">armnnUtils::FloatingPointConverter::ConvertBFloat16ToFloat32</a></div><div class="ttdeci">static void ConvertBFloat16ToFloat32(const void *srcBFloat16Buffer, size_t numElements, float *dstFloat32Buffer)</div><div class="ttdef"><b>Definition:</b> <a href="_floating_point_converter_8cpp_source.xhtml#l00061">FloatingPointConverter.cpp:61</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a5ee4a1cca55f69b31e625c786655ed1a"><div class="ttname"><a href="namespacearmnn.xhtml#a5ee4a1cca55f69b31e625c786655ed1a">armnn::RequiresCopy</a></div><div class="ttdeci">bool RequiresCopy(ITensorHandleFactory::FactoryId src, ITensorHandleFactory::FactoryId dst, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01127">Network.cpp:1127</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ae913b4351b7027f37eb5657dd7867733"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ae913b4351b7027f37eb5657dd7867733">armnn::NetworkImpl::AddPooling2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddPooling2dLayer(const Pooling2dDescriptor &amp;pooling2dDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01884">Network.cpp:1884</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a55e83c091dbe02c2ca6d3b33a902ae02"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a55e83c091dbe02c2ca6d3b33a902ae02">armnn::NetworkImpl::NetworkImpl</a></div><div class="ttdeci">NetworkImpl(NetworkOptions networkOptions={})</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01667">Network.cpp:1667</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a5210b3df77e7a51ab369b577de821aa2"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a5210b3df77e7a51ab369b577de821aa2">armnn::INetwork::AddStackLayer</a></div><div class="ttdeci">IConnectableLayer * AddStackLayer(const StackDescriptor &amp;descriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a stack layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00464">Network.cpp:464</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_bilinear_descriptor_xhtml_adcf5037208faac36c0788239a073f75c"><div class="ttname"><a href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#adcf5037208faac36c0788239a073f75c">armnn::ResizeBilinearDescriptor::m_TargetWidth</a></div><div class="ttdeci">uint32_t m_TargetWidth</div><div class="ttdoc">Target width value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00782">Descriptors.hpp:782</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_bilinear_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::ResizeBilinearDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00786">Descriptors.hpp:786</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a5b6893cda5b69359a4244c06054da18f"><div class="ttname"><a href="namespacearmnn.xhtml#a5b6893cda5b69359a4244c06054da18f">armnn::ModelOptions</a></div><div class="ttdeci">std::vector&lt; BackendOptions &gt; ModelOptions</div><div class="ttdef"><b>Definition:</b> <a href="_backend_options_8hpp_source.xhtml#l00017">BackendOptions.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a1163a712898cd2c368ef2e4510fc36c3"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a1163a712898cd2c368ef2e4510fc36c3">armnn::INetwork::Accept</a></div><div class="ttdeci">void Accept(ILayerVisitor &amp;visitor) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00495">Network.cpp:495</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a89f3c8b72e3a802240156915141de5ca"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a89f3c8b72e3a802240156915141de5ca">armnn::QuantizedLstmInputParams::GetCellBias</a></div><div class="ttdeci">const ConstTensor &amp; GetCellBias() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00108">QuantizedLstmParams.hpp:108</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a0f19808bdada45222e72edf7671a275a"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a0f19808bdada45222e72edf7671a275a">armnn::NetworkImpl::AddMergeLayer</a></div><div class="ttdeci">IConnectableLayer * AddMergeLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02263">Network.cpp:2263</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ae2f5193942457daafa733998f3e61449"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ae2f5193942457daafa733998f3e61449">armnn::INetwork::AddRsqrtLayer</a></div><div class="ttdeci">IConnectableLayer * AddRsqrtLayer(const char *name=nullptr)</div><div class="ttdoc">Add Reciprocal of square root layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00423">Network.cpp:423</a></div></div>
<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.xhtml">armnn::Convolution2dDescriptor</a></div><div class="ttdoc">A Convolution2dDescriptor for the Convolution2dLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00408">Descriptors.hpp:408</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_a7ddaf04177053a536f0e7be83a642bc6"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#a7ddaf04177053a536f0e7be83a642bc6">armnn::OutputSlot::GetOwningLayer</a></div><div class="ttdeci">Layer &amp; GetOwningLayer() const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00115">Layer.hpp:115</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a></div><div class="ttdoc">Source backends tensor data can be exported to destination backend tensor without copy...</div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a0b426a3feffc76e66d73b5761806e899"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a0b426a3feffc76e66d73b5761806e899">armnn::INetwork::AddQuantizeLayer</a></div><div class="ttdeci">IConnectableLayer * AddQuantizeLayer(const char *name=nullptr)</div><div class="ttdoc">Add a quantize layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00397">Network.cpp:397</a></div></div>
<div class="ttc" id="classarmnn_1_1_convert_fp16_to_fp32_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">armnn::ConvertFp16ToFp32Layer</a></div><div class="ttdoc">This layer converts data type Float 16 to Float 32. </div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp16_to_fp32_layer_8hpp_source.xhtml#l00014">ConvertFp16ToFp32Layer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a4bfd8dee1a0315b651e977c672c0847c"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a4bfd8dee1a0315b651e977c672c0847c">armnn::INetwork::AddMinimumLayer</a></div><div class="ttdeci">IConnectableLayer * AddMinimumLayer(const char *name=nullptr)</div><div class="ttdoc">Add a Minimum layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00408">Network.cpp:408</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a40067b05f30a3ab65568c826df7a8ea7"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a40067b05f30a3ab65568c826df7a8ea7">armnn::NetworkImpl::AddQuantizedLstmLayer</a></div><div class="ttdeci">IConnectableLayer * AddQuantizedLstmLayer(const QuantizedLstmInputParams &amp;params, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02319">Network.cpp:2319</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_aaff51346dadec2c1430abf007fed4cc9"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#aaff51346dadec2c1430abf007fed4cc9">armnn::INetwork::AddL2NormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddL2NormalizationLayer(const L2NormalizationDescriptor &amp;desc, const char *name=nullptr)</div><div class="ttdoc">Adds an L2 normalization layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00319">Network.cpp:319</a></div></div>
<div class="ttc" id="structarmnn_1_1_transpose_convolution2d_descriptor_xhtml_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">armnn::TransposeConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01254">Descriptors.hpp:1254</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a484bafa2f8453a7c5a4a00b92a61b006"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a484bafa2f8453a7c5a4a00b92a61b006">armnn::LstmInputParams::m_CellToInputWeights</a></div><div class="ttdeci">const ConstTensor * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00048">LstmParams.hpp:48</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a1aa567f46c30960851c02847dc7b4215"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a1aa567f46c30960851c02847dc7b4215">armnn::NetworkImpl::AddConstantLayer</a></div><div class="ttdeci">IConnectableLayer * AddConstantLayer(const ConstTensor &amp;input, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02027">Network.cpp:2027</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a095a9b700dc857edc23c5d3bf088919f"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a095a9b700dc857edc23c5d3bf088919f">armnn::NetworkImpl::AddElementwiseUnaryLayer</a></div><div class="ttdeci">IConnectableLayer * AddElementwiseUnaryLayer(const ElementwiseUnaryDescriptor &amp;elementwiseUnaryDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01699">Network.cpp:1699</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a0f19808bdada45222e72edf7671a275a"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a0f19808bdada45222e72edf7671a275a">armnn::INetwork::AddMergeLayer</a></div><div class="ttdeci">IConnectableLayer * AddMergeLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a merge layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00246">Network.cpp:246</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_profiling_guid_xhtml"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_profiling_guid.xhtml">armnn::profiling::ProfilingGuid</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00291">Types.hpp:291</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a11f49d84f0cfd8df65f4d5206cd43b6d"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a11f49d84f0cfd8df65f4d5206cd43b6d">armnn::INetwork::AddPermuteLayer</a></div><div class="ttdeci">IConnectableLayer * AddPermuteLayer(const PermuteDescriptor &amp;permuteDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a permute layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00200">Network.cpp:200</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_descriptor_xhtml_a869254cb56968986a78a79e1d6d4a86b"><div class="ttname"><a href="structarmnn_1_1_resize_descriptor.xhtml#a869254cb56968986a78a79e1d6d4a86b">armnn::ResizeDescriptor::m_Method</a></div><div class="ttdeci">ResizeMethod m_Method</div><div class="ttdoc">The Interpolation method to use (Bilinear, NearestNeighbor). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00821">Descriptors.hpp:821</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_aff3fde909d22ed157046682e70129259"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#aff3fde909d22ed157046682e70129259">armnn::INetwork::PrintGraph</a></div><div class="ttdeci">Status PrintGraph()</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00045">Network.cpp:45</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a6c5376053e1f875776d7bc36fd0b7d45"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a6c5376053e1f875776d7bc36fd0b7d45">armnn::NetworkImpl::AddNormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddNormalizationLayer(const NormalizationDescriptor &amp;normalizationDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01902">Network.cpp:1902</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_aff3fde909d22ed157046682e70129259"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#aff3fde909d22ed157046682e70129259">armnn::NetworkImpl::PrintGraph</a></div><div class="ttdeci">Status PrintGraph()</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01676">Network.cpp:1676</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a8de6b047fcaff95df48dca683e1f3aa4"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a8de6b047fcaff95df48dca683e1f3aa4">armnn::INetwork::AddSliceLayer</a></div><div class="ttdeci">IConnectableLayer * AddSliceLayer(const SliceDescriptor &amp;sliceDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a slice layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00230">Network.cpp:230</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimizer_xhtml_a1f48ba622b76ea04d15c9b62f642bf08"><div class="ttname"><a href="classarmnn_1_1_optimizer.xhtml#a1f48ba622b76ea04d15c9b62f642bf08">armnn::Optimizer::Pass</a></div><div class="ttdeci">static void Pass(Graph &amp;graph, const Optimizations &amp;optimizations)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8cpp_source.xhtml#l00016">Optimizer.cpp:16</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ab40bb51feca46649eb9d00522bfe51f6"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ab40bb51feca46649eb9d00522bfe51f6">armnn::optimizations::FuseBatchNormIntoDepthwiseConvolution2DFloat16</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; DepthwiseConvolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; DepthwiseConvolution2dLayer, armnn::DataType::Float16 &gt; &gt; FuseBatchNormIntoDepthwiseConvolution2DFloat16</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00202">FuseBatchNorm.hpp:202</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a9e081a9b94defb30d1558dc912507e0e"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a9e081a9b94defb30d1558dc912507e0e">armnn::LstmInputParams::m_InputGateBias</a></div><div class="ttdeci">const ConstTensor * m_InputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00051">LstmParams.hpp:51</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a435ea88480b8645026dd45fd692663a1"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a435ea88480b8645026dd45fd692663a1">armnn::INetwork::AddFloorLayer</a></div><div class="ttdeci">IConnectableLayer * AddFloorLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a floor layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00355">Network.cpp:355</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ae913b4351b7027f37eb5657dd7867733"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ae913b4351b7027f37eb5657dd7867733">armnn::INetwork::AddPooling2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddPooling2dLayer(const Pooling2dDescriptor &amp;pooling2dDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a pooling layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00212">Network.cpp:212</a></div></div>
<div class="ttc" id="classarmnn_1_1_space_to_depth_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_space_to_depth_layer.xhtml">armnn::SpaceToDepthLayer</a></div><div class="ttdoc">This layer represents a SpaceToDepth operation. </div><div class="ttdef"><b>Definition:</b> <a href="_space_to_depth_layer_8hpp_source.xhtml#l00014">SpaceToDepthLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ad4726f9b7dd11db250d2a494a8a39494"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ad4726f9b7dd11db250d2a494a8a39494">armnn::NetworkImpl::AddMeanLayer</a></div><div class="ttdeci">IConnectableLayer * AddMeanLayer(const MeanDescriptor &amp;meanDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02210">Network.cpp:2210</a></div></div>
<div class="ttc" id="classarmnn_1_1_reshape_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_reshape_layer.xhtml">armnn::ReshapeLayer</a></div><div class="ttdoc">This layer represents a reshape operation. </div><div class="ttdef"><b>Definition:</b> <a href="_reshape_layer_8hpp_source.xhtml#l00015">ReshapeLayer.hpp:15</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">armnn::LayerType::ConvertFp32ToFp16</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a72032c65bf8b8acf09b564b7d80078c5"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a72032c65bf8b8acf09b564b7d80078c5">armnn::NetworkImpl::ExecuteStrategy</a></div><div class="ttdeci">void ExecuteStrategy(IStrategy &amp;strategy) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02513">Network.cpp:2513</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_parameters_xhtml_a4d731c5e73638c7cf7e63f65e9f8b550"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_parameters.xhtml#a4d731c5e73638c7cf7e63f65e9f8b550">armnn::QuantizedLstmParameters::m_InputToInputWeights</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_InputToInputWeights</div><div class="ttdoc">A unique pointer to represent 2D weights tensor with dimensions [outputSize, inputSize] (QAsymm8)...</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_layer_8hpp_source.xhtml#l00017">QuantizedLstmLayer.hpp:17</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a8a81178ddcebb93ec0c35b6e6284273c"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a8a81178ddcebb93ec0c35b6e6284273c">armnn::optimizations::FuseBatchNormIntoConvolution2DFloat16</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; Convolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; Convolution2dLayer, armnn::DataType::Float16 &gt; &gt; FuseBatchNormIntoConvolution2DFloat16</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00192">FuseBatchNorm.hpp:192</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa52c06792e18dc13030e82476f706f9e"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa52c06792e18dc13030e82476f706f9e">armnn::optimizations::FuseBatchNormIntoConvolution2DFloat32</a></div><div class="ttdeci">OptimizeForExclusiveConnection&lt; Convolution2dLayer, BatchNormalizationLayer, FuseBatchNorm&lt; Convolution2dLayer, armnn::DataType::Float32 &gt; &gt; FuseBatchNormIntoConvolution2DFloat32</div><div class="ttdef"><b>Definition:</b> <a href="_fuse_batch_norm_8hpp_source.xhtml#l00187">FuseBatchNorm.hpp:187</a></div></div>
<div class="ttc" id="_logging_8hpp_xhtml_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.xhtml#l00202">Logging.hpp:202</a></div></div>
<div class="ttc" id="structarmnn_1_1_q_lstm_basic_parameters_xhtml_a5a0d8af26a6aad1e5be521ea7dc550eb"><div class="ttname"><a href="structarmnn_1_1_q_lstm_basic_parameters.xhtml#a5a0d8af26a6aad1e5be521ea7dc550eb">armnn::QLstmBasicParameters::m_InputToForgetWeights</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_InputToForgetWeights</div><div class="ttdoc">A unique pointer to represent 2D weights tensor with dimensions [num_units, inputSize] (QSymmS8)...</div><div class="ttdef"><b>Definition:</b> <a href="_q_lstm_layer_8hpp_source.xhtml#l00017">QLstmLayer.hpp:17</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a4bfd8dee1a0315b651e977c672c0847c"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a4bfd8dee1a0315b651e977c672c0847c">armnn::NetworkImpl::AddMinimumLayer</a></div><div class="ttdeci">IConnectableLayer * AddMinimumLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01931">Network.cpp:1931</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_afc94c35c0bbe852a60046bf2e756b2e0"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#afc94c35c0bbe852a60046bf2e756b2e0">armnn::INetwork::AddFillLayer</a></div><div class="ttdeci">IConnectableLayer * AddFillLayer(const FillDescriptor &amp;fillDescriptor, const char *name=nullptr)</div><div class="ttdoc">Add an Fill layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00168">Network.cpp:168</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml">armnn::INetwork</a></div><div class="ttdoc">Main network class which provides the interface for building up a neural network. ...</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00178">INetwork.hpp:178</a></div></div>
<div class="ttc" id="classarmnn_1_1_activation_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a></div><div class="ttdoc">This layer represents an activation operation with the specified activation function. </div><div class="ttdef"><b>Definition:</b> <a href="_activation_layer_8hpp_source.xhtml#l00012">ActivationLayer.hpp:12</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml">armnn::OptimizationViews</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00013">OptimizationViews.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a19bad0cc50526ca9f4f84a688812cdf5"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a19bad0cc50526ca9f4f84a688812cdf5">armnn::NetworkImpl::AddSpaceToDepthLayer</a></div><div class="ttdeci">IConnectableLayer * AddSpaceToDepthLayer(const SpaceToDepthDescriptor &amp;spaceToDepthDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02048">Network.cpp:2048</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistry.cpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_convert_bf16_to_fp32_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_convert_bf16_to_fp32_layer.xhtml">armnn::ConvertBf16ToFp32Layer</a></div><div class="ttdoc">This layer converts data type BFloat16 to Float32. </div><div class="ttdef"><b>Definition:</b> <a href="_convert_bf16_to_fp32_layer_8hpp_source.xhtml#l00014">ConvertBf16ToFp32Layer.hpp:14</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">armnn::LayerType::FullyConnected</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a1759754ccb88ecc9af44f3aae6e244ee"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a1759754ccb88ecc9af44f3aae6e244ee">armnn::LstmInputParams::m_RecurrentToCellWeights</a></div><div class="ttdeci">const ConstTensor * m_RecurrentToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00046">LstmParams.hpp:46</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a33d586a0d9bbb1f12ac7a3ba8d03e21e"><div class="ttname"><a href="namespacearmnn.xhtml#a33d586a0d9bbb1f12ac7a3ba8d03e21e">armnn::ConvertBf16ToFp32Weight</a></div><div class="ttdeci">LayerT * ConvertBf16ToFp32Weight(Layer *l)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00638">Network.cpp:638</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a4de71c3661093e5c4ae7775114f43413"><div class="ttname"><a href="namespacearmnn.xhtml#a4de71c3661093e5c4ae7775114f43413">armnn::NetworkOptions</a></div><div class="ttdeci">std::vector&lt; BackendOptions &gt; NetworkOptions</div><div class="ttdef"><b>Definition:</b> <a href="_backend_options_8hpp_source.xhtml#l00015">BackendOptions.hpp:15</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a11f463726addcc1d2845266997d79e9c"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a11f463726addcc1d2845266997d79e9c">armnn::OptimizerOptions::m_ReduceFp32ToBf16</a></div><div class="ttdeci">bool m_ReduceFp32ToBf16</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00159">INetwork.hpp:159</a></div></div>
<div class="ttc" id="structarmnn_1_1_logical_binary_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_logical_binary_descriptor.xhtml">armnn::LogicalBinaryDescriptor</a></div><div class="ttdoc">A LogicalBinaryDescriptor for the LogicalBinaryLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01284">Descriptors.hpp:1284</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a178a72bbf254eff34a807a5ca27cb61f"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a178a72bbf254eff34a807a5ca27cb61f">armnn::INetwork::AddConvolution2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &amp;convolution2dDescriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdoc">Adds a 2D convolution layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00077">Network.cpp:77</a></div></div>
<div class="ttc" id="classarmnn_1_1_stand_in_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_stand_in_layer.xhtml">armnn::StandInLayer</a></div><div class="ttdoc">This layer represents an unknown operation in the input graph. </div><div class="ttdef"><b>Definition:</b> <a href="_stand_in_layer_8hpp_source.xhtml#l00014">StandInLayer.hpp:14</a></div></div>
<div class="ttc" id="_backend_settings_8hpp_xhtml"><div class="ttname"><a href="_backend_settings_8hpp.xhtml">BackendSettings.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a29f8d97b2d74f99c88298881cd1d825b"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a29f8d97b2d74f99c88298881cd1d825b">armnn::optimizations::SquashEqualReshapeSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, ReshapeLayer, SquashEqualSiblingsImpl&lt; ReshapeLayer &gt; &gt; SquashEqualReshapeSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00070">SquashEqualSiblings.hpp:70</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimized_network_impl_xhtml_a49800ad35ea869aa5569519760d3b339"><div class="ttname"><a href="classarmnn_1_1_optimized_network_impl.xhtml#a49800ad35ea869aa5569519760d3b339">armnn::OptimizedNetworkImpl::GetGraph</a></div><div class="ttdeci">Graph &amp; GetGraph()</div><div class="ttdef"><b>Definition:</b> <a href="_optimized_network_impl_8hpp_source.xhtml#l00021">OptimizedNetworkImpl.hpp:21</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a83b33973ca12078166b2436b313627b9"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a83b33973ca12078166b2436b313627b9">armnn::INetwork::AddLogSoftmaxLayer</a></div><div class="ttdeci">IConnectableLayer * AddLogSoftmaxLayer(const LogSoftmaxDescriptor &amp;logSoftmaxDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a log softmax layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00325">Network.cpp:325</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_af760179196d57e2ddbc64b989fb72586"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#af760179196d57e2ddbc64b989fb72586">armnn::INetwork::~INetwork</a></div><div class="ttdeci">~INetwork()</div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ad97411f1fcb2c30c212483d8c673506f"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ad97411f1fcb2c30c212483d8c673506f">armnn::INetwork::AddResizeLayer</a></div><div class="ttdeci">IConnectableLayer * AddResizeLayer(const ResizeDescriptor &amp;resizeDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a resize layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00301">Network.cpp:301</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_aa51350bdd4976f3dd5a4e9d00a906b2c"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#aa51350bdd4976f3dd5a4e9d00a906b2c">armnn::NetworkImpl::AddActivationLayer</a></div><div class="ttdeci">IConnectableLayer * AddActivationLayer(const ActivationDescriptor &amp;activationDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01890">Network.cpp:1890</a></div></div>
<div class="ttc" id="classarmnn_1_1_detection_post_process_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_detection_post_process_layer.xhtml">armnn::DetectionPostProcessLayer</a></div><div class="ttdoc">This layer represents a detection postprocess operator. </div><div class="ttdef"><b>Definition:</b> <a href="_detection_post_process_layer_8hpp_source.xhtml#l00016">DetectionPostProcessLayer.hpp:16</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_xhtml_aaf68d7cca5c48a7f3d398452a5244667"><div class="ttname"><a href="classarmnn_1_1_subgraph_view.xhtml#aaf68d7cca5c48a7f3d398452a5244667">armnn::SubgraphView::end</a></div><div class="ttdeci">Iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_8cpp_source.xhtml#l00174">SubgraphView.cpp:174</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_settings_xhtml_a0b160952af61b24d88125d66ed6d43c1"><div class="ttname"><a href="structarmnn_1_1_backend_settings.xhtml#a0b160952af61b24d88125d66ed6d43c1">armnn::BackendSettings::m_SupportedBackends</a></div><div class="ttdeci">BackendIdSet m_SupportedBackends</div><div class="ttdef"><b>Definition:</b> <a href="_backend_settings_8hpp_source.xhtml#l00021">BackendSettings.hpp:21</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_af0f796fba1a2be9c56b4c9ee534577ee"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#af0f796fba1a2be9c56b4c9ee534577ee">armnn::LstmInputParams::m_ForgetLayerNormWeights</a></div><div class="ttdeci">const ConstTensor * m_ForgetLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00058">LstmParams.hpp:58</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a5918588fa316cf4c23f1cf02c81ee706"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a5918588fa316cf4c23f1cf02c81ee706">armnn::optimizations::MoveTransposeUp</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, TransposeLayer, MoveTransposeUpImpl &gt; MoveTransposeUp</div><div class="ttdef"><b>Definition:</b> <a href="_move_transpose_up_8hpp_source.xhtml#l00077">MoveTransposeUp.hpp:77</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a35b112e30c3eb153806a2a8c16d178e3"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a35b112e30c3eb153806a2a8c16d178e3">armnn::LstmInputParams::m_CellToForgetWeights</a></div><div class="ttdeci">const ConstTensor * m_CellToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00049">LstmParams.hpp:49</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a9a9bcc00ae3d96343c93b437d6f77088"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a9a9bcc00ae3d96343c93b437d6f77088">armnn::INetwork::AddBatchToSpaceNdLayer</a></div><div class="ttdeci">IConnectableLayer * AddBatchToSpaceNdLayer(const BatchToSpaceNdDescriptor &amp;batchToSpaceNdDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a batch to space ND layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00206">Network.cpp:206</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae50fff9aa2a1ce46392d8641c10aa3bc"><div class="ttname"><a href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">armnn::ReturnWithError</a></div><div class="ttdeci">OptimizationResult ReturnWithError(OptimizationResult res, const Layer *layer, const BackendSettings &amp;backendSettings, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00587">Network.cpp:587</a></div></div>
<div class="ttc" id="classarmnn_1_1_transpose_convolution2d_layer_xhtml_a2664044e28e69309ea08ef385fe53903"><div class="ttname"><a href="classarmnn_1_1_transpose_convolution2d_layer.xhtml#a2664044e28e69309ea08ef385fe53903">armnn::TransposeConvolution2dLayer::m_Weight</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_Weight</div><div class="ttdoc">A unique pointer to store weight values. </div><div class="ttdef"><b>Definition:</b> <a href="_transpose_convolution2d_layer_8hpp_source.xhtml#l00019">TransposeConvolution2dLayer.hpp:19</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml"><div class="ttname"><a href="namespacearmnn.xhtml">armnn</a></div><div class="ttdoc">Copyright (c) 2021 ARM Limited and Contributors. </div><div class="ttdef"><b>Definition:</b> <a href="01__00__software__tools_8dox_source.xhtml#l00006">01_00_software_tools.dox:6</a></div></div>
<div class="ttc" id="classarmnn_1_1_pad_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_pad_layer.xhtml">armnn::PadLayer</a></div><div class="ttdoc">This layer represents a pad operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pad_layer_8hpp_source.xhtml#l00014">PadLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_lstm_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_lstm_layer.xhtml">armnn::LstmLayer</a></div><div class="ttdoc">This layer represents a LSTM operation. </div><div class="ttdef"><b>Definition:</b> <a href="_lstm_layer_8hpp_source.xhtml#l00077">LstmLayer.hpp:77</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_add2180a15cdcf5a229de32bb956cb224"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#add2180a15cdcf5a229de32bb956cb224">armnn::optimizations::FoldPadIntoConvolution2d</a></div><div class="ttdeci">OptimizeForConnection&lt; PadLayer, Convolution2dLayer, FoldPadIntoConvolution2dImpl &gt; FoldPadIntoConvolution2d</div><div class="ttdef"><b>Definition:</b> <a href="_fold_pad_into_convolution2d_8hpp_source.xhtml#l00088">FoldPadIntoConvolution2d.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a0aeb4e528cf6ba4b7caca14a94fbcafe"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a0aeb4e528cf6ba4b7caca14a94fbcafe">armnn::INetwork::AddDivisionLayer</a></div><div class="ttdeci">IConnectableLayer * AddDivisionLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a division layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00371">Network.cpp:371</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml">armnn::QuantizedLstmInputParams</a></div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00013">QuantizedLstmParams.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a3f6ad59212fa8a47c9265162fff8a274"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">armnn::Layer::SetBackendId</a></div><div class="ttdeci">void SetBackendId(const BackendId &amp;id)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00270">Layer.hpp:270</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_settings_xhtml_aa5df3120ee0fbb3321df3133ec9e83ae"><div class="ttname"><a href="structarmnn_1_1_backend_settings.xhtml#aa5df3120ee0fbb3321df3133ec9e83ae">armnn::BackendSettings::IsBackendSupported</a></div><div class="ttdeci">bool IsBackendSupported(const BackendId &amp;backend) const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_settings_8hpp_source.xhtml#l00046">BackendSettings.hpp:46</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_acc25db0641c1c22faf95af3bb49080c9"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">armnn::Graph::Iterator</a></div><div class="ttdeci">LayerList::const_iterator Iterator</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00050">Graph.hpp:50</a></div></div>
<div class="ttc" id="classarmnn_1_1_reduce_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_reduce_layer.xhtml">armnn::ReduceLayer</a></div><div class="ttdoc">This layer represents a reduction operation. </div><div class="ttdef"><b>Definition:</b> <a href="_reduce_layer_8hpp_source.xhtml#l00013">ReduceLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a58f85a122022527a525318473f93d4ef"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a58f85a122022527a525318473f93d4ef">armnn::NetworkImpl::AddDepthwiseConvolution2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddDepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor &amp;convolution2dDescriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01840">Network.cpp:1840</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a83b33973ca12078166b2436b313627b9"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a83b33973ca12078166b2436b313627b9">armnn::NetworkImpl::AddLogSoftmaxLayer</a></div><div class="ttdeci">IConnectableLayer * AddLogSoftmaxLayer(const LogSoftmaxDescriptor &amp;logSoftmaxDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02021">Network.cpp:2021</a></div></div>
<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.xhtml">armnn::SpaceToDepthDescriptor</a></div><div class="ttdoc">A SpaceToDepthDescriptor for the SpaceToDepthLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00884">Descriptors.hpp:884</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_reference_switch_xhtml_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00146">Optional.hpp:146</a></div></div>
<div class="ttc" id="classarmnn_1_1_permute_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_permute_layer.xhtml">armnn::PermuteLayer</a></div><div class="ttdoc">This layer represents a permutation operation. </div><div class="ttdef"><b>Definition:</b> <a href="_permute_layer_8hpp_source.xhtml#l00015">PermuteLayer.hpp:15</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a477440c44fe870fb6f2486bf68214395"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a477440c44fe870fb6f2486bf68214395">armnn::QuantizedLstmInputParams::GetInputToOutputWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetInputToOutputWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00073">QuantizedLstmParams.hpp:73</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a1594bddc87d6477df300317658f566bb"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a1594bddc87d6477df300317658f566bb">armnn::Layer::GetNumOutputSlots</a></div><div class="ttdeci">unsigned int GetNumOutputSlots() const override</div><div class="ttdoc">Returns the number of connectable output slots. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00314">Layer.hpp:314</a></div></div>
<div class="ttc" id="classarmnn_1_1_space_to_batch_nd_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_space_to_batch_nd_layer.xhtml">armnn::SpaceToBatchNdLayer</a></div><div class="ttdoc">This layer represents a SpaceToBatchNd operation. </div><div class="ttdef"><b>Definition:</b> <a href="_space_to_batch_nd_layer_8hpp_source.xhtml#l00014">SpaceToBatchNdLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ae3ef3b97542241d331a38613ae189f3e"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ae3ef3b97542241d331a38613ae189f3e">armnn::INetwork::AddFullyConnectedLayer</a></div><div class="ttdeci">IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &amp;fullyConnectedDescriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdoc">Adds a fully connected layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00175">Network.cpp:175</a></div></div>
<div class="ttc" id="structarmnn_1_1_batch_to_space_nd_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">armnn::BatchToSpaceNdDescriptor</a></div><div class="ttdoc">A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00673">Descriptors.hpp:673</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa76c76565125ad77092403176d74fd85"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa76c76565125ad77092403176d74fd85">armnn::optimizations::InsertDebugLayer</a></div><div class="ttdeci">OptimizeForType&lt; Layer, AddDebugImpl &gt; InsertDebugLayer</div><div class="ttdef"><b>Definition:</b> <a href="_add_debug_8hpp_source.xhtml#l00034">AddDebug.hpp:34</a></div></div>
<div class="ttc" id="_backend_registry_8hpp_xhtml"><div class="ttname"><a href="_backend_registry_8hpp.xhtml">BackendRegistry.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimized_network_impl_xhtml_a26794f014974a6f963a8925de07bffeb"><div class="ttname"><a href="classarmnn_1_1_optimized_network_impl.xhtml#a26794f014974a6f963a8925de07bffeb">armnn::OptimizedNetworkImpl::SerializeToDot</a></div><div class="ttdeci">virtual Status SerializeToDot(std::ostream &amp;stream) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00558">Network.cpp:558</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a8341ca3512ebafb19d60eba44d40d9e4"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a8341ca3512ebafb19d60eba44d40d9e4">armnn::optimizations::OptimizeConsecutiveReshapes</a></div><div class="ttdeci">OptimizeForConnection&lt; ReshapeLayer, ReshapeLayer, OptimizeConsecutiveReshapesImpl &gt; OptimizeConsecutiveReshapes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_consecutive_reshapes_8hpp_source.xhtml#l00061">OptimizeConsecutiveReshapes.hpp:61</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ad4726f9b7dd11db250d2a494a8a39494"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ad4726f9b7dd11db250d2a494a8a39494">armnn::INetwork::AddMeanLayer</a></div><div class="ttdeci">IConnectableLayer * AddMeanLayer(const MeanDescriptor &amp;meanDescriptor, const char *name=nullptr)</div><div class="ttdoc">Add a Mean layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00386">Network.cpp:386</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml">armnn::NetworkImpl</a></div><div class="ttdoc">Private implementation of INetwork. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00031">Network.hpp:31</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00210">Types.hpp:210</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a8c0f6d48705f40c5590dde09be262222"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a8c0f6d48705f40c5590dde09be262222">armnn::LstmInputParams::m_OutputGateBias</a></div><div class="ttdeci">const ConstTensor * m_OutputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00054">LstmParams.hpp:54</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_aa6c1c42ea44777302e87ce0fad5ac510"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#aa6c1c42ea44777302e87ce0fad5ac510">armnn::INetwork::AddInputLayer</a></div><div class="ttdeci">IConnectableLayer * AddInputLayer(LayerBindingId id, const char *name=nullptr)</div><div class="ttdoc">Adds an input layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00050">Network.cpp:50</a></div></div>
<div class="ttc" id="classarmnn_1_1_elementwise_unary_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_elementwise_unary_layer.xhtml">armnn::ElementwiseUnaryLayer</a></div><div class="ttdoc">This layer represents a elementwiseUnary operation. </div><div class="ttdef"><b>Definition:</b> <a href="_elementwise_unary_layer_8hpp_source.xhtml#l00014">ElementwiseUnaryLayer.hpp:14</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00180">TypesUtils.hpp:180</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ac5c93cad39a690af862d49ffaec0d3c0"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ac5c93cad39a690af862d49ffaec0d3c0">armnn::INetwork::AddStridedSliceLayer</a></div><div class="ttdeci">IConnectableLayer * AddStridedSliceLayer(const StridedSliceDescriptor &amp;stridedSliceDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a strided slice layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00402">Network.cpp:402</a></div></div>
<div class="ttc" id="_optimizer_8hpp_xhtml"><div class="ttname"><a href="_optimizer_8hpp.xhtml">Optimizer.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_resize_descriptor.xhtml">armnn::ResizeDescriptor</a></div><div class="ttdoc">A ResizeDescriptor for the ResizeLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00794">Descriptors.hpp:794</a></div></div>
<div class="ttc" id="structarmnn_1_1_stack_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_stack_descriptor.xhtml">armnn::StackDescriptor</a></div><div class="ttdoc">A StackDescriptor for the StackLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01024">Descriptors.hpp:1024</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">armnn::EdgeStrategy::ExportToTarget</a></div><div class="ttdoc">Destination backend can work directly with tensors on source backend. </div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_ac5d107c5672f446603b6e6b92bce6244"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#ac5d107c5672f446603b6e6b92bce6244">armnn::IBackendInternal::GetHandleFactoryPreferences</a></div><div class="ttdeci">virtual std::vector&lt; ITensorHandleFactory::FactoryId &gt; GetHandleFactoryPreferences() const</div><div class="ttdoc">(Optional) Returns a vector of supported TensorHandleFactory ids in preference order. </div><div class="ttdef"><b>Definition:</b> <a href="_i_backend_internal_8cpp_source.xhtml#l00161">IBackendInternal.cpp:161</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a19bad0cc50526ca9f4f84a688812cdf5"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a19bad0cc50526ca9f4f84a688812cdf5">armnn::INetwork::AddSpaceToDepthLayer</a></div><div class="ttdeci">IConnectableLayer * AddSpaceToDepthLayer(const SpaceToDepthDescriptor &amp;spaceToDepthDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a space to depth layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00349">Network.cpp:349</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a1a9d718b48612b5817a3c369f9fd71ee"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a1a9d718b48612b5817a3c369f9fd71ee">armnn::optimizations::OptimizeInverseConversionsFp16</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp16ToFp32Layer, ConvertFp32ToFp16Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp16</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.xhtml#l00042">OptimizeInverseConversions.hpp:42</a></div></div>
<div class="ttc" id="_polymorphic_downcast_8hpp_xhtml"><div class="ttname"><a href="_polymorphic_downcast_8hpp.xhtml">PolymorphicDowncast.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a30528a3bd85a0dba158bd14e252bd68a"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a30528a3bd85a0dba158bd14e252bd68a">armnn::INetwork::AddSoftmaxLayer</a></div><div class="ttdeci">IConnectableLayer * AddSoftmaxLayer(const SoftmaxDescriptor &amp;softmaxDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a softmax layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00234">Network.cpp:234</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a6e1a42622ca43dafc7ba8e684c016eb4"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a6e1a42622ca43dafc7ba8e684c016eb4">armnn::OptimizerOptions::m_ReduceFp32ToFp16</a></div><div class="ttdeci">bool m_ReduceFp32ToFp16</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00153">INetwork.hpp:153</a></div></div>
<div class="ttc" id="classarmnn_1_1_quantize_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_quantize_layer.xhtml">armnn::QuantizeLayer</a></div><div class="ttdef"><b>Definition:</b> <a href="_quantize_layer_8hpp_source.xhtml#l00017">QuantizeLayer.hpp:17</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimization_result_xhtml_aca1654c65182fe4e7d5fd45f556fcd57"><div class="ttname"><a href="structarmnn_1_1_optimization_result.xhtml#aca1654c65182fe4e7d5fd45f556fcd57">armnn::OptimizationResult::IsError</a></div><div class="ttdeci">bool IsError() const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00306">Network.hpp:306</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_xhtml"><div class="ttname"><a href="classarmnn_1_1_subgraph_view.xhtml">armnn::SubgraphView</a></div><div class="ttdoc">The SubgraphView class represents a subgraph of a Graph. </div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_8hpp_source.xhtml#l00023">SubgraphView.hpp:23</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a34aa5f1a405a6886f79c97d53f9f65fd"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a34aa5f1a405a6886f79c97d53f9f65fd">armnn::NetworkImpl::AddMergerLayer</a></div><div class="ttdeci">IConnectableLayer * AddMergerLayer(const MergerDescriptor &amp;mergerDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01936">Network.cpp:1936</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_strategy_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_strategy.xhtml">armnn::IStrategy</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_strategy_8hpp_source.xhtml#l00013">IStrategy.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_ab986223ec7e4f04929cb47c74a27aa93"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#ab986223ec7e4f04929cb47c74a27aa93">armnn::IOptimizedNetwork::GetGuid</a></div><div class="ttdeci">profiling::ProfilingGuid GetGuid() const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00547">Network.cpp:547</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a435ea88480b8645026dd45fd692663a1"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a435ea88480b8645026dd45fd692663a1">armnn::NetworkImpl::AddFloorLayer</a></div><div class="ttdeci">IConnectableLayer * AddFloorLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02054">Network.cpp:2054</a></div></div>
<div class="ttc" id="structarmnn_1_1_pad_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_pad_descriptor.xhtml">armnn::PadDescriptor</a></div><div class="ttdoc">A PadDescriptor for the PadLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00975">Descriptors.hpp:975</a></div></div>
<div class="ttc" id="classarmnn_1_1_instance_normalization_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_instance_normalization_layer.xhtml">armnn::InstanceNormalizationLayer</a></div><div class="ttdoc">This layer represents an instance normalization operation. </div><div class="ttdef"><b>Definition:</b> <a href="_instance_normalization_layer_8hpp_source.xhtml#l00013">InstanceNormalizationLayer.hpp:13</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a69eb14082d40fa0a3cff50457344a5e0"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a69eb14082d40fa0a3cff50457344a5e0">armnn::OptimizerOptions::m_Debug</a></div><div class="ttdeci">bool m_Debug</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00156">INetwork.hpp:156</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_abb59f6ba9988dae88e0f48e68d87fc32"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#abb59f6ba9988dae88e0f48e68d87fc32">armnn::NetworkImpl::AddMultiplicationLayer</a></div><div class="ttdeci">IConnectableLayer * AddMultiplicationLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01952">Network.cpp:1952</a></div></div>
<div class="ttc" id="namespacestd_xhtml"><div class="ttname"><a href="namespacestd.xhtml">std</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00147">BackendId.hpp:147</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a17d1279f5f8e3b92c328b1ed3b6fd549"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a17d1279f5f8e3b92c328b1ed3b6fd549">armnn::optimizations::PermuteAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl&lt; PermuteLayer &gt; &gt; PermuteAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.xhtml#l00102">PermuteAndBatchToSpaceAsDepthToSpace.hpp:102</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a2acbae0b9e98c94b843677484775c86a"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a2acbae0b9e98c94b843677484775c86a">armnn::NetworkImpl::AddQLstmLayer</a></div><div class="ttdeci">IConnectableLayer * AddQLstmLayer(const QLstmDescriptor &amp;descriptor, const LstmInputParams &amp;params, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02357">Network.cpp:2357</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a0cd848f65ec31778d708852f0042fe37"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a0cd848f65ec31778d708852f0042fe37">armnn::LstmInputParams::m_InputLayerNormWeights</a></div><div class="ttdeci">const ConstTensor * m_InputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00057">LstmParams.hpp:57</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aafc70d5af99400ff5ea7991825658b2f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aafc70d5af99400ff5ea7991825658b2f">armnn::optimizations::MovePermuteUp</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, MovePermuteUpImpl &gt; MovePermuteUp</div><div class="ttdef"><b>Definition:</b> <a href="_move_permute_up_8hpp_source.xhtml#l00077">MovePermuteUp.hpp:77</a></div></div>
<div class="ttc" id="classarmnn_1_1_logical_binary_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_logical_binary_layer.xhtml">armnn::LogicalBinaryLayer</a></div><div class="ttdoc">This layer represents a Logical Binary operation. </div><div class="ttdef"><b>Definition:</b> <a href="_logical_binary_layer_8hpp_source.xhtml#l00014">LogicalBinaryLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_constant_layer_xhtml_a67ccc257eeefce0964c1cafc4b255c9f"><div class="ttname"><a href="classarmnn_1_1_constant_layer.xhtml#a67ccc257eeefce0964c1cafc4b255c9f">armnn::ConstantLayer::m_LayerOutput</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_LayerOutput</div><div class="ttdef"><b>Definition:</b> <a href="_constant_layer_8hpp_source.xhtml#l00046">ConstantLayer.hpp:46</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a928f70dd19a2b0d3e9b75c27a2099c44"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a928f70dd19a2b0d3e9b75c27a2099c44">armnn::QuantizedLstmInputParams::GetInputToCellWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetInputToCellWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00068">QuantizedLstmParams.hpp:68</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ac5c93cad39a690af862d49ffaec0d3c0"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ac5c93cad39a690af862d49ffaec0d3c0">armnn::NetworkImpl::AddStridedSliceLayer</a></div><div class="ttdeci">IConnectableLayer * AddStridedSliceLayer(const StridedSliceDescriptor &amp;stridedSliceDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02230">Network.cpp:2230</a></div></div>
<div class="ttc" id="_types_utils_8hpp_xhtml"><div class="ttname"><a href="_types_utils_8hpp.xhtml">TypesUtils.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">armnn::LayerType::ConvertFp16ToFp32</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"><div class="ttname"><a href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a4353fa80ece13e3b1664881c27f5a67c"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a4353fa80ece13e3b1664881c27f5a67c">armnn::INetwork::pNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; NetworkImpl &gt; pNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00693">INetwork.hpp:693</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a></div><div class="ttdoc">A layer user-provided data can be bound to (e.g. inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_output_layer_8hpp_source.xhtml#l00013">OutputLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_af730a6ec3deb072dc2687089f3f77f9e"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#af730a6ec3deb072dc2687089f3f77f9e">armnn::IOptimizedNetwork::IOptimizedNetwork</a></div><div class="ttdeci">IOptimizedNetwork(std::unique_ptr&lt; Graph &gt; graph)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00521">Network.cpp:521</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_acc9f9b91636c0714d96a3cba92c624f9"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#acc9f9b91636c0714d96a3cba92c624f9">armnn::INetwork::AddResizeBilinearLayer</a></div><div class="ttdeci">IConnectableLayer * AddResizeBilinearLayer(const ResizeBilinearDescriptor &amp;resizeDesc, const char *name=nullptr)</div><div class="ttdoc">Adds a resize bilinear layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00287">Network.cpp:287</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a22df7404d1196068ad18d0286f9b9425"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a22df7404d1196068ad18d0286f9b9425">armnn::IOptimizedNetwork::Optimize</a></div><div class="ttdeci">friend IOptimizedNetworkPtr Optimize(const INetwork &amp;inNetwork, const std::vector&lt; BackendId &gt; &amp;backendPreferences, const IDeviceSpec &amp;deviceSpec, const OptimizerOptions &amp;options, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; messages)</div><div class="ttdoc">Create an optimized version of the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01502">Network.cpp:1502</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_ad6521013ad981519904822f2ada2c4ec"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#ad6521013ad981519904822f2ada2c4ec">armnn::Graph::ForEachLayer</a></div><div class="ttdeci">void ForEachLayer(Func func) const</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00039">Graph.hpp:39</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_a73fbbe9df988c8cabddea04a8dcb9323"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a73fbbe9df988c8cabddea04a8dcb9323">armnn::ITensorHandleFactory::GetCapabilities</a></div><div class="ttdeci">virtual std::vector&lt; Capability &gt; GetCapabilities(const IConnectableLayer *layer, const IConnectableLayer *connectedLayer, CapabilityClass capabilityClass)</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00088">ITensorHandleFactory.hpp:88</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_aa6c1c42ea44777302e87ce0fad5ac510"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#aa6c1c42ea44777302e87ce0fad5ac510">armnn::NetworkImpl::AddInputLayer</a></div><div class="ttdeci">IConnectableLayer * AddInputLayer(LayerBindingId id, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01682">Network.cpp:1682</a></div></div>
<div class="ttc" id="classarmnn_1_1_dequantize_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_dequantize_layer.xhtml">armnn::DequantizeLayer</a></div><div class="ttdoc">This layer dequantizes the input tensor. </div><div class="ttdef"><b>Definition:</b> <a href="_dequantize_layer_8hpp_source.xhtml#l00013">DequantizeLayer.hpp:13</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a6512859957de2cf2a5fe4dccb07bd9da"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6512859957de2cf2a5fe4dccb07bd9da">armnn::LayerType::ConvertFp32ToBf16</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a226cef3d775179e25ee35d231f4e8fae"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">armnn::optimizations::ConvertConstantsFloatToHalf</a></div><div class="ttdeci">ConvertConstants&lt; Float32ToFloat16, IsFloat16Layer &gt; ConvertConstantsFloatToHalf</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.xhtml#l00155">ConvertConstants.hpp:155</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
<div class="ttc" id="include_2armnn_2backends_2_i_backend_internal_8hpp_xhtml"><div class="ttname"><a href="include_2armnn_2backends_2_i_backend_internal_8hpp.xhtml">IBackendInternal.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ad1aaeee71293f34d9f65d2dd2792830d"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ad1aaeee71293f34d9f65d2dd2792830d">armnn::optimizations::TransposeAsReshape</a></div><div class="ttdeci">OptimizeForType&lt; TransposeLayer, TransposeAsReshapeImpl &gt; TransposeAsReshape</div><div class="ttdef"><b>Definition:</b> <a href="_transpose_as_reshape_8hpp_source.xhtml#l00077">TransposeAsReshape.hpp:77</a></div></div>
<div class="ttc" id="classarmnn_1_1_gather_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_gather_layer.xhtml">armnn::GatherLayer</a></div><div class="ttdoc">This layer represents a Gather operator. </div><div class="ttdef"><b>Definition:</b> <a href="_gather_layer_8hpp_source.xhtml#l00014">GatherLayer.hpp:14</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a56b81ca8ba4b4937e0787e4951f043fc"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a56b81ca8ba4b4937e0787e4951f043fc">armnn::LstmInputParams::m_RecurrentToOutputWeights</a></div><div class="ttdeci">const ConstTensor * m_RecurrentToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00047">LstmParams.hpp:47</a></div></div>
<div class="ttc" id="classarmnn_1_1_detection_post_process_layer_xhtml_a6844fecab0edaf324de5a57fee8b65f1"><div class="ttname"><a href="classarmnn_1_1_detection_post_process_layer.xhtml#a6844fecab0edaf324de5a57fee8b65f1">armnn::DetectionPostProcessLayer::m_Anchors</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_Anchors</div><div class="ttdoc">A unique pointer to store Anchor values. </div><div class="ttdef"><b>Definition:</b> <a href="_detection_post_process_layer_8hpp_source.xhtml#l00020">DetectionPostProcessLayer.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_fully_connected_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_fully_connected_layer.xhtml">armnn::FullyConnectedLayer</a></div><div class="ttdoc">This layer represents a fully connected operation. </div><div class="ttdef"><b>Definition:</b> <a href="_fully_connected_layer_8hpp_source.xhtml#l00015">FullyConnectedLayer.hpp:15</a></div></div>
<div class="ttc" id="_all_8hpp_xhtml"><div class="ttname"><a href="_all_8hpp.xhtml">All.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml">armnn::LstmDescriptor</a></div><div class="ttdoc">An LstmDescriptor for the LstmLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00911">Descriptors.hpp:911</a></div></div>
<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a0a2fdd4f442952c97a8f24de6700473a"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a0a2fdd4f442952c97a8f24de6700473a">armnn::INetwork::AddLstmLayer</a></div><div class="ttdeci">IConnectableLayer * AddLstmLayer(const LstmDescriptor &amp;descriptor, const LstmInputParams &amp;params, const char *name=nullptr)</div><div class="ttdoc">Add a Lstm layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00364">Network.cpp:364</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a41fd7b56923d5625bac2cbfebed1a393"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a41fd7b56923d5625bac2cbfebed1a393">armnn::NetworkImpl::AddTransposeConvolution2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddTransposeConvolution2dLayer(const TransposeConvolution2dDescriptor &amp;descriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02278">Network.cpp:2278</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml_a91c4dfde57907d7698c7531785690a7f"><div class="ttname"><a href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a></div><div class="ttdeci">#define ARMNN_ASSERT_MSG(COND, MSG)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.xhtml#l00015">Assert.hpp:15</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a25563024ec66627ee83727244a53e944"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a25563024ec66627ee83727244a53e944">armnn::INetwork::AddRankLayer</a></div><div class="ttdeci">IConnectableLayer * AddRankLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a rank layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00282">Network.cpp:282</a></div></div>
<div class="ttc" id="classarmnn_1_1_quantized_lstm_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_quantized_lstm_layer.xhtml">armnn::QuantizedLstmLayer</a></div><div class="ttdoc">This layer represents a QuantizedLstm operation. </div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_layer_8hpp_source.xhtml#l00045">QuantizedLstmLayer.hpp:45</a></div></div>
<div class="ttc" id="classarmnn_1_1_log_softmax_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_log_softmax_layer.xhtml">armnn::LogSoftmaxLayer</a></div><div class="ttdoc">This layer represents a log softmax operation. </div><div class="ttdef"><b>Definition:</b> <a href="_log_softmax_layer_8hpp_source.xhtml#l00014">LogSoftmaxLayer.hpp:14</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a9f31d956861d8277fa5f8fb877dbbb6c"><div class="ttname"><a href="namespacearmnn.xhtml#a9f31d956861d8277fa5f8fb877dbbb6c">armnn::ApplyBackendOptimizations</a></div><div class="ttdeci">OptimizationResult ApplyBackendOptimizations(OptimizedNetworkImpl *optNetObjPtr, BackendSettings &amp;backendSettings, BackendsMap &amp;backends, const ModelOptions &amp;modelOptions, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01028">Network.cpp:1028</a></div></div>
<div class="ttc" id="classarmnn_1_1_batch_normalization_layer_xhtml_a3540afac8fad99bbe68b3f7b57590160"><div class="ttname"><a href="classarmnn_1_1_batch_normalization_layer.xhtml#a3540afac8fad99bbe68b3f7b57590160">armnn::BatchNormalizationLayer::m_Mean</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_Mean</div><div class="ttdoc">A unique pointer to store Mean values. </div><div class="ttdef"><b>Definition:</b> <a href="_batch_normalization_layer_8hpp_source.xhtml#l00019">BatchNormalizationLayer.hpp:19</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a6d614a503a34ea3712b388aa4340ddbe"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a6d614a503a34ea3712b388aa4340ddbe">armnn::NetworkImpl::AddPreluLayer</a></div><div class="ttdeci">IConnectableLayer * AddPreluLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02273">Network.cpp:2273</a></div></div>
<div class="ttc" id="structarmnn_1_1_l2_normalization_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_l2_normalization_descriptor.xhtml">armnn::L2NormalizationDescriptor</a></div><div class="ttdoc">A L2NormalizationDescriptor for the L2NormalizationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00607">Descriptors.hpp:607</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a44b0e6b16708df7f0d2bbab141688aaa"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a44b0e6b16708df7f0d2bbab141688aaa">armnn::LstmInputParams::m_ProjectionBias</a></div><div class="ttdeci">const ConstTensor * m_ProjectionBias</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00056">LstmParams.hpp:56</a></div></div>
<div class="ttc" id="_graph_8hpp_xhtml"><div class="ttname"><a href="_graph_8hpp.xhtml">Graph.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00469">Tensor.cpp:469</a></div></div>
<div class="ttc" id="structarmnn_1_1_arg_min_max_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_arg_min_max_descriptor.xhtml">armnn::ArgMinMaxDescriptor</a></div><div class="ttdoc">An ArgMinMaxDescriptor for ArgMinMaxLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00056">Descriptors.hpp:56</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00452">Tensor.cpp:452</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_aea909c7327109228ef618d459015def3"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">armnn::TensorInfo::GetDataType</a></div><div class="ttdeci">DataType GetDataType() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00194">Tensor.hpp:194</a></div></div>
<div class="ttc" id="structarmnn_1_1_origins_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_origins_descriptor.xhtml">armnn::OriginsDescriptor</a></div><div class="ttdoc">An OriginsDescriptor for the ConcatLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00163">Descriptors.hpp:163</a></div></div>
<div class="ttc" id="structarmnn_1_1_reduce_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_reduce_descriptor.xhtml">armnn::ReduceDescriptor</a></div><div class="ttdoc">A ReduceDescriptor for the REDUCE operators. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01304">Descriptors.hpp:1304</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml">armnn::IOptimizedNetwork</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00699">INetwork.hpp:699</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ac1134a94265293ea7347180260f787d2"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ac1134a94265293ea7347180260f787d2">armnn::NetworkImpl::AddDetectionPostProcessLayer</a></div><div class="ttdeci">IConnectableLayer * AddDetectionPostProcessLayer(const DetectionPostProcessDescriptor &amp;descriptor, const ConstTensor &amp;anchors, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01868">Network.cpp:1868</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">armnn::BoostLogSeverityMapping::warning</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_base_xhtml_a86b749ce2c4bc627fa8a1fcfaf0e314f"><div class="ttname"><a href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">armnn::OptionalBase::has_value</a></div><div class="ttdeci">bool has_value() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00053">Optional.hpp:53</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimization_result_xhtml_a955b65059e7f9429a5d6041136bc1487"><div class="ttname"><a href="structarmnn_1_1_optimization_result.xhtml#a955b65059e7f9429a5d6041136bc1487">armnn::OptimizationResult::IsOk</a></div><div class="ttdeci">bool IsOk() const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00304">Network.hpp:304</a></div></div>
<div class="ttc" id="structarmnn_1_1_fully_connected_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_fully_connected_descriptor.xhtml">armnn::FullyConnectedDescriptor</a></div><div class="ttdoc">A FullyConnectedDescriptor for the FullyConnectedLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00389">Descriptors.hpp:389</a></div></div>
<div class="ttc" id="classarmnn_1_1_convolution2d_layer_xhtml_a2664044e28e69309ea08ef385fe53903"><div class="ttname"><a href="classarmnn_1_1_convolution2d_layer.xhtml#a2664044e28e69309ea08ef385fe53903">armnn::Convolution2dLayer::m_Weight</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_Weight</div><div class="ttdoc">A unique pointer to store Weight values. </div><div class="ttdef"><b>Definition:</b> <a href="_convolution2d_layer_8hpp_source.xhtml#l00020">Convolution2dLayer.hpp:20</a></div></div>
<div class="ttc" id="structarmnn_1_1_fully_connected_descriptor_xhtml_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_fully_connected_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">armnn::FullyConnectedDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00402">Descriptors.hpp:402</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
<div class="ttc" id="classarmnn_1_1_stack_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_stack_layer.xhtml">armnn::StackLayer</a></div><div class="ttdoc">This layer represents a stack operation. </div><div class="ttdef"><b>Definition:</b> <a href="_stack_layer_8hpp_source.xhtml#l00013">StackLayer.hpp:13</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a></div></div>
<div class="ttc" id="classarmnn_1_1_const_tensor_xhtml"><div class="ttname"><a href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and an immutable backing store. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00314">Tensor.hpp:314</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml_ad5fee4381bf82ffa37658dddf4d1fa01"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml#ad5fee4381bf82ffa37658dddf4d1fa01">armnn::OptimizationViews::GetFailedSubgraphs</a></div><div class="ttdeci">const Subgraphs &amp; GetFailedSubgraphs() const</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00050">OptimizationViews.hpp:50</a></div></div>
<div class="ttc" id="classarmnn_1_1_concat_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_concat_layer.xhtml">armnn::ConcatLayer</a></div><div class="ttdoc">This layer represents a merge operation. </div><div class="ttdef"><b>Definition:</b> <a href="_concat_layer_8hpp_source.xhtml#l00013">ConcatLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_softmax_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_softmax_layer.xhtml">armnn::SoftmaxLayer</a></div><div class="ttdoc">This layer represents a softmax operation. </div><div class="ttdef"><b>Definition:</b> <a href="_softmax_layer_8hpp_source.xhtml#l00013">SoftmaxLayer.hpp:13</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml">armnn::LstmInputParams</a></div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00013">LstmParams.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_abd61d3e7ab67551c75bc219bbc4baeb5"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#abd61d3e7ab67551c75bc219bbc4baeb5">armnn::INetwork::AddInstanceNormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddInstanceNormalizationLayer(const InstanceNormalizationDescriptor &amp;desc, const char *name=nullptr)</div><div class="ttdoc">Adds an instance normalization layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00313">Network.cpp:313</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a9a97cb6d32661a57fc33bd29b8e41ff4"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a9a97cb6d32661a57fc33bd29b8e41ff4">armnn::Layer::GetNameStr</a></div><div class="ttdeci">const std::string &amp; GetNameStr() const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00220">Layer.hpp:220</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_ad8e15c530c929ab823d89ae9fd2d3f11"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#ad8e15c530c929ab823d89ae9fd2d3f11">armnn::Layer::GetType</a></div><div class="ttdeci">LayerType GetType() const override</div><div class="ttdoc">Returns the armnn::LayerType of this layer. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00265">Layer.hpp:265</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_descriptor_xhtml_adcf5037208faac36c0788239a073f75c"><div class="ttname"><a href="structarmnn_1_1_resize_descriptor.xhtml#adcf5037208faac36c0788239a073f75c">armnn::ResizeDescriptor::m_TargetWidth</a></div><div class="ttdeci">uint32_t m_TargetWidth</div><div class="ttdoc">Target width value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00816">Descriptors.hpp:816</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_adf69fa0e439ddb632462b42253d67b6a"><div class="ttname"><a href="namespacearmnn.xhtml#adf69fa0e439ddb632462b42253d67b6a">armnn::InsertConvertBf16ToFp32LayersBefore</a></div><div class="ttdeci">std::vector&lt; ConvertBf16ToFp32Layer * &gt; InsertConvertBf16ToFp32LayersBefore(Graph &amp;graph, Layer &amp;layer, bool expectCorrectInputType)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.xhtml#l00051">NetworkUtils.cpp:51</a></div></div>
<div class="ttc" id="structarmnn_1_1_gather_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_gather_descriptor.xhtml">armnn::GatherDescriptor</a></div><div class="ttdoc">A GatherDescriptor for the GatherLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00742">Descriptors.hpp:742</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">armnn::LayerType::Convolution2d</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a23d6133552ba91cc0571517896792ea4"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a23d6133552ba91cc0571517896792ea4">armnn::QuantizedLstmInputParams::GetInputToInputWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetInputToInputWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00058">QuantizedLstmParams.hpp:58</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a374d52340ec8dc02a819acc20fb5aa92"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a374d52340ec8dc02a819acc20fb5aa92">armnn::IOptimizedNetwork::pOptimizedNetworkImpl</a></div><div class="ttdeci">std::unique_ptr&lt; OptimizedNetworkImpl &gt; pOptimizedNetworkImpl</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00725">INetwork.hpp:725</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a0aeb4e528cf6ba4b7caca14a94fbcafe"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a0aeb4e528cf6ba4b7caca14a94fbcafe">armnn::NetworkImpl::AddDivisionLayer</a></div><div class="ttdeci">IConnectableLayer * AddDivisionLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02200">Network.cpp:2200</a></div></div>
<div class="ttc" id="classarmnn_1_1_batch_to_space_nd_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_batch_to_space_nd_layer.xhtml">armnn::BatchToSpaceNdLayer</a></div><div class="ttdoc">This layer represents a BatchToSpaceNd operation. </div><div class="ttdef"><b>Definition:</b> <a href="_batch_to_space_nd_layer_8hpp_source.xhtml#l00013">BatchToSpaceNdLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_af5790069aa11fd1c5bb2e17cecb06528"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#af5790069aa11fd1c5bb2e17cecb06528">armnn::INetwork::AddOutputLayer</a></div><div class="ttdeci">IConnectableLayer * AddOutputLayer(LayerBindingId id, const char *name=nullptr)</div><div class="ttdoc">Adds an output layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00359">Network.cpp:359</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml">armnn::OutputSlot</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00083">Layer.hpp:83</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_selector_xhtml_aaf71a63dbbc776f8961b0f4fdb9da021"><div class="ttname"><a href="classarmnn_1_1_subgraph_view_selector.xhtml#aaf71a63dbbc776f8961b0f4fdb9da021">armnn::SubgraphViewSelector::Subgraphs</a></div><div class="ttdeci">std::vector&lt; SubgraphViewPtr &gt; Subgraphs</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8hpp_source.xhtml#l00025">SubgraphViewSelector.hpp:25</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a674efcf6cbdb9e831d653ff0e821fb38"><div class="ttname"><a href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; IOptimizedNetwork, void(*)(IOptimizedNetwork *network)&gt; IOptimizedNetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00174">INetwork.hpp:174</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_descriptor_xhtml_a4022d5107338aaf5eb7abebf78a1360b"><div class="ttname"><a href="structarmnn_1_1_resize_descriptor.xhtml#a4022d5107338aaf5eb7abebf78a1360b">armnn::ResizeDescriptor::m_HalfPixelCenters</a></div><div class="ttdeci">bool m_HalfPixelCenters</div><div class="ttdoc">Half Pixel Centers. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00827">Descriptors.hpp:827</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_adc8c1c505bca8233fe238b3b7fb80200"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#adc8c1c505bca8233fe238b3b7fb80200">armnn::NetworkImpl::AddArgMinMaxLayer</a></div><div class="ttdeci">IConnectableLayer * AddArgMinMaxLayer(const ArgMinMaxDescriptor &amp;desc, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01896">Network.cpp:1896</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_af5790069aa11fd1c5bb2e17cecb06528"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#af5790069aa11fd1c5bb2e17cecb06528">armnn::NetworkImpl::AddOutputLayer</a></div><div class="ttdeci">IConnectableLayer * AddOutputLayer(LayerBindingId id, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01957">Network.cpp:1957</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a357aca04172ed22fa32e5a69122b0fec"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a357aca04172ed22fa32e5a69122b0fec">armnn::NetworkImpl::AddDequantizeLayer</a></div><div class="ttdeci">IConnectableLayer * AddDequantizeLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02225">Network.cpp:2225</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00464">Tensor.cpp:464</a></div></div>
<div class="ttc" id="classarmnn_1_1_arg_min_max_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_arg_min_max_layer.xhtml">armnn::ArgMinMaxLayer</a></div><div class="ttdoc">This layer represents a ArgMinMax operation. </div><div class="ttdef"><b>Definition:</b> <a href="_arg_min_max_layer_8hpp_source.xhtml#l00014">ArgMinMaxLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_aea1059833739d3dccebb3a03ec35a1e6"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#aea1059833739d3dccebb3a03ec35a1e6">armnn::NetworkImpl::AddConcatLayer</a></div><div class="ttdeci">IConnectableLayer * AddConcatLayer(const ConcatDescriptor &amp;concatDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01758">Network.cpp:1758</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml_a5698be69cbd5dfe6c28fcd9867e8cbed"><div class="ttname"><a href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a></div><div class="ttdeci">#define ARMNN_ASSERT(COND)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.xhtml#l00014">Assert.hpp:14</a></div></div>
<div class="ttc" id="structarmnn_1_1_stand_in_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_stand_in_descriptor.xhtml">armnn::StandInDescriptor</a></div><div class="ttdoc">A StandInDescriptor for the StandIn layer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01054">Descriptors.hpp:1054</a></div></div>
<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml">armnn::QLstmDescriptor</a></div><div class="ttdoc">A QLstmDescriptor for the QLstmLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01153">Descriptors.hpp:1153</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_settings_xhtml_ad4ca579528452c669b45f3f35300fd4e"><div class="ttname"><a href="structarmnn_1_1_backend_settings.xhtml#ad4ca579528452c669b45f3f35300fd4e">armnn::BackendSettings::GetAvailablePreferredBackends</a></div><div class="ttdeci">BackendIdVector GetAvailablePreferredBackends() const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_settings_8hpp_source.xhtml#l00067">BackendSettings.hpp:67</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_device_spec_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_device_spec.xhtml">armnn::IDeviceSpec</a></div><div class="ttdoc">Device specific knowledge to be passed to the optimizer. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00200">Types.hpp:200</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a26e69cda5fe9642f9198c24ae5fdf9bc"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a26e69cda5fe9642f9198c24ae5fdf9bc">armnn::NetworkImpl::AddSwitchLayer</a></div><div class="ttdeci">IConnectableLayer * AddSwitchLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02268">Network.cpp:2268</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_workload_factory_xhtml_a74dc9ec1a223eab8b072368b2dacee87"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.xhtml#a74dc9ec1a223eab8b072368b2dacee87">armnn::IWorkloadFactory::IsLayerSupported</a></div><div class="ttdeci">static bool IsLayerSupported(const BackendId &amp;backendId, const IConnectableLayer &amp;layer, Optional&lt; DataType &gt; dataType, std::string &amp;outReasonIfUnsupported)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.xhtml#l01246">WorkloadFactory.cpp:1246</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a7ba52238d75f06ff59a0d2ba613acefe"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a7ba52238d75f06ff59a0d2ba613acefe">armnn::INetwork::AddEqualLayer</a></div><div class="ttdeci">IConnectableLayer * AddEqualLayer(const char *name=nullptr)</div><div class="ttdoc">Add a Equal layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00418">Network.cpp:418</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml">armnn::OptimizerOptions</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00110">INetwork.hpp:110</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a030e8e7c1f6980ec9b2ac06b683ee74e"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a030e8e7c1f6980ec9b2ac06b683ee74e">armnn::INetwork::AddAbsLayer</a></div><div class="ttdeci">IConnectableLayer * AddAbsLayer(const char *name=nullptr)</div><div class="ttdoc">Add absolute layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00257">Network.cpp:257</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a437cc59f5247f213adf34e84696f60da"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a437cc59f5247f213adf34e84696f60da">armnn::IOptimizedNetwork::~IOptimizedNetwork</a></div><div class="ttdeci">~IOptimizedNetwork()</div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_af13795cdf49e63d8bc3cb409592cdb9d"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#af13795cdf49e63d8bc3cb409592cdb9d">armnn::NetworkImpl::AddSubtractionLayer</a></div><div class="ttdeci">IConnectableLayer * AddSubtractionLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02205">Network.cpp:2205</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_acc9f9b91636c0714d96a3cba92c624f9"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#acc9f9b91636c0714d96a3cba92c624f9">armnn::NetworkImpl::AddResizeBilinearLayer</a></div><div class="ttdeci">IConnectableLayer * AddResizeBilinearLayer(const ResizeBilinearDescriptor &amp;resizeDesc, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01990">Network.cpp:1990</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml_a58dc3ea86870112f745b2a1f7dca55e9"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml#a58dc3ea86870112f745b2a1f7dca55e9">armnn::OptimizationViews::Validate</a></div><div class="ttdeci">bool Validate(const SubgraphView &amp;originalSubgraph) const</div><div class="ttdef"><b>Definition:</b> <a href="_optimization_views_8cpp_source.xhtml#l00011">OptimizationViews.cpp:11</a></div></div>
<div class="ttc" id="structarmnn_1_1_activation_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a></div><div class="ttdoc">An ActivationDescriptor for the ActivationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00025">Descriptors.hpp:25</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a1ff7534e1254dfb3ef8288194cca7ce3"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a1ff7534e1254dfb3ef8288194cca7ce3">armnn::NetworkImpl::AddLogicalBinaryLayer</a></div><div class="ttdeci">IConnectableLayer * AddLogicalBinaryLayer(const LogicalBinaryDescriptor &amp;logicalBinaryDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02499">Network.cpp:2499</a></div></div>
<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimization_result_xhtml"><div class="ttname"><a href="structarmnn_1_1_optimization_result.xhtml">armnn::OptimizationResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00290">Network.hpp:290</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a8ae358a041b4adc33577e8b4c07b8d23"><div class="ttname"><a href="namespacearmnn.xhtml#a8ae358a041b4adc33577e8b4c07b8d23">armnn::InsertConvertFp32ToBf16LayersAfter</a></div><div class="ttdeci">std::vector&lt; ConvertFp32ToBf16Layer * &gt; InsertConvertFp32ToBf16LayersAfter(Graph &amp;graph, Layer &amp;layer)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.xhtml#l00168">NetworkUtils.cpp:168</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_afdb1d37740e7a083b625d669588b6a0e"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">armnn::Layer::GetBackendId</a></div><div class="ttdeci">const BackendId &amp; GetBackendId() const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00269">Layer.hpp:269</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_bilinear_descriptor_xhtml_a46c3fa15c46fb0d1dcdc24d0ea5cb5cd"><div class="ttname"><a href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#a46c3fa15c46fb0d1dcdc24d0ea5cb5cd">armnn::ResizeBilinearDescriptor::m_TargetHeight</a></div><div class="ttdeci">uint32_t m_TargetHeight</div><div class="ttdoc">Target height value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00784">Descriptors.hpp:784</a></div></div>
<div class="ttc" id="classarmnn_1_1_floor_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_floor_layer.xhtml">armnn::FloorLayer</a></div><div class="ttdoc">This layer represents a floor operation. </div><div class="ttdef"><b>Definition:</b> <a href="_floor_layer_8hpp_source.xhtml#l00013">FloorLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a1163a712898cd2c368ef2e4510fc36c3"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a1163a712898cd2c368ef2e4510fc36c3">armnn::NetworkImpl::Accept</a></div><div class="ttdeci">void Accept(ILayerVisitor &amp;visitor) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02505">Network.cpp:2505</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a8f798e19187ac7ae6ae6153ee64ab645"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a8f798e19187ac7ae6ae6153ee64ab645">armnn::INetwork::AddBatchNormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddBatchNormalizationLayer(const BatchNormalizationDescriptor &amp;desc, const ConstTensor &amp;mean, const ConstTensor &amp;variance, const ConstTensor &amp;beta, const ConstTensor &amp;gamma, const char *name=nullptr)</div><div class="ttdoc">Adds a batch normalization layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00272">Network.cpp:272</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a2d936beb0fcf3c5d22ff332f0812b05e"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a2d936beb0fcf3c5d22ff332f0812b05e">armnn::INetwork::INetwork</a></div><div class="ttdeci">INetwork(NetworkOptions networkOptions={})</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00041">Network.cpp:41</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_descriptor_xhtml_a46c3fa15c46fb0d1dcdc24d0ea5cb5cd"><div class="ttname"><a href="structarmnn_1_1_resize_descriptor.xhtml#a46c3fa15c46fb0d1dcdc24d0ea5cb5cd">armnn::ResizeDescriptor::m_TargetHeight</a></div><div class="ttdeci">uint32_t m_TargetHeight</div><div class="ttdoc">Target height value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00818">Descriptors.hpp:818</a></div></div>
<div class="ttc" id="structarmnn_1_1_slice_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_slice_descriptor.xhtml">armnn::SliceDescriptor</a></div><div class="ttdoc">A SliceDescriptor for the SliceLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01001">Descriptors.hpp:1001</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a72b9d30e9d555bb5c35460b62faedf0d"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a72b9d30e9d555bb5c35460b62faedf0d">armnn::INetwork::AddSpaceToBatchNdLayer</a></div><div class="ttdeci">IConnectableLayer * AddSpaceToBatchNdLayer(const SpaceToBatchNdDescriptor &amp;spaceToBatchNdDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a space to batch layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00343">Network.cpp:343</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml">armnn::Graph</a></div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00029">Graph.hpp:29</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimized_network_impl_xhtml"><div class="ttname"><a href="classarmnn_1_1_optimized_network_impl.xhtml">armnn::OptimizedNetworkImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="_optimized_network_impl_8hpp_source.xhtml#l00009">OptimizedNetworkImpl.hpp:9</a></div></div>
<div class="ttc" id="classarmnn_1_1_normalization_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_normalization_layer.xhtml">armnn::NormalizationLayer</a></div><div class="ttdoc">This layer represents a normalization operation. </div><div class="ttdef"><b>Definition:</b> <a href="_normalization_layer_8hpp_source.xhtml#l00013">NormalizationLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_a9892b82652ffac03f1e4e7ad93906078"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9892b82652ffac03f1e4e7ad93906078">armnn::ITensorHandleFactory::GetExportFlags</a></div><div class="ttdeci">virtual MemorySourceFlags GetExportFlags() const</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00085">ITensorHandleFactory.hpp:85</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a715696f29b5376cbb8aaec0b77a092af"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a715696f29b5376cbb8aaec0b77a092af">armnn::QuantizedLstmInputParams::GetForgetGateBias</a></div><div class="ttdeci">const ConstTensor &amp; GetForgetGateBias() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00103">QuantizedLstmParams.hpp:103</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a74894d085e78ff80f45fc09dd2381f08"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a74894d085e78ff80f45fc09dd2381f08">armnn::NetworkImpl::AddStandInLayer</a></div><div class="ttdeci">IConnectableLayer * AddStandInLayer(const StandInDescriptor &amp;descriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02313">Network.cpp:2313</a></div></div>
<div class="ttc" id="classarmnn_1_1_pooling2d_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_pooling2d_layer.xhtml">armnn::Pooling2dLayer</a></div><div class="ttdoc">This layer represents a pooling 2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pooling2d_layer_8hpp_source.xhtml#l00013">Pooling2dLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_convert_fp32_to_fp16_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">armnn::ConvertFp32ToFp16Layer</a></div><div class="ttdoc">This layer converts data type Float 32 to Float 16. </div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp32_to_fp16_layer_8hpp_source.xhtml#l00013">ConvertFp32ToFp16Layer.hpp:13</a></div></div>
<div class="ttc" id="_logging_8hpp_xhtml"><div class="ttname"><a href="_logging_8hpp.xhtml">Logging.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_transpose_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_transpose_layer.xhtml">armnn::TransposeLayer</a></div><div class="ttdoc">This layer represents a transpose operation. </div><div class="ttdef"><b>Definition:</b> <a href="_transpose_layer_8hpp_source.xhtml#l00015">TransposeLayer.hpp:15</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a11f49d84f0cfd8df65f4d5206cd43b6d"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a11f49d84f0cfd8df65f4d5206cd43b6d">armnn::NetworkImpl::AddPermuteLayer</a></div><div class="ttdeci">IConnectableLayer * AddPermuteLayer(const PermuteDescriptor &amp;permuteDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01878">Network.cpp:1878</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimizer_options_xhtml_a05c1bba6ba3ecc1339d4c4c10c0d8890"><div class="ttname"><a href="structarmnn_1_1_optimizer_options.xhtml#a05c1bba6ba3ecc1339d4c4c10c0d8890">armnn::OptimizerOptions::m_ImportEnabled</a></div><div class="ttdeci">bool m_ImportEnabled</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00165">INetwork.hpp:165</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimization_result_xhtml_a41a657cfacb52a80a73575c5c730ab88"><div class="ttname"><a href="structarmnn_1_1_optimization_result.xhtml#a41a657cfacb52a80a73575c5c730ab88">armnn::OptimizationResult::m_Error</a></div><div class="ttdeci">bool m_Error</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00293">Network.hpp:293</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ad443897d51b291c83d81d809af07f4e0"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ad443897d51b291c83d81d809af07f4e0">armnn::NetworkImpl::~NetworkImpl</a></div><div class="ttdeci">~NetworkImpl()</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01672">Network.cpp:1672</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_handle_factory_registry_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">armnn::TensorHandleFactoryRegistry</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_handle_factory_registry_8hpp_source.xhtml#l00020">TensorHandleFactoryRegistry.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_addition_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_addition_layer.xhtml">armnn::AdditionLayer</a></div><div class="ttdoc">This layer represents an addition operation. </div><div class="ttdef"><b>Definition:</b> <a href="_addition_layer_8hpp_source.xhtml#l00013">AdditionLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ac7dca3e9f2ab2f2c64b42fc59a67188a"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a">armnn::INetwork::AddComparisonLayer</a></div><div class="ttdeci">IConnectableLayer * AddComparisonLayer(const ComparisonDescriptor &amp;comparisonDescriptor, const char *name=nullptr)</div><div class="ttdoc">Add a Comparison layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00063">Network.cpp:63</a></div></div>
<div class="ttc" id="classarmnn_1_1_q_lstm_layer_xhtml_aada2b9060461ecf785d483eee0dc071a"><div class="ttname"><a href="classarmnn_1_1_q_lstm_layer.xhtml#aada2b9060461ecf785d483eee0dc071a">armnn::QLstmLayer::m_BasicParameters</a></div><div class="ttdeci">QLstmBasicParameters m_BasicParameters</div><div class="ttdef"><b>Definition:</b> <a href="_q_lstm_layer_8hpp_source.xhtml#l00083">QLstmLayer.hpp:83</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_aafbd4b469e47160017f409df8d077184"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#aafbd4b469e47160017f409df8d077184">armnn::Graph::SubstituteSubgraph</a></div><div class="ttdeci">void SubstituteSubgraph(SubgraphView &amp;subgraph, IConnectableLayer *substituteLayer)</div><div class="ttdoc">Substitutes the given sub-graph with either a new layer or a new sub-graph. </div><div class="ttdef"><b>Definition:</b> <a href="_graph_8cpp_source.xhtml#l00432">Graph.cpp:432</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_aaff51346dadec2c1430abf007fed4cc9"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#aaff51346dadec2c1430abf007fed4cc9">armnn::NetworkImpl::AddL2NormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddL2NormalizationLayer(const L2NormalizationDescriptor &amp;desc, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02015">Network.cpp:2015</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_adc8c1c505bca8233fe238b3b7fb80200"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#adc8c1c505bca8233fe238b3b7fb80200">armnn::INetwork::AddArgMinMaxLayer</a></div><div class="ttdeci">IConnectableLayer * AddArgMinMaxLayer(const ArgMinMaxDescriptor &amp;desc, const char *name=nullptr)</div><div class="ttdoc">Adds an ArgMinMax layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00056">Network.cpp:56</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_af002111f64aee648e3258247075cae36"><div class="ttname"><a href="namespacearmnn.xhtml#af002111f64aee648e3258247075cae36">armnn::CheckScaleSetOnQuantizedType</a></div><div class="ttdeci">bool CheckScaleSetOnQuantizedType(Layer *layer, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00602">Network.cpp:602</a></div></div>
<div class="ttc" id="_cpu_tensor_handle_8hpp_xhtml"><div class="ttname"><a href="_cpu_tensor_handle_8hpp.xhtml">CpuTensorHandle.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a6f6d81d8a4f1f85f3616e8306760061c"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a6f6d81d8a4f1f85f3616e8306760061c">armnn::INetwork::AddSplitterLayer</a></div><div class="ttdeci">IConnectableLayer * AddSplitterLayer(const ViewsDescriptor &amp;splitterDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a splitter layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00240">Network.cpp:240</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_ad0b8c32bb5381f4cc999093ba3b98b43"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#ad0b8c32bb5381f4cc999093ba3b98b43">armnn::LstmInputParams::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstTensor * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00059">LstmParams.hpp:59</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_af29f6883785691ef946d0c32b6d2f338"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#af29f6883785691ef946d0c32b6d2f338">armnn::OutputSlot::SetTensorHandleFactory</a></div><div class="ttdeci">void SetTensorHandleFactory(const ITensorHandleFactory::FactoryId &amp;id)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.xhtml#l00171">Layer.cpp:171</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_ace7a1f1f1041b412b7d8ef82b95ff352"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#ace7a1f1f1041b412b7d8ef82b95ff352">armnn::LstmInputParams::m_ForgetGateBias</a></div><div class="ttdeci">const ConstTensor * m_ForgetGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00052">LstmParams.hpp:52</a></div></div>
<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">armnn::SpaceToBatchNdDescriptor</a></div><div class="ttdoc">A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00852">Descriptors.hpp:852</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a49e11acda22742cbaf6f1b259ead0d84"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a49e11acda22742cbaf6f1b259ead0d84">armnn::LstmInputParams::m_InputToCellWeights</a></div><div class="ttdeci">const ConstTensor * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00042">LstmParams.hpp:42</a></div></div>
<div class="ttc" id="classarmnn_1_1_slice_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_slice_layer.xhtml">armnn::SliceLayer</a></div><div class="ttdef"><b>Definition:</b> <a href="_slice_layer_8hpp_source.xhtml#l00013">SliceLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_aff3fde909d22ed157046682e70129259"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#aff3fde909d22ed157046682e70129259">armnn::IOptimizedNetwork::PrintGraph</a></div><div class="ttdeci">Status PrintGraph()</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00537">Network.cpp:537</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ae0b1382e3af141896a46531c50e8863f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ae0b1382e3af141896a46531c50e8863f">armnn::optimizations::PermuteAsReshape</a></div><div class="ttdeci">OptimizeForType&lt; PermuteLayer, PermuteAsReshapeImpl &gt; PermuteAsReshape</div><div class="ttdef"><b>Definition:</b> <a href="_permute_as_reshape_8hpp_source.xhtml#l00066">PermuteAsReshape.hpp:66</a></div></div>
<div class="ttc" id="structarmnn_1_1_optimization_result_xhtml_a2a35773a5a0e08b180a12205c3e15500"><div class="ttname"><a href="structarmnn_1_1_optimization_result.xhtml#a2a35773a5a0e08b180a12205c3e15500">armnn::OptimizationResult::IsWarningOnly</a></div><div class="ttdeci">bool IsWarningOnly() const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00305">Network.hpp:305</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a6e30c7b3451da3ea9cf4259fb602e6e6"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a6e30c7b3451da3ea9cf4259fb602e6e6">armnn::LstmInputParams::m_InputToOutputWeights</a></div><div class="ttdeci">const ConstTensor * m_InputToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00043">LstmParams.hpp:43</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a10c50bc964cc8cc559eebcd7df5a8af3aa47abd1077ef632a38ada05b6edbf389"><div class="ttname"><a href="namespacearmnn.xhtml#a10c50bc964cc8cc559eebcd7df5a8af3aa47abd1077ef632a38ada05b6edbf389">armnn::CapabilityClass::PaddingRequired</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aba7b0ca6192b8b58ecd517a82b4f378e"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aba7b0ca6192b8b58ecd517a82b4f378e">armnn::optimizations::SquashEqualTransposeSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, TransposeLayer, SquashEqualSiblingsImpl&lt; TransposeLayer &gt; &gt; SquashEqualTransposeSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00069">SquashEqualSiblings.hpp:69</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">armnn::EdgeStrategy</a></div><div class="ttdeci">EdgeStrategy</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00099">ITensorHandleFactory.hpp:99</a></div></div>
<div class="ttc" id="classarmnn_1_1_q_lstm_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_q_lstm_layer.xhtml">armnn::QLstmLayer</a></div><div class="ttdoc">This layer represents a QLstm operation. </div><div class="ttdef"><b>Definition:</b> <a href="_q_lstm_layer_8hpp_source.xhtml#l00079">QLstmLayer.hpp:79</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a39f1b38d89c4de186742eafcbb3b1319"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a39f1b38d89c4de186742eafcbb3b1319">armnn::INetwork::AddAdditionLayer</a></div><div class="ttdeci">IConnectableLayer * AddAdditionLayer(const char *name=nullptr)</div><div class="ttdoc">Adds an addition layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00262">Network.cpp:262</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_aba6d12c9d5671017b6711b80316069ff"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#aba6d12c9d5671017b6711b80316069ff">armnn::QuantizedLstmInputParams::GetInputGateBias</a></div><div class="ttdeci">const ConstTensor &amp; GetInputGateBias() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00098">QuantizedLstmParams.hpp:98</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimization_views_xhtml_a9a1555f25af4a0ae2c0a1fc0ed9aded8"><div class="ttname"><a href="classarmnn_1_1_optimization_views.xhtml#a9a1555f25af4a0ae2c0a1fc0ed9aded8">armnn::OptimizationViews::GetSubstitutions</a></div><div class="ttdeci">const Substitutions &amp; GetSubstitutions() const</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00049">OptimizationViews.hpp:49</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_settings_xhtml_ae6d0506ac92f9ba9529d019847144aa3"><div class="ttname"><a href="structarmnn_1_1_backend_settings.xhtml#ae6d0506ac92f9ba9529d019847144aa3">armnn::BackendSettings::m_PreferredBackends</a></div><div class="ttdeci">BackendIdVector m_PreferredBackends</div><div class="ttdef"><b>Definition:</b> <a href="_backend_settings_8hpp_source.xhtml#l00020">BackendSettings.hpp:20</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml"><div class="ttname"><a href="_assert_8hpp.xhtml">Assert.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_subtraction_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_subtraction_layer.xhtml">armnn::SubtractionLayer</a></div><div class="ttdoc">This layer represents a subtraction operation. </div><div class="ttdef"><b>Definition:</b> <a href="_subtraction_layer_8hpp_source.xhtml#l00014">SubtractionLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_profiling_service_xhtml"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_profiling_service.xhtml">armnn::profiling::ProfilingService</a></div><div class="ttdef"><b>Definition:</b> <a href="_profiling_service_8hpp_source.xhtml#l00049">ProfilingService.hpp:49</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ab067ba4ee9416d93abb8a52f3dc8feba"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ab067ba4ee9416d93abb8a52f3dc8feba">armnn::NetworkImpl::AddTransposeLayer</a></div><div class="ttdeci">IConnectableLayer * AddTransposeLayer(const TransposeDescriptor &amp;transposeDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02300">Network.cpp:2300</a></div></div>
<div class="ttc" id="classarmnn_1_1_switch_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_switch_layer.xhtml">armnn::SwitchLayer</a></div><div class="ttdoc">This layer calculates both true and false outputs for input. </div><div class="ttdef"><b>Definition:</b> <a href="_switch_layer_8hpp_source.xhtml#l00013">SwitchLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_scoped_cpu_tensor_handle_xhtml"><div class="ttname"><a href="classarmnn_1_1_scoped_cpu_tensor_handle.xhtml">armnn::ScopedCpuTensorHandle</a></div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.xhtml#l00106">CpuTensorHandle.hpp:106</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a8a3380be13fba749fc4208214b049347"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a8a3380be13fba749fc4208214b049347">armnn::INetwork::AddReshapeLayer</a></div><div class="ttdeci">IConnectableLayer * AddReshapeLayer(const ReshapeDescriptor &amp;reshapeDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a reshape layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00337">Network.cpp:337</a></div></div>
<div class="ttc" id="_layer_8hpp_xhtml"><div class="ttname"><a href="_layer_8hpp.xhtml">Layer.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_empty_optional_xhtml"><div class="ttname"><a href="structarmnn_1_1_empty_optional.xhtml">armnn::EmptyOptional</a></div><div class="ttdoc">EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00032">Optional.hpp:32</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a6e2df484ecc65bc82712590b96e04df4"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a6e2df484ecc65bc82712590b96e04df4">armnn::INetwork::AddPadLayer</a></div><div class="ttdeci">IConnectableLayer * AddPadLayer(const PadDescriptor &amp;padDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a fully pad layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00391">Network.cpp:391</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a06cac66872538895dd6b59cdf39173d2"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a06cac66872538895dd6b59cdf39173d2">armnn::optimizations::ConvertConstantsHalfToFloat</a></div><div class="ttdeci">ConvertConstants&lt; Float16ToFloat32, IsFloat32Layer &gt; ConvertConstantsHalfToFloat</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.xhtml#l00154">ConvertConstants.hpp:154</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_descriptor_xhtml_ae1a4b3b6c60552509b89747cebb900a2"><div class="ttname"><a href="structarmnn_1_1_resize_descriptor.xhtml#ae1a4b3b6c60552509b89747cebb900a2">armnn::ResizeDescriptor::m_AlignCorners</a></div><div class="ttdeci">bool m_AlignCorners</div><div class="ttdoc">Aligned corners. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00825">Descriptors.hpp:825</a></div></div>
<div class="ttc" id="structarmnn_1_1_elementwise_unary_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">armnn::ElementwiseUnaryDescriptor</a></div><div class="ttdoc">A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00098">Descriptors.hpp:98</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_ae83131e16df1cace69395a5f99bc5ecb"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#ae83131e16df1cace69395a5f99bc5ecb">armnn::LstmInputParams::m_RecurrentToForgetWeights</a></div><div class="ttdeci">const ConstTensor * m_RecurrentToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00045">LstmParams.hpp:45</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_selector_xhtml_a3730b0a6006f0d87f894a44e01869d90"><div class="ttname"><a href="classarmnn_1_1_subgraph_view_selector.xhtml#a3730b0a6006f0d87f894a44e01869d90">armnn::SubgraphViewSelector::SelectSubgraphs</a></div><div class="ttdeci">static Subgraphs SelectSubgraphs(Graph &amp;graph, const LayerSelectorFunction &amp;selector)</div><div class="ttdoc">Selects subgraphs from a graph based on the selector function and the algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.xhtml#l00255">SubgraphViewSelector.cpp:255</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a8a3380be13fba749fc4208214b049347"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a8a3380be13fba749fc4208214b049347">armnn::NetworkImpl::AddReshapeLayer</a></div><div class="ttdeci">IConnectableLayer * AddReshapeLayer(const ReshapeDescriptor &amp;reshapeDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02036">Network.cpp:2036</a></div></div>
<div class="ttc" id="classarmnn_1_1_l2_normalization_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_l2_normalization_layer.xhtml">armnn::L2NormalizationLayer</a></div><div class="ttdoc">This layer represents a L2 normalization operation. </div><div class="ttdef"><b>Definition:</b> <a href="_l2_normalization_layer_8hpp_source.xhtml#l00013">L2NormalizationLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a57590d7777211673d2052f702f0b07a1"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a57590d7777211673d2052f702f0b07a1">armnn::NetworkImpl::AddMaximumLayer</a></div><div class="ttdeci">IConnectableLayer * AddMaximumLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01926">Network.cpp:1926</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_a2ceda8d369e861997d558fac74d79c33"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#a2ceda8d369e861997d558fac74d79c33">armnn::Graph::InferTensorInfos</a></div><div class="ttdeci">void InferTensorInfos()</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8cpp_source.xhtml#l00529">Graph.cpp:529</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a1ec6b4c20ed294a96cf94c33c24caaf5"><div class="ttname"><a href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">armnn::CreateSupportedBackends</a></div><div class="ttdeci">BackendsMap CreateSupportedBackends(TensorHandleFactoryRegistry &amp;handleFactoryRegistry, BackendSettings &amp;backendSettings)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01009">Network.cpp:1009</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ae1509d340bc981b11101c3316ee8afd6"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ae1509d340bc981b11101c3316ee8afd6">armnn::optimizations::OptimizeInverseConversionsFp32</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp32ToFp16Layer, ConvertFp16ToFp32Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp32</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.xhtml#l00044">OptimizeInverseConversions.hpp:44</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_accb1637c58e1523f740025e0d0e7c6dd"><div class="ttname"><a href="namespacearmnn.xhtml#accb1637c58e1523f740025e0d0e7c6dd">armnn::CalculateSlotOptionForInput</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOptionForInput(BackendsMap &amp;backends, OutputSlot &amp;slot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01147">Network.cpp:1147</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a446181daeb60b49cbcfd9f907f974ec1"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a446181daeb60b49cbcfd9f907f974ec1">armnn::NetworkImpl::AddStackLayer</a></div><div class="ttdeci">IConnectableLayer * AddStackLayer(const StackDescriptor &amp;stackDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02306">Network.cpp:2306</a></div></div>
<div class="ttc" id="_exceptions_8hpp_xhtml"><div class="ttname"><a href="_exceptions_8hpp.xhtml">Exceptions.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a30528a3bd85a0dba158bd14e252bd68a"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a30528a3bd85a0dba158bd14e252bd68a">armnn::NetworkImpl::AddSoftmaxLayer</a></div><div class="ttdeci">IConnectableLayer * AddSoftmaxLayer(const SoftmaxDescriptor &amp;softmaxDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01914">Network.cpp:1914</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_id_xhtml_af7445617163d3f07c47b92ae56c6cf8b"><div class="ttname"><a href="classarmnn_1_1_backend_id.xhtml#af7445617163d3f07c47b92ae56c6cf8b">armnn::BackendId::Get</a></div><div class="ttdeci">const std::string &amp; Get() const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00136">BackendId.hpp:136</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a9fcd8cc35c8ae7d092705e7c4c2a7c69"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a9fcd8cc35c8ae7d092705e7c4c2a7c69">armnn::NetworkImpl::AddGreaterLayer</a></div><div class="ttdeci">IConnectableLayer * AddGreaterLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02236">Network.cpp:2236</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00041">ITensorHandleFactory.hpp:41</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a6c5376053e1f875776d7bc36fd0b7d45"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a6c5376053e1f875776d7bc36fd0b7d45">armnn::INetwork::AddNormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddNormalizationLayer(const NormalizationDescriptor &amp;normalizationDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a normalization layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00224">Network.cpp:224</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_settings_xhtml_aa09ac75b83067c5ed455f2bb35c7c98d"><div class="ttname"><a href="structarmnn_1_1_backend_settings.xhtml#aa09ac75b83067c5ed455f2bb35c7c98d">armnn::BackendSettings::m_SelectedBackends</a></div><div class="ttdeci">BackendIdSet m_SelectedBackends</div><div class="ttdef"><b>Definition:</b> <a href="_backend_settings_8hpp_source.xhtml#l00022">BackendSettings.hpp:22</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a7ba52238d75f06ff59a0d2ba613acefe"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a7ba52238d75f06ff59a0d2ba613acefe">armnn::NetworkImpl::AddEqualLayer</a></div><div class="ttdeci">IConnectableLayer * AddEqualLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02241">Network.cpp:2241</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_afc94c35c0bbe852a60046bf2e756b2e0"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#afc94c35c0bbe852a60046bf2e756b2e0">armnn::NetworkImpl::AddFillLayer</a></div><div class="ttdeci">IConnectableLayer * AddFillLayer(const FillDescriptor &amp;fillDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01705">Network.cpp:1705</a></div></div>
<div class="ttc" id="classarmnn_1_1_input_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a></div><div class="ttdoc">A layer user-provided data can be bound to (e.g. inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_input_layer_8hpp_source.xhtml#l00013">InputLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_ab45dae688fc5d8983727abffa4389003"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#ab45dae688fc5d8983727abffa4389003">armnn::Graph::end</a></div><div class="ttdeci">Iterator end()</div><div class="ttdoc">Returns iterator pointing to the end of the list. Lowercase for range-based for loops. </div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00164">Graph.hpp:164</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a63e34dd3e41262e750f7a54de8ca81d1"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a63e34dd3e41262e750f7a54de8ca81d1">armnn::QuantizedLstmInputParams::GetRecurrentToCellWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetRecurrentToCellWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00088">QuantizedLstmParams.hpp:88</a></div></div>
<div class="ttc" id="_network_8hpp_xhtml"><div class="ttname"><a href="_network_8hpp.xhtml">Network.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_afe0a4f719f9752a405e71878da7012ba"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#afe0a4f719f9752a405e71878da7012ba">armnn::NetworkImpl::GetGraph</a></div><div class="ttdeci">const Graph &amp; GetGraph() const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00037">Network.hpp:37</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56f168327453ea4461cbc1c0ac7f15b6"><div class="ttname"><a href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">armnn::AttemptBackendAssignment</a></div><div class="ttdeci">OptimizationResult AttemptBackendAssignment(BackendSettings &amp;backendSettings, Graph &amp;graph, Layer *layer, BackendId backend, DataType dataTypeIn, DataType dataTypeOut, const std::vector&lt; BackendId &gt; &amp;availablePreferredBackends, std::string &amp;reasonIfUnsupported, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00661">Network.cpp:661</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a339c19855613274cf0ea13921af9e5a3"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a339c19855613274cf0ea13921af9e5a3">armnn::QuantizedLstmInputParams::GetInputToForgetWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetInputToForgetWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00063">QuantizedLstmParams.hpp:63</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_handle_factory_registry_xhtml_ae5ecc42140a12c855554a4a621fc8456"><div class="ttname"><a href="classarmnn_1_1_tensor_handle_factory_registry.xhtml#ae5ecc42140a12c855554a4a621fc8456">armnn::TensorHandleFactoryRegistry::GetFactory</a></div><div class="ttdeci">ITensorHandleFactory * GetFactory(ITensorHandleFactory::FactoryId id) const</div><div class="ttdoc">Find a TensorHandleFactory by Id Returns nullptr if not found. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_handle_factory_registry_8cpp_source.xhtml#l00039">TensorHandleFactoryRegistry.cpp:39</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_a7e5c5771d741dd5473989047a9314728"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">armnn::OutputSlot::SetTensorInfo</a></div><div class="ttdeci">void SetTensorInfo(const TensorInfo &amp;tensorInfo) override</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.xhtml#l00058">Layer.cpp:58</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
<div class="ttc" id="classarmnn_1_1_optimized_network_impl_xhtml_afc73993a557309c43043aa0592fd7981"><div class="ttname"><a href="classarmnn_1_1_optimized_network_impl.xhtml#afc73993a557309c43043aa0592fd7981">armnn::OptimizedNetworkImpl::OptimizedNetworkImpl</a></div><div class="ttdeci">OptimizedNetworkImpl(std::unique_ptr&lt; Graph &gt; graph)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02521">Network.cpp:2521</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a435d3651482bbfcc11263b4e4e0c900f"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a435d3651482bbfcc11263b4e4e0c900f">armnn::LstmInputParams::m_RecurrentToInputWeights</a></div><div class="ttdeci">const ConstTensor * m_RecurrentToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00044">LstmParams.hpp:44</a></div></div>
<div class="ttc" id="structarmnn_1_1_mean_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_mean_descriptor.xhtml">armnn::MeanDescriptor</a></div><div class="ttdoc">A MeanDescriptor for the MeanLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00951">Descriptors.hpp:951</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_a32f4aa6a7089d877af08928139c2c277"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">armnn::ITensorHandleFactory::FactoryId</a></div><div class="ttdeci">std::string FactoryId</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00044">ITensorHandleFactory.hpp:44</a></div></div>
<div class="ttc" id="classarmnn_1_1_division_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_division_layer.xhtml">armnn::DivisionLayer</a></div><div class="ttdoc">This layer represents a division operation. </div><div class="ttdef"><b>Definition:</b> <a href="_division_layer_8hpp_source.xhtml#l00014">DivisionLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a26794f014974a6f963a8925de07bffeb"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a26794f014974a6f963a8925de07bffeb">armnn::IOptimizedNetwork::SerializeToDot</a></div><div class="ttdeci">Status SerializeToDot(std::ostream &amp;stream) const</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00542">Network.cpp:542</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a72b9d30e9d555bb5c35460b62faedf0d"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a72b9d30e9d555bb5c35460b62faedf0d">armnn::NetworkImpl::AddSpaceToBatchNdLayer</a></div><div class="ttdeci">IConnectableLayer * AddSpaceToBatchNdLayer(const SpaceToBatchNdDescriptor &amp;spaceToBatchNdDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02042">Network.cpp:2042</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a40067b05f30a3ab65568c826df7a8ea7"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a40067b05f30a3ab65568c826df7a8ea7">armnn::INetwork::AddQuantizedLstmLayer</a></div><div class="ttdeci">IConnectableLayer * AddQuantizedLstmLayer(const QuantizedLstmInputParams &amp;params, const char *name=nullptr)</div><div class="ttdoc">Add a QuantizedLstm layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00476">Network.cpp:476</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_layer_visitor_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_layer_visitor.xhtml">armnn::ILayerVisitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_layer_visitor_8hpp_source.xhtml#l00016">ILayerVisitor.hpp:16</a></div></div>
<div class="ttc" id="classarmnn_1_1_strided_slice_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_strided_slice_layer.xhtml">armnn::StridedSliceLayer</a></div><div class="ttdoc">This layer represents a strided slice operation. </div><div class="ttdef"><b>Definition:</b> <a href="_strided_slice_layer_8hpp_source.xhtml#l00013">StridedSliceLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_maximum_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_maximum_layer.xhtml">armnn::MaximumLayer</a></div><div class="ttdoc">This layer represents a maximum operation. </div><div class="ttdef"><b>Definition:</b> <a href="_maximum_layer_8hpp_source.xhtml#l00014">MaximumLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a0e36688a43c35668d8db5257274c68fe"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">armnn::Layer::GetOutputSlot</a></div><div class="ttdeci">const OutputSlot &amp; GetOutputSlot(unsigned int index=0) const override</div><div class="ttdoc">Get the const output slot handle by slot index. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00318">Layer.hpp:318</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_ad2e53e6428416a65ae4ba566207cc6bf"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#ad2e53e6428416a65ae4ba566207cc6bf">armnn::QuantizedLstmInputParams::GetRecurrentToInputWeights</a></div><div class="ttdeci">const ConstTensor &amp; GetRecurrentToInputWeights() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00078">QuantizedLstmParams.hpp:78</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a86d19da62b6cfed3928f6fe7026f22fa"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a86d19da62b6cfed3928f6fe7026f22fa">armnn::optimizations::Fp32NetworkToFp16Converter</a></div><div class="ttdeci">OptimizeForType&lt; Layer, ConvertFp32NetworkToFp16Impl &gt; Fp32NetworkToFp16Converter</div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp32_network_to_fp16_8hpp_source.xhtml#l00087">ConvertFp32NetworkToFp16.hpp:87</a></div></div>
<div class="ttc" id="classarmnn_1_1_prelu_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_prelu_layer.xhtml">armnn::PreluLayer</a></div><div class="ttdef"><b>Definition:</b> <a href="_prelu_layer_8hpp_source.xhtml#l00014">PreluLayer.hpp:14</a></div></div>
<div class="ttc" id="structarmnn_1_1_transpose_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_transpose_descriptor.xhtml">armnn::TransposeDescriptor</a></div><div class="ttdoc">A TransposeDescriptor for the TransposeLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01263">Descriptors.hpp:1263</a></div></div>
<div class="ttc" id="structarmnn_1_1_strided_slice_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_strided_slice_descriptor.xhtml">armnn::StridedSliceDescriptor</a></div><div class="ttdoc">A StridedSliceDescriptor for the StridedSliceLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01076">Descriptors.hpp:1076</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_ac7dca3e9f2ab2f2c64b42fc59a67188a"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#ac7dca3e9f2ab2f2c64b42fc59a67188a">armnn::NetworkImpl::AddComparisonLayer</a></div><div class="ttdeci">IConnectableLayer * AddComparisonLayer(const ComparisonDescriptor &amp;comparisonDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01693">Network.cpp:1693</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a86541d11fcad5246a78cbc21d637a504"><div class="ttname"><a href="namespacearmnn.xhtml#a86541d11fcad5246a78cbc21d637a504">armnn::SelectTensorHandleStrategy</a></div><div class="ttdeci">OptimizationResult SelectTensorHandleStrategy(Graph &amp;optGraph, BackendsMap &amp;backends, TensorHandleFactoryRegistry &amp;registry, bool importEnabled, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01434">Network.cpp:1434</a></div></div>
<div class="ttc" id="classarmnn_1_1_subgraph_view_xhtml_a2fc512b3ddb7bb2cdf02f44038ca2500"><div class="ttname"><a href="classarmnn_1_1_subgraph_view.xhtml#a2fc512b3ddb7bb2cdf02f44038ca2500">armnn::SubgraphView::begin</a></div><div class="ttdeci">Iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_8cpp_source.xhtml#l00169">SubgraphView.cpp:169</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a38e626422579decc13e3ee37da1a84c9"><div class="ttname"><a href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">armnn::ReportWarning</a></div><div class="ttdeci">void ReportWarning(const std::string &amp;warningMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00575">Network.cpp:575</a></div></div>
<div class="ttc" id="classarmnn_1_1_convolution2d_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_convolution2d_layer.xhtml">armnn::Convolution2dLayer</a></div><div class="ttdoc">This layer represents a convolution 2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_convolution2d_layer_8hpp_source.xhtml#l00015">Convolution2dLayer.hpp:15</a></div></div>
<div class="ttc" id="classarmnn_1_1_convert_fp32_to_bf16_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_convert_fp32_to_bf16_layer.xhtml">armnn::ConvertFp32ToBf16Layer</a></div><div class="ttdoc">This layer converts data type Float32 to BFloat16. </div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp32_to_bf16_layer_8hpp_source.xhtml#l00014">ConvertFp32ToBf16Layer.hpp:14</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a84f86b4de5adf0b164e811c87051a0ee"><div class="ttname"><a href="namespacearmnn.xhtml#a84f86b4de5adf0b164e811c87051a0ee">armnn::CheckFlag</a></div><div class="ttdeci">bool CheckFlag(MemorySourceFlags flags, MemorySource source)</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.xhtml#l00047">MemorySources.hpp:47</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a63cbc581012c957f9d68d224ddc3e43c"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a63cbc581012c957f9d68d224ddc3e43c">armnn::TensorInfo::SetQuantizationOffset</a></div><div class="ttdeci">void SetQuantizationOffset(int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00480">Tensor.cpp:480</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a26e69cda5fe9642f9198c24ae5fdf9bc"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a26e69cda5fe9642f9198c24ae5fdf9bc">armnn::INetwork::AddSwitchLayer</a></div><div class="ttdeci">IConnectableLayer * AddSwitchLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a switch layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00440">Network.cpp:440</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ac1134a94265293ea7347180260f787d2"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ac1134a94265293ea7347180260f787d2">armnn::INetwork::AddDetectionPostProcessLayer</a></div><div class="ttdeci">IConnectableLayer * AddDetectionPostProcessLayer(const DetectionPostProcessDescriptor &amp;descriptor, const ConstTensor &amp;anchors, const char *name=nullptr)</div><div class="ttdoc">Adds a Detection PostProcess layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00152">Network.cpp:152</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a230005513ac5eee1f3944b1960b6f2ed"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a230005513ac5eee1f3944b1960b6f2ed">armnn::INetwork::CreateRaw</a></div><div class="ttdeci">static INetwork * CreateRaw(NetworkOptions networkOptions={})</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00505">Network.cpp:505</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a34aa5f1a405a6886f79c97d53f9f65fd"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a34aa5f1a405a6886f79c97d53f9f65fd">armnn::INetwork::AddMergerLayer</a></div><div class="ttdeci">IConnectableLayer * AddMergerLayer(const MergerDescriptor &amp;mergerDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a concat layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00251">Network.cpp:251</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_abb59f6ba9988dae88e0f48e68d87fc32"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#abb59f6ba9988dae88e0f48e68d87fc32">armnn::INetwork::AddMultiplicationLayer</a></div><div class="ttdeci">IConnectableLayer * AddMultiplicationLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a multiplication layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00267">Network.cpp:267</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a74894d085e78ff80f45fc09dd2381f08"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a74894d085e78ff80f45fc09dd2381f08">armnn::INetwork::AddStandInLayer</a></div><div class="ttdeci">IConnectableLayer * AddStandInLayer(const StandInDescriptor &amp;descriptor, const char *name=nullptr)</div><div class="ttdoc">Add a stand-in layer for a type unknown to the Arm NN framework. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00470">Network.cpp:470</a></div></div>
<div class="ttc" id="classarmnn_1_1_mean_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_mean_layer.xhtml">armnn::MeanLayer</a></div><div class="ttdoc">This layer represents a mean operation. </div><div class="ttdef"><b>Definition:</b> <a href="_mean_layer_8hpp_source.xhtml#l00014">MeanLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_comparison_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_comparison_layer.xhtml">armnn::ComparisonLayer</a></div><div class="ttdoc">This layer represents a comparison operation. </div><div class="ttdef"><b>Definition:</b> <a href="_comparison_layer_8hpp_source.xhtml#l00014">ComparisonLayer.hpp:14</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00173">INetwork.hpp:173</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a8f798e19187ac7ae6ae6153ee64ab645"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a8f798e19187ac7ae6ae6153ee64ab645">armnn::NetworkImpl::AddBatchNormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddBatchNormalizationLayer(const BatchNormalizationDescriptor &amp;desc, const ConstTensor &amp;mean, const ConstTensor &amp;variance, const ConstTensor &amp;beta, const ConstTensor &amp;gamma, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01962">Network.cpp:1962</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ae0cfae1ea51669892608a1a060d24fa0"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ae0cfae1ea51669892608a1a060d24fa0">armnn::INetwork::AddReduceLayer</a></div><div class="ttdeci">IConnectableLayer * AddReduceLayer(const ReduceDescriptor &amp;reduceDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a reduce layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00307">Network.cpp:307</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a095a9b700dc857edc23c5d3bf088919f"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a095a9b700dc857edc23c5d3bf088919f">armnn::INetwork::AddElementwiseUnaryLayer</a></div><div class="ttdeci">IConnectableLayer * AddElementwiseUnaryLayer(const ElementwiseUnaryDescriptor &amp;elementwiseUnaryDescriptor, const char *name=nullptr)</div><div class="ttdoc">Add an ElementwiseUnary layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00161">Network.cpp:161</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a4fc55afb4885278ad1510b2c4307af76"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a4fc55afb4885278ad1510b2c4307af76">armnn::optimizations::AddBroadcastReshapeLayer</a></div><div class="ttdeci">OptimizeForType&lt; Layer, AddBroadcastReshapeLayerImpl &gt; AddBroadcastReshapeLayer</div><div class="ttdef"><b>Definition:</b> <a href="_add_broadcast_reshape_layer_8hpp_source.xhtml#l00082">AddBroadcastReshapeLayer.hpp:82</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a31f19249d1491464736b08b967be68b4"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a31f19249d1491464736b08b967be68b4">armnn::NetworkImpl::AddGatherLayer</a></div><div class="ttdeci">IConnectableLayer * AddGatherLayer(const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02251">Network.cpp:2251</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a357aca04172ed22fa32e5a69122b0fec"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a357aca04172ed22fa32e5a69122b0fec">armnn::INetwork::AddDequantizeLayer</a></div><div class="ttdeci">IConnectableLayer * AddDequantizeLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a Dequantize layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00146">Network.cpp:146</a></div></div>
<div class="ttc" id="classarmnn_1_1_depthwise_convolution2d_layer_xhtml_a2664044e28e69309ea08ef385fe53903"><div class="ttname"><a href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml#a2664044e28e69309ea08ef385fe53903">armnn::DepthwiseConvolution2dLayer::m_Weight</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_Weight</div><div class="ttdoc">A unique pointer to store Weight values. </div><div class="ttdef"><b>Definition:</b> <a href="_depthwise_convolution2d_layer_8hpp_source.xhtml#l00019">DepthwiseConvolution2dLayer.hpp:19</a></div></div>
<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml">armnn::Pooling2dDescriptor</a></div><div class="ttdoc">A Pooling2dDescriptor for the Pooling2dLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00329">Descriptors.hpp:329</a></div></div>
<div class="ttc" id="classarmnn_1_1_merge_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_merge_layer.xhtml">armnn::MergeLayer</a></div><div class="ttdoc">This layer dequantizes the input tensor. </div><div class="ttdef"><b>Definition:</b> <a href="_merge_layer_8hpp_source.xhtml#l00013">MergeLayer.hpp:13</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a9b18daea2e9f42386055326fd016519a"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a9b18daea2e9f42386055326fd016519a">armnn::LstmInputParams::m_OutputLayerNormWeights</a></div><div class="ttdeci">const ConstTensor * m_OutputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00060">LstmParams.hpp:60</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_settings_xhtml"><div class="ttname"><a href="structarmnn_1_1_backend_settings.xhtml">armnn::BackendSettings</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_settings_8hpp_source.xhtml#l00018">BackendSettings.hpp:18</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"><div class="ttname"><a href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">armnn::UnaryOperation::Rsqrt</a></div></div>
<div class="ttc" id="structarmnn_1_1_normalization_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_normalization_descriptor.xhtml">armnn::NormalizationDescriptor</a></div><div class="ttdoc">A NormalizationDescriptor for the NormalizationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00567">Descriptors.hpp:567</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a6d614a503a34ea3712b388aa4340ddbe"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a6d614a503a34ea3712b388aa4340ddbe">armnn::INetwork::AddPreluLayer</a></div><div class="ttdeci">IConnectableLayer * AddPreluLayer(const char *name=nullptr)</div><div class="ttdoc">Adds a PReLU layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00445">Network.cpp:445</a></div></div>
<div class="ttc" id="classarmnn_1_1_rank_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_rank_layer.xhtml">armnn::RankLayer</a></div><div class="ttdef"><b>Definition:</b> <a href="_rank_layer_8hpp_source.xhtml#l00013">RankLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a9fcd8cc35c8ae7d092705e7c4c2a7c69"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a9fcd8cc35c8ae7d092705e7c4c2a7c69">armnn::INetwork::AddGreaterLayer</a></div><div class="ttdeci">IConnectableLayer * AddGreaterLayer(const char *name=nullptr)</div><div class="ttdoc">Add a Greater layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00413">Network.cpp:413</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_af1853466264ac187607c96b501a74e2b"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#af1853466264ac187607c96b501a74e2b">armnn::NetworkImpl::AddDepthToSpaceLayer</a></div><div class="ttdeci">IConnectableLayer * AddDepthToSpaceLayer(const DepthToSpaceDescriptor &amp;depthToSpaceDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01834">Network.cpp:1834</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a57590d7777211673d2052f702f0b07a1"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a57590d7777211673d2052f702f0b07a1">armnn::INetwork::AddMaximumLayer</a></div><div class="ttdeci">IConnectableLayer * AddMaximumLayer(const char *name=nullptr)</div><div class="ttdoc">Add a Maximum layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00381">Network.cpp:381</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_resize_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::ResizeDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00823">Descriptors.hpp:823</a></div></div>
<div class="ttc" id="structarmnn_1_1_detection_post_process_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_detection_post_process_descriptor.xhtml">armnn::DetectionPostProcessDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00511">Descriptors.hpp:511</a></div></div>
<div class="ttc" id="structarmnn_1_1_instance_normalization_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_instance_normalization_descriptor.xhtml">armnn::InstanceNormalizationDescriptor</a></div><div class="ttdoc">An InstanceNormalizationDescriptor for InstanceNormalizationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00645">Descriptors.hpp:645</a></div></div>
<div class="ttc" id="classarmnn_1_1_multiplication_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_multiplication_layer.xhtml">armnn::MultiplicationLayer</a></div><div class="ttdoc">This layer represents a multiplication operation. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplication_layer_8hpp_source.xhtml#l00014">MultiplicationLayer.hpp:14</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a178a72bbf254eff34a807a5ca27cb61f"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a178a72bbf254eff34a807a5ca27cb61f">armnn::NetworkImpl::AddConvolution2dLayer</a></div><div class="ttdeci">IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &amp;convolution2dDescriptor, const ConstTensor &amp;weights, const Optional&lt; ConstTensor &gt; &amp;biases, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01786">Network.cpp:1786</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a6f6d81d8a4f1f85f3616e8306760061c"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a6f6d81d8a4f1f85f3616e8306760061c">armnn::NetworkImpl::AddSplitterLayer</a></div><div class="ttdeci">IConnectableLayer * AddSplitterLayer(const ViewsDescriptor &amp;splitterDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01920">Network.cpp:1920</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a9a9bcc00ae3d96343c93b437d6f77088"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a9a9bcc00ae3d96343c93b437d6f77088">armnn::NetworkImpl::AddBatchToSpaceNdLayer</a></div><div class="ttdeci">IConnectableLayer * AddBatchToSpaceNdLayer(const BatchToSpaceNdDescriptor &amp;batchToSpaceNdDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01687">Network.cpp:1687</a></div></div>
<div class="ttc" id="structarmnn_1_1_resize_bilinear_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_resize_bilinear_descriptor.xhtml">armnn::ResizeBilinearDescriptor</a></div><div class="ttdoc">A ResizeBilinearDescriptor for the ResizeBilinearLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00762">Descriptors.hpp:762</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a0a2fdd4f442952c97a8f24de6700473a"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a0a2fdd4f442952c97a8f24de6700473a">armnn::NetworkImpl::AddLstmLayer</a></div><div class="ttdeci">IConnectableLayer * AddLstmLayer(const LstmDescriptor &amp;descriptor, const LstmInputParams &amp;params, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02059">Network.cpp:2059</a></div></div>
<div class="ttc" id="_subgraph_view_selector_8hpp_xhtml"><div class="ttname"><a href="_subgraph_view_selector_8hpp.xhtml">SubgraphViewSelector.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a6e2df484ecc65bc82712590b96e04df4"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a6e2df484ecc65bc82712590b96e04df4">armnn::NetworkImpl::AddPadLayer</a></div><div class="ttdeci">IConnectableLayer * AddPadLayer(const PadDescriptor &amp;padDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02215">Network.cpp:2215</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_ada2ad7d1caeeb4ef6195c8925fad6a65"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#ada2ad7d1caeeb4ef6195c8925fad6a65">armnn::OutputSlot::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo &amp; GetTensorInfo() const override</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.xhtml#l00063">Layer.cpp:63</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a464f0ff87b1aabf71febaa71321dd40b"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a464f0ff87b1aabf71febaa71321dd40b">armnn::INetwork::Create</a></div><div class="ttdeci">static INetworkPtr Create(NetworkOptions networkOptions={})</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00510">Network.cpp:510</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a7dfc9717e76257867ad0a9239f210df0"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a7dfc9717e76257867ad0a9239f210df0">armnn::INetwork::AddLogicalBinaryLayer</a></div><div class="ttdeci">IConnectableLayer * AddLogicalBinaryLayer(const LogicalBinaryDescriptor &amp;descriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a Logical Binary layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00489">Network.cpp:489</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_a31f19249d1491464736b08b967be68b4"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#a31f19249d1491464736b08b967be68b4">armnn::INetwork::AddGatherLayer</a></div><div class="ttdeci">IConnectableLayer * AddGatherLayer(const char *name=nullptr)</div><div class="ttdoc">Add Gather layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00428">Network.cpp:428</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a738d3243c1dc564304d78908c6112e4f"><div class="ttname"><a href="namespacearmnn.xhtml#a738d3243c1dc564304d78908c6112e4f">armnn::CalculateEdgeStrategy</a></div><div class="ttdeci">EdgeStrategy CalculateEdgeStrategy(BackendsMap &amp;backends, ITensorHandleFactory::FactoryId srcFactoryId, const Layer &amp;layer, const Layer &amp;connectedLayer, TensorHandleFactoryRegistry &amp;registry, bool importEnabled)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01348">Network.cpp:1348</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_optimized_network_xhtml_a58ee539cf95c1e99fe4f54ef6e8bbd05"><div class="ttname"><a href="classarmnn_1_1_i_optimized_network.xhtml#a58ee539cf95c1e99fe4f54ef6e8bbd05">armnn::IOptimizedNetwork::Destroy</a></div><div class="ttdeci">static void Destroy(IOptimizedNetwork *network)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00532">Network.cpp:532</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_aea1059833739d3dccebb3a03ec35a1e6"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#aea1059833739d3dccebb3a03ec35a1e6">armnn::INetwork::AddConcatLayer</a></div><div class="ttdeci">IConnectableLayer * AddConcatLayer(const ConcatDescriptor &amp;concatDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a concatenation layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00070">Network.cpp:70</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_ab17a7eb3afac8667ace153b0fe2f82fe"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ab17a7eb3afac8667ace153b0fe2f82fe">armnn::ITensorHandleFactory::GetImportFlags</a></div><div class="ttdeci">virtual MemorySourceFlags GetImportFlags() const</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00086">ITensorHandleFactory.hpp:86</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_basic_parameters_xhtml_a5a0d8af26a6aad1e5be521ea7dc550eb"><div class="ttname"><a href="structarmnn_1_1_lstm_basic_parameters.xhtml#a5a0d8af26a6aad1e5be521ea7dc550eb">armnn::LstmBasicParameters::m_InputToForgetWeights</a></div><div class="ttdeci">std::unique_ptr&lt; ScopedCpuTensorHandle &gt; m_InputToForgetWeights</div><div class="ttdoc">A unique pointer to represent 2D weights tensor with dimensions [input_size, num_units]. </div><div class="ttdef"><b>Definition:</b> <a href="_lstm_layer_8hpp_source.xhtml#l00057">LstmLayer.hpp:57</a></div></div>
<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aeb70f8fcf5180bdd5c94be7bb2f9d176"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aeb70f8fcf5180bdd5c94be7bb2f9d176">armnn::optimizations::Fp32NetworkToBf16Converter</a></div><div class="ttdeci">OptimizeForType&lt; Layer, ConvertFp32NetworkToBf16Impl &gt; Fp32NetworkToBf16Converter</div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp32_network_to_bf16_8hpp_source.xhtml#l00075">ConvertFp32NetworkToBf16.hpp:75</a></div></div>
<div class="ttc" id="structarmnn_1_1_softmax_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.xhtml">armnn::SoftmaxDescriptor</a></div><div class="ttdoc">A SoftmaxDescriptor for the SoftmaxLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00139">Descriptors.hpp:139</a></div></div>
<div class="ttc" id="_tensor_handle_factory_registry_8hpp_xhtml"><div class="ttname"><a href="_tensor_handle_factory_registry_8hpp.xhtml">TensorHandleFactoryRegistry.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_addb6b14dd1b632263ffe77430259a7c4"><div class="ttname"><a href="namespacearmnn.xhtml#addb6b14dd1b632263ffe77430259a7c4">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">const char * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.xhtml#l00013">InternalTypes.cpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_ad1bbee7bf5f93b792675886f57d3ebe0"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#ad1bbee7bf5f93b792675886f57d3ebe0">armnn::Graph::AddCompatibilityLayers</a></div><div class="ttdeci">void AddCompatibilityLayers(std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt;&gt; &amp;backends, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdoc">Modifies the graph in-place, removing edges connecting layers using different compute devices...</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8cpp_source.xhtml#l00300">Graph.cpp:300</a></div></div>
<div class="ttc" id="structarmnn_1_1_backend_settings_xhtml_ae4f9f2c5e3b5cf694315f66cde5b33f0"><div class="ttname"><a href="structarmnn_1_1_backend_settings.xhtml#ae4f9f2c5e3b5cf694315f66cde5b33f0">armnn::BackendSettings::IsCpuRefUsed</a></div><div class="ttdeci">bool IsCpuRefUsed() const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_settings_8hpp_source.xhtml#l00061">BackendSettings.hpp:61</a></div></div>
<div class="ttc" id="structarmnn_1_1_quantized_lstm_input_params_xhtml_a1691bf16df2cabf1a4b82aecbb021f31"><div class="ttname"><a href="structarmnn_1_1_quantized_lstm_input_params.xhtml#a1691bf16df2cabf1a4b82aecbb021f31">armnn::QuantizedLstmInputParams::GetOutputGateBias</a></div><div class="ttdeci">const ConstTensor &amp; GetOutputGateBias() const</div><div class="ttdef"><b>Definition:</b> <a href="_quantized_lstm_params_8hpp_source.xhtml#l00113">QuantizedLstmParams.hpp:113</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_a9c95f90eb40e31f629e0e2947b8bc6f9"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a9c95f90eb40e31f629e0e2947b8bc6f9">armnn::ITensorHandleFactory::LegacyFactoryId</a></div><div class="ttdeci">static const FactoryId LegacyFactoryId</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00045">ITensorHandleFactory.hpp:45</a></div></div>
<div class="ttc" id="classarmnn_1_1_fill_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_fill_layer.xhtml">armnn::FillLayer</a></div><div class="ttdoc">This layer represents a fill operation. </div><div class="ttdef"><b>Definition:</b> <a href="_fill_layer_8hpp_source.xhtml#l00013">FillLayer.hpp:13</a></div></div>
<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">armnn::DepthwiseConvolution2dDescriptor</a></div><div class="ttdoc">A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00460">Descriptors.hpp:460</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml">armnn::Layer</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00210">Layer.hpp:210</a></div></div>
<div class="ttc" id="structarmnn_1_1_fill_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_fill_descriptor.xhtml">armnn::FillDescriptor</a></div><div class="ttdoc">A FillDescriptor for the FillLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00723">Descriptors.hpp:723</a></div></div>
<div class="ttc" id="classarmnn_1_1_depth_to_space_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_depth_to_space_layer.xhtml">armnn::DepthToSpaceLayer</a></div><div class="ttdoc">This layer represents a DepthToSpace operation. </div><div class="ttdef"><b>Definition:</b> <a href="_depth_to_space_layer_8hpp_source.xhtml#l00014">DepthToSpaceLayer.hpp:14</a></div></div>
<div class="ttc" id="structarmnn_1_1_batch_normalization_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_batch_normalization_descriptor.xhtml">armnn::BatchNormalizationDescriptor</a></div><div class="ttdoc">A BatchNormalizationDescriptor for the BatchNormalizationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00626">Descriptors.hpp:626</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a2ba4c46787312a2467153f40c542851a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a2ba4c46787312a2467153f40c542851a">armnn::LayerType::ConvertBf16ToFp32</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_ab067ba4ee9416d93abb8a52f3dc8feba"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#ab067ba4ee9416d93abb8a52f3dc8feba">armnn::INetwork::AddTransposeLayer</a></div><div class="ttdeci">IConnectableLayer * AddTransposeLayer(const TransposeDescriptor &amp;transposeDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a transpose layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00458">Network.cpp:458</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">armnn::TensorInfo::GetNumElements</a></div><div class="ttdeci">unsigned int GetNumElements() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00192">Tensor.hpp:192</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_a31da1ead6794dd64571afdd0b6efc771"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#a31da1ead6794dd64571afdd0b6efc771">armnn::LstmInputParams::m_InputToForgetWeights</a></div><div class="ttdeci">const ConstTensor * m_InputToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00041">LstmParams.hpp:41</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">armnn::BackendsMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt; &gt; BackendsMap</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00310">Network.hpp:310</a></div></div>
<div class="ttc" id="_profiling_service_8hpp_xhtml"><div class="ttname"><a href="_profiling_service_8hpp.xhtml">ProfilingService.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_resize_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_resize_layer.xhtml">armnn::ResizeLayer</a></div><div class="ttdoc">This layer represents a resize operation. </div><div class="ttdef"><b>Definition:</b> <a href="_resize_layer_8hpp_source.xhtml#l00013">ResizeLayer.hpp:13</a></div></div>
<div class="ttc" id="structarmnn_1_1_permute_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_permute_descriptor.xhtml">armnn::PermuteDescriptor</a></div><div class="ttdoc">A PermuteDescriptor for the PermuteLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00118">Descriptors.hpp:118</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_a8de6b047fcaff95df48dca683e1f3aa4"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#a8de6b047fcaff95df48dca683e1f3aa4">armnn::NetworkImpl::AddSliceLayer</a></div><div class="ttdeci">IConnectableLayer * AddSliceLayer(const SliceDescriptor &amp;sliceDescriptor, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l01909">Network.cpp:1909</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_network_xhtml_af1853466264ac187607c96b501a74e2b"><div class="ttname"><a href="classarmnn_1_1_i_network.xhtml#af1853466264ac187607c96b501a74e2b">armnn::INetwork::AddDepthToSpaceLayer</a></div><div class="ttdeci">IConnectableLayer * AddDepthToSpaceLayer(const DepthToSpaceDescriptor &amp;depthToSpaceDescriptor, const char *name=nullptr)</div><div class="ttdoc">Adds a depth to space layer to the network. </div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00108">Network.cpp:108</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a></div><div class="ttdeci">LayerType</div><div class="ttdoc">When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below...</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00419">Types.hpp:419</a></div></div>
<div class="ttc" id="classarmnn_1_1_backend_id_xhtml"><div class="ttname"><a href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00075">BackendId.hpp:75</a></div></div>
<div class="ttc" id="classarmnn_1_1_network_impl_xhtml_abd61d3e7ab67551c75bc219bbc4baeb5"><div class="ttname"><a href="classarmnn_1_1_network_impl.xhtml#abd61d3e7ab67551c75bc219bbc4baeb5">armnn::NetworkImpl::AddInstanceNormalizationLayer</a></div><div class="ttdeci">IConnectableLayer * AddInstanceNormalizationLayer(const InstanceNormalizationDescriptor &amp;desc, const char *name=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l02009">Network.cpp:2009</a></div></div>
<div class="ttc" id="structarmnn_1_1_lstm_input_params_xhtml_affcee5f4ab5994a21bee3b78b4e43de3"><div class="ttname"><a href="structarmnn_1_1_lstm_input_params.xhtml#affcee5f4ab5994a21bee3b78b4e43de3">armnn::LstmInputParams::m_InputToInputWeights</a></div><div class="ttdeci">const ConstTensor * m_InputToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_lstm_params_8hpp_source.xhtml#l00040">LstmParams.hpp:40</a></div></div>
<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_ac0981848e4ae57729f14f72bd4caa9f8"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a></div><div class="ttdeci">std::vector&lt; float &gt; anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_e0a84d05c80a2ef4231141dcbbeac5c8.xhtml">armnn</a></li><li class="navelem"><a class="el" href="_network_8cpp.xhtml">Network.cpp</a></li>
    <li class="footer">Generated on Thu Feb 25 2021 17:27:29 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>