blob: 7b3f9664d0a1de381963ea547a0e6cd34a1128c8 [file] [log] [blame]
Ryan OSheade36e4a2020-03-13 16:26:19 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6<meta name="generator" content="Doxygen 1.8.13"/>
7<meta name="viewport" content="width=device-width, initial-scale=1"/>
8<title>ArmNN: armnn Namespace Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="navtree.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="resize.js"></script>
14<script type="text/javascript" src="navtreedata.js"></script>
15<script type="text/javascript" src="navtree.js"></script>
16<script type="text/javascript">
17 $(document).ready(initResizable);
18</script>
19<link href="search/search.css" rel="stylesheet" type="text/css"/>
20<script type="text/javascript" src="search/searchdata.js"></script>
21<script type="text/javascript" src="search/search.js"></script>
22<link href="doxygen.css" rel="stylesheet" type="text/css" />
23</head>
24<body>
25<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
26<div id="titlearea">
27<table cellspacing="0" cellpadding="0">
28 <tbody>
29 <tr style="height: 56px;">
30 <td id="projectalign" style="padding-left: 0.5em;">
31 <div id="projectname">ArmNN
32 &#160;<span id="projectnumber">NotReleased</span>
33 </div>
34 </td>
35 </tr>
36 </tbody>
37</table>
38</div>
39<!-- end header part -->
40<!-- Generated by Doxygen 1.8.13 -->
41<script type="text/javascript">
42var searchBox = new SearchBox("searchBox", "search",false,'Search');
43</script>
44<script type="text/javascript" src="menudata.js"></script>
45<script type="text/javascript" src="menu.js"></script>
46<script type="text/javascript">
47$(function() {
48 initMenu('',true,false,'search.php','Search');
49 $(document).ready(function() { init_search(); });
50});
51</script>
52<div id="main-nav"></div>
53</div><!-- top -->
54<div id="side-nav" class="ui-resizable side-nav-resizable">
55 <div id="nav-tree">
56 <div id="nav-tree-contents">
57 <div id="nav-sync" class="sync"></div>
58 </div>
59 </div>
60 <div id="splitbar" style="-moz-user-select:none;"
61 class="ui-resizable-handle">
62 </div>
63</div>
64<script type="text/javascript">
65$(document).ready(function(){initNavTree('namespacearmnn.html','');});
66</script>
67<div id="doc-content">
68<!-- window showing the filter options -->
69<div id="MSearchSelectWindow"
70 onmouseover="return searchBox.OnSearchSelectShow()"
71 onmouseout="return searchBox.OnSearchSelectHide()"
72 onkeydown="return searchBox.OnSearchSelectKey(event)">
73</div>
74
75<!-- iframe showing the search results (closed by default) -->
76<div id="MSearchResultsWindow">
77<iframe src="javascript:void(0)" frameborder="0"
78 name="MSearchResults" id="MSearchResults">
79</iframe>
80</div>
81
82<div class="header">
83 <div class="summary">
84<a href="#namespaces">Namespaces</a> &#124;
85<a href="#nested-classes">Classes</a> &#124;
86<a href="#typedef-members">Typedefs</a> &#124;
87<a href="#enum-members">Enumerations</a> &#124;
88<a href="#func-members">Functions</a> &#124;
89<a href="#var-members">Variables</a> </div>
90 <div class="headertitle">
91<div class="title">armnn Namespace Reference</div> </div>
92</div><!--header-->
93<div class="contents">
94<table class="memberdecls">
95<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
96Namespaces</h2></td></tr>
97<tr class="memitem:namespacearmnn_1_1gatordmock"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1gatordmock.html">gatordmock</a></td></tr>
98<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
99<tr class="memitem:namespacearmnn_1_1optimizations"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1optimizations.html">optimizations</a></td></tr>
100<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
101<tr class="memitem:namespacearmnn_1_1profiling"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1profiling.html">profiling</a></td></tr>
102<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
103<tr class="memitem:namespacearmnn_1_1test"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1test.html">test</a></td></tr>
104<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
105</table><table class="memberdecls">
106<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
107Classes</h2></td></tr>
108<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1abs.html">abs</a></td></tr>
109<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
110<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_abs_layer.html">AbsLayer</a></td></tr>
111<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
112<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_abs_queue_descriptor.html">AbsQueueDescriptor</a></td></tr>
113<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
114<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a></td></tr>
115<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_activation_descriptor.html" title="An ActivationDescriptor for the ActivationLayer. ">ActivationDescriptor</a> for the <a class="el" href="classarmnn_1_1_activation_layer.html" title="This layer represents an activation operation with the specified activation function. ">ActivationLayer</a>. <a href="structarmnn_1_1_activation_descriptor.html#details">More...</a><br /></td></tr>
116<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
117<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_activation_layer.html">ActivationLayer</a></td></tr>
118<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an activation operation with the specified activation function. <a href="classarmnn_1_1_activation_layer.html#details">More...</a><br /></td></tr>
119<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
120<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_activation_queue_descriptor.html">ActivationQueueDescriptor</a></td></tr>
121<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_added_layer_observable.html">AddedLayerObservable</a></td></tr>
123<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_addition_layer.html">AdditionLayer</a></td></tr>
125<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an addition operation. <a href="classarmnn_1_1_addition_layer.html#details">More...</a><br /></td></tr>
126<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
127<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a></td></tr>
128<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
129<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a></td></tr>
130<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html" title="An ArgMinMaxDescriptor for ArgMinMaxLayer. ">ArgMinMaxDescriptor</a> for <a class="el" href="classarmnn_1_1_arg_min_max_layer.html" title="This layer represents a ArgMinMax operation. ">ArgMinMaxLayer</a>. <a href="structarmnn_1_1_arg_min_max_descriptor.html#details">More...</a><br /></td></tr>
131<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
132<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_arg_min_max_layer.html">ArgMinMaxLayer</a></td></tr>
133<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a ArgMinMax operation. <a href="classarmnn_1_1_arg_min_max_layer.html#details">More...</a><br /></td></tr>
134<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
135<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_arg_min_max_queue_descriptor.html">ArgMinMaxQueueDescriptor</a></td></tr>
136<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
137<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a></td></tr>
138<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
139<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_options.html">BackendOptions</a></td></tr>
140<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct for the users to pass backend specific options. <a href="structarmnn_1_1_backend_options.html#details">More...</a><br /></td></tr>
141<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
142<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_registry.html">BackendRegistry</a></td></tr>
143<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
144<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a></td></tr>
145<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
146<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_unavailable_exception.html">BackendUnavailableException</a></td></tr>
147<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for non-fatal exceptions raised while initialising a backend. <a href="classarmnn_1_1_backend_unavailable_exception.html#details">More...</a><br /></td></tr>
148<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
149<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_version.html">BackendVersion</a></td></tr>
150<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
151<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_bad_optional_access_exception.html">BadOptionalAccessException</a></td></tr>
152<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
153<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_iterator.html">BaseIterator</a></td></tr>
154<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
155<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_memory_manager.html">BaseMemoryManager</a></td></tr>
156<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
157<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_tensor.html">BaseTensor</a></td></tr>
158<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
159<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_workload.html">BaseWorkload</a></td></tr>
160<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
161<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a></td></tr>
162<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html" title="A BatchNormalizationDescriptor for the BatchNormalizationLayer. ">BatchNormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_batch_normalization_layer.html" title="This layer represents a batch normalization operation. ">BatchNormalizationLayer</a>. <a href="structarmnn_1_1_batch_normalization_descriptor.html#details">More...</a><br /></td></tr>
163<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
164<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_batch_normalization_layer.html">BatchNormalizationLayer</a></td></tr>
165<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a batch normalization operation. <a href="classarmnn_1_1_batch_normalization_layer.html#details">More...</a><br /></td></tr>
166<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
167<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.html">BatchNormalizationQueueDescriptor</a></td></tr>
168<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
169<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a></td></tr>
170<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html" title="A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer. ">BatchToSpaceNdDescriptor</a> for the <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html" title="This layer represents a BatchToSpaceNd operation. ">BatchToSpaceNdLayer</a>. <a href="structarmnn_1_1_batch_to_space_nd_descriptor.html#details">More...</a><br /></td></tr>
171<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html">BatchToSpaceNdLayer</a></td></tr>
173<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a BatchToSpaceNd operation. <a href="classarmnn_1_1_batch_to_space_nd_layer.html#details">More...</a><br /></td></tr>
174<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
175<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_to_space_nd_queue_descriptor.html">BatchToSpaceNdQueueDescriptor</a></td></tr>
176<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
177<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_bias_and_weights_types_compatible.html">BiasAndWeightsTypesCompatible</a></td></tr>
178<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
179<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_bias_and_weights_types_match.html">BiasAndWeightsTypesMatch</a></td></tr>
180<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
181<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_bindable_layer.html">BindableLayer</a></td></tr>
182<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
183<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_boolean_encoder.html">BooleanEncoder</a></td></tr>
184<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
185<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_broadcast_loop.html">BroadcastLoop</a></td></tr>
186<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
187<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a></td></tr>
188<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
189<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_abs_workload.html">ClAbsWorkload</a></td></tr>
190<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
191<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_activation_workload.html">ClActivationWorkload</a></td></tr>
192<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
193<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_addition_workload.html">ClAdditionWorkload</a></td></tr>
194<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
195<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_arg_min_max_workload.html">ClArgMinMaxWorkload</a></td></tr>
196<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
197<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_backend.html">ClBackend</a></td></tr>
198<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
199<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_backend_context.html">ClBackendContext</a></td></tr>
200<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
201<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_batch_normalization_float_workload.html">ClBatchNormalizationFloatWorkload</a></td></tr>
202<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
203<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_batch_to_space_nd_workload.html">ClBatchToSpaceNdWorkload</a></td></tr>
204<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
205<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_concat_workload.html">ClConcatWorkload</a></td></tr>
206<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
207<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_constant_workload.html">ClConstantWorkload</a></td></tr>
208<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
209<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_context_control.html">ClContextControl</a></td></tr>
210<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
211<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convert_fp16_to_fp32_workload.html">ClConvertFp16ToFp32Workload</a></td></tr>
212<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
213<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convert_fp32_to_fp16_workload.html">ClConvertFp32ToFp16Workload</a></td></tr>
214<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
215<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convolution2d_workload.html">ClConvolution2dWorkload</a></td></tr>
216<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_depth_to_space_workload.html">ClDepthToSpaceWorkload</a></td></tr>
218<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
219<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_depthwise_convolution_workload.html">ClDepthwiseConvolutionWorkload</a></td></tr>
220<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
221<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_dequantize_workload.html">ClDequantizeWorkload</a></td></tr>
222<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_division_float_workload.html">ClDivisionFloatWorkload</a></td></tr>
224<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
225<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_floor_float_workload.html">ClFloorFloatWorkload</a></td></tr>
226<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
227<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_fully_connected_workload.html">ClFullyConnectedWorkload</a></td></tr>
228<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
229<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a></td></tr>
230<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
231<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_instance_normalization_workload.html">ClInstanceNormalizationWorkload</a></td></tr>
232<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
233<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_l2_normalization_float_workload.html">ClL2NormalizationFloatWorkload</a></td></tr>
234<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
235<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_layer_support.html">ClLayerSupport</a></td></tr>
236<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
237<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_lstm_float_workload.html">ClLstmFloatWorkload</a></td></tr>
238<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
239<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_maximum_workload.html">ClMaximumWorkload</a></td></tr>
240<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
241<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_mean_workload.html">ClMeanWorkload</a></td></tr>
242<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
243<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_memory_manager.html">ClMemoryManager</a></td></tr>
244<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
245<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_minimum_workload.html">ClMinimumWorkload</a></td></tr>
246<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
247<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_multiplication_workload.html">ClMultiplicationWorkload</a></td></tr>
248<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
249<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_normalization_float_workload.html">ClNormalizationFloatWorkload</a></td></tr>
250<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
251<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_pad_workload.html">ClPadWorkload</a></td></tr>
252<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
253<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_permute_workload.html">ClPermuteWorkload</a></td></tr>
254<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
255<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_pooling2d_workload.html">ClPooling2dWorkload</a></td></tr>
256<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
257<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_prelu_workload.html">ClPreluWorkload</a></td></tr>
258<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
259<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_quantized_lstm_workload.html">ClQuantizedLstmWorkload</a></td></tr>
260<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
261<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_quantize_workload.html">ClQuantizeWorkload</a></td></tr>
262<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
263<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_reshape_workload.html">ClReshapeWorkload</a></td></tr>
264<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
265<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_resize_workload.html">ClResizeWorkload</a></td></tr>
266<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
267<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_rsqrt_workload.html">ClRsqrtWorkload</a></td></tr>
268<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
269<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_runtime_unavailable_exception.html">ClRuntimeUnavailableException</a></td></tr>
270<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
271<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_slice_workload.html">ClSliceWorkload</a></td></tr>
272<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
273<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_float_workload.html">ClSoftmaxFloatWorkload</a></td></tr>
274<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
275<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_uint8_workload.html">ClSoftmaxUint8Workload</a></td></tr>
276<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
277<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_space_to_batch_nd_workload.html">ClSpaceToBatchNdWorkload</a></td></tr>
278<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
279<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_space_to_depth_workload.html">ClSpaceToDepthWorkload</a></td></tr>
280<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
281<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_splitter_workload.html">ClSplitterWorkload</a></td></tr>
282<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
283<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_stack_workload.html">ClStackWorkload</a></td></tr>
284<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
285<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_strided_slice_workload.html">ClStridedSliceWorkload</a></td></tr>
286<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
287<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_sub_tensor_handle.html">ClSubTensorHandle</a></td></tr>
288<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
289<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_subtraction_workload.html">ClSubtractionWorkload</a></td></tr>
290<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
291<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tensor_handle.html">ClTensorHandle</a></td></tr>
292<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
293<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tensor_handle_factory.html">ClTensorHandleFactory</a></td></tr>
294<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
295<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_transpose_convolution2d_workload.html">ClTransposeConvolution2dWorkload</a></td></tr>
296<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
297<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tuned_parameters.html">ClTunedParameters</a></td></tr>
298<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
299<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_workload_factory.html">ClWorkloadFactory</a></td></tr>
300<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
301<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_comparison_descriptor.html">ComparisonDescriptor</a></td></tr>
302<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_comparison_descriptor.html" title="A ComparisonDescriptor for the ComparisonLayer. ">ComparisonDescriptor</a> for the <a class="el" href="classarmnn_1_1_comparison_layer.html" title="This layer represents a comparison operation. ">ComparisonLayer</a>. <a href="structarmnn_1_1_comparison_descriptor.html#details">More...</a><br /></td></tr>
303<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
304<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_comparison_layer.html">ComparisonLayer</a></td></tr>
305<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a comparison operation. <a href="classarmnn_1_1_comparison_layer.html#details">More...</a><br /></td></tr>
306<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
307<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_comparison_queue_descriptor.html">ComparisonQueueDescriptor</a></td></tr>
308<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
309<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_concat_layer.html">ConcatLayer</a></td></tr>
310<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a merge operation. <a href="classarmnn_1_1_concat_layer.html#details">More...</a><br /></td></tr>
311<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
312<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a></td></tr>
313<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
314<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_constant_layer.html">ConstantLayer</a></td></tr>
315<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer that the constant data can be bound to. <a href="classarmnn_1_1_constant_layer.html#details">More...</a><br /></td></tr>
316<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
317<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_constant_queue_descriptor.html">ConstantQueueDescriptor</a></td></tr>
318<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
319<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a></td></tr>
320<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
321<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_passthrough_cpu_tensor_handle.html">ConstPassthroughCpuTensorHandle</a></td></tr>
322<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
323<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_construct_in_place.html">ConstructInPlace</a></td></tr>
324<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
325<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a></td></tr>
326<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A tensor defined by a <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> (shape and data type) and an immutable backing store. <a href="classarmnn_1_1_const_tensor.html#details">More...</a><br /></td></tr>
327<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
328<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a></td></tr>
329<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer converts data type Float 16 to Float 32. <a href="classarmnn_1_1_convert_fp16_to_fp32_layer.html#details">More...</a><br /></td></tr>
330<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
331<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convert_fp16_to_fp32_queue_descriptor.html">ConvertFp16ToFp32QueueDescriptor</a></td></tr>
332<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
333<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a></td></tr>
334<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer converts data type Float 32 to Float 16. <a href="classarmnn_1_1_convert_fp32_to_fp16_layer.html#details">More...</a><br /></td></tr>
335<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
336<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convert_fp32_to_fp16_queue_descriptor.html">ConvertFp32ToFp16QueueDescriptor</a></td></tr>
337<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
338<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a></td></tr>
339<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html" title="A Convolution2dDescriptor for the Convolution2dLayer. ">Convolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_convolution2d_layer.html" title="This layer represents a convolution 2d operation. ">Convolution2dLayer</a>. <a href="structarmnn_1_1_convolution2d_descriptor.html#details">More...</a><br /></td></tr>
340<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
341<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convolution2d_layer.html">Convolution2dLayer</a></td></tr>
342<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a convolution 2d operation. <a href="classarmnn_1_1_convolution2d_layer.html#details">More...</a><br /></td></tr>
343<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
344<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convolution2d_queue_descriptor.html">Convolution2dQueueDescriptor</a></td></tr>
345<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
346<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_copy_mem_generic_workload.html">CopyMemGenericWorkload</a></td></tr>
347<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
348<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cpu_tensor_handle.html">CpuTensorHandle</a></td></tr>
349<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
350<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a></td></tr>
351<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer visualizes the data flowing through the network. <a href="classarmnn_1_1_debug_layer.html#details">More...</a><br /></td></tr>
352<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
353<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_debug_queue_descriptor.html">DebugQueueDescriptor</a></td></tr>
354<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
355<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a></td></tr>
356<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
357<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_depth_to_space_layer.html">DepthToSpaceLayer</a></td></tr>
358<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a DepthToSpace operation. <a href="classarmnn_1_1_depth_to_space_layer.html#details">More...</a><br /></td></tr>
359<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
360<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depth_to_space_queue_descriptor.html">DepthToSpaceQueueDescriptor</a></td></tr>
361<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
362<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a></td></tr>
363<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html" title="A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer. ">DepthwiseConvolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html" title="This layer represents a depthwise convolution 2d operation. ">DepthwiseConvolution2dLayer</a>. <a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#details">More...</a><br /></td></tr>
364<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
365<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html">DepthwiseConvolution2dLayer</a></td></tr>
366<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a depthwise convolution 2d operation. <a href="classarmnn_1_1_depthwise_convolution2d_layer.html#details">More...</a><br /></td></tr>
367<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
368<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.html">DepthwiseConvolution2dQueueDescriptor</a></td></tr>
369<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
370<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dequantize_layer.html">DequantizeLayer</a></td></tr>
371<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer dequantizes the input tensor. <a href="classarmnn_1_1_dequantize_layer.html#details">More...</a><br /></td></tr>
372<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
373<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_dequantize_queue_descriptor.html">DequantizeQueueDescriptor</a></td></tr>
374<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
375<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a></td></tr>
376<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
377<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_detection_post_process_layer.html">DetectionPostProcessLayer</a></td></tr>
378<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a detection postprocess operator. <a href="classarmnn_1_1_detection_post_process_layer.html#details">More...</a><br /></td></tr>
379<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
380<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_detection_post_process_queue_descriptor.html">DetectionPostProcessQueueDescriptor</a></td></tr>
381<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
382<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_device_spec.html">DeviceSpec</a></td></tr>
383<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
384<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_division_layer.html">DivisionLayer</a></td></tr>
385<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a division operation. <a href="classarmnn_1_1_division_layer.html#details">More...</a><br /></td></tr>
386<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
387<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_division_queue_descriptor.html">DivisionQueueDescriptor</a></td></tr>
388<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
389<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_attribute_set.html">DotAttributeSet</a></td></tr>
390<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
391<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_base.html">DotBase</a></td></tr>
392<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
393<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_defaults.html">DotDefaults</a></td></tr>
394<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
395<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_edge.html">DotEdge</a></td></tr>
396<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
397<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_graph.html">DotGraph</a></td></tr>
398<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
399<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_node.html">DotNode</a></td></tr>
400<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
401<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_backend.html">DynamicBackend</a></td></tr>
402<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
403<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_backend_utils.html">DynamicBackendUtils</a></td></tr>
404<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
405<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_quantization_visitor.html">DynamicQuantizationVisitor</a></td></tr>
406<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor class to establish min/max ranges based on the type of the layer. <a href="classarmnn_1_1_dynamic_quantization_visitor.html#details">More...</a><br /></td></tr>
407<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
408<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_elementwise_base_layer.html">ElementwiseBaseLayer</a></td></tr>
409<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
410<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_binary_function.html">ElementwiseBinaryFunction</a></td></tr>
411<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
412<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_descriptor.html">ElementwiseUnaryDescriptor</a></td></tr>
413<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_elementwise_unary_descriptor.html" title="A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer. ">ElementwiseUnaryDescriptor</a> for the <a class="el" href="classarmnn_1_1_elementwise_unary_layer.html" title="This layer represents a elementwiseUnary operation. ">ElementwiseUnaryLayer</a>. <a href="structarmnn_1_1_elementwise_unary_descriptor.html#details">More...</a><br /></td></tr>
414<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
415<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_function.html">ElementwiseUnaryFunction</a></td></tr>
416<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
417<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_elementwise_unary_layer.html">ElementwiseUnaryLayer</a></td></tr>
418<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a elementwiseUnary operation. <a href="classarmnn_1_1_elementwise_unary_layer.html#details">More...</a><br /></td></tr>
419<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
420<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_queue_descriptor.html">ElementwiseUnaryQueueDescriptor</a></td></tr>
421<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
422<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_empty_optional.html">EmptyOptional</a></td></tr>
423<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
424<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a></td></tr>
425<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
426<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_equal_queue_descriptor.html">EqualQueueDescriptor</a></td></tr>
427<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
428<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_erased_layer_names_observable.html">ErasedLayerNamesObservable</a></td></tr>
429<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
430<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_event.html">Event</a></td></tr>
431<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
432<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_exception.html">Exception</a></td></tr>
433<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class for all ArmNN exceptions so that users can filter to just those. <a href="classarmnn_1_1_exception.html#details">More...</a><br /></td></tr>
434<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
435<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_execution_frame.html">ExecutionFrame</a></td></tr>
436<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
437<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1exp.html">exp</a></td></tr>
438<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
439<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html">FakeQuantizationDescriptor</a></td></tr>
440<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html" title="A FakeQuantizationDescriptor for the FakeQuantizationLayer. ">FakeQuantizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_fake_quantization_layer.html" title="This layer represents a fake quantization operation. ">FakeQuantizationLayer</a>. <a href="structarmnn_1_1_fake_quantization_descriptor.html#details">More...</a><br /></td></tr>
441<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
442<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_fake_quantization_layer.html">FakeQuantizationLayer</a></td></tr>
443<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a fake quantization operation. <a href="classarmnn_1_1_fake_quantization_layer.html#details">More...</a><br /></td></tr>
444<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
445<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fake_quantization_queue_descriptor.html">FakeQuantizationQueueDescriptor</a></td></tr>
446<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
447<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_file_not_found_exception.html">FileNotFoundException</a></td></tr>
448<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
449<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_first_input_typed_workload.html">FirstInputTypedWorkload</a></td></tr>
450<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
451<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float16_decoder.html">Float16Decoder</a></td></tr>
452<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
453<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float16_encoder.html">Float16Encoder</a></td></tr>
454<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
455<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float32_decoder.html">Float32Decoder</a></td></tr>
456<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
457<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float32_encoder.html">Float32Encoder</a></td></tr>
458<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
459<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_floor_layer.html">FloorLayer</a></td></tr>
460<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a floor operation. <a href="classarmnn_1_1_floor_layer.html#details">More...</a><br /></td></tr>
461<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
462<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_floor_queue_descriptor.html">FloorQueueDescriptor</a></td></tr>
463<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
464<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a></td></tr>
465<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html" title="A FullyConnectedDescriptor for the FullyConnectedLayer. ">FullyConnectedDescriptor</a> for the <a class="el" href="classarmnn_1_1_fully_connected_layer.html" title="This layer represents a fully connected operation. ">FullyConnectedLayer</a>. <a href="structarmnn_1_1_fully_connected_descriptor.html#details">More...</a><br /></td></tr>
466<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
467<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_fully_connected_layer.html">FullyConnectedLayer</a></td></tr>
468<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a fully connected operation. <a href="classarmnn_1_1_fully_connected_layer.html#details">More...</a><br /></td></tr>
469<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
470<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fully_connected_queue_descriptor.html">FullyConnectedQueueDescriptor</a></td></tr>
471<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
472<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_gather_layer.html">GatherLayer</a></td></tr>
473<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a Gather operator. <a href="classarmnn_1_1_gather_layer.html#details">More...</a><br /></td></tr>
474<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
475<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_gather_queue_descriptor.html">GatherQueueDescriptor</a></td></tr>
476<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
477<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph.html">Graph</a></td></tr>
478<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
479<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_observable.html">GraphObservable</a></td></tr>
480<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
481<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_validation_exception.html">GraphValidationException</a></td></tr>
482<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
483<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_greater_queue_descriptor.html">GreaterQueueDescriptor</a></td></tr>
484<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
485<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_bold.html">HtmlBold</a></td></tr>
486<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
487<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_font.html">HtmlFont</a></td></tr>
488<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
489<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_section.html">HtmlSection</a></td></tr>
490<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
491<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_simple_tag.html">HtmlSimpleTag</a></td></tr>
492<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
493<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_acl_tensor_handle.html">IAclTensorHandle</a></td></tr>
494<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
495<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a></td></tr>
496<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Each backend should implement an <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a>. <a href="classarmnn_1_1_i_backend.html#details">More...</a><br /></td></tr>
497<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
498<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_context.html">IBackendContext</a></td></tr>
499<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
500<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a></td></tr>
501<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
502<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_cl_tensor_handle.html">IClTensorHandle</a></td></tr>
503<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
504<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a></td></tr>
505<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface for a layer that is connectable to other layers via InputSlots and OutputSlots. <a href="classarmnn_1_1_i_connectable_layer.html#details">More...</a><br /></td></tr>
506<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
507<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_device_spec.html">IDeviceSpec</a></td></tr>
508<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Device specific knowledge to be passed to the optimizer. <a href="classarmnn_1_1_i_device_spec.html#details">More...</a><br /></td></tr>
509<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
510<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_execution_frame.html">IExecutionFrame</a></td></tr>
511<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_execution_frame.html">ExecutionFrame</a> interface to enqueue a workload computation. <a href="classarmnn_1_1_i_execution_frame.html#details">More...</a><br /></td></tr>
512<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
513<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.html">IGpuAccTunedParameters</a></td></tr>
514<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
515<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_graph_observable.html">IGraphObservable</a></td></tr>
516<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
517<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_input_slot.html">IInputSlot</a></td></tr>
518<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An input connection slot for a layer. The input slot can be connected to an output slot of the preceding layer in the graph. Only one connection to the input slot is allowed. <a href="classarmnn_1_1_i_input_slot.html#details">More...</a><br /></td></tr>
519<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
520<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a></td></tr>
521<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
522<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a></td></tr>
523<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
524<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a></td></tr>
525<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
526<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_import_mem_generic_workload.html">ImportMemGenericWorkload</a></td></tr>
527<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
528<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a></td></tr>
529<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
530<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_i_network_properties.html">INetworkProperties</a></td></tr>
531<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
532<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a></td></tr>
533<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Quantizer class Quantizes a float32 InputNetwork. <a href="classarmnn_1_1_i_network_quantizer.html#details">More...</a><br /></td></tr>
534<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
535<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_input_layer.html">InputLayer</a></td></tr>
536<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer user-provided data can be bound to (e.g. inputs, outputs). <a href="classarmnn_1_1_input_layer.html#details">More...</a><br /></td></tr>
537<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
538<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_input_slot.html">InputSlot</a></td></tr>
539<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
540<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a></td></tr>
541<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html" title="An InstanceNormalizationDescriptor for InstanceNormalizationLayer. ">InstanceNormalizationDescriptor</a> for <a class="el" href="classarmnn_1_1_instance_normalization_layer.html" title="This layer represents an instance normalization operation. ">InstanceNormalizationLayer</a>. <a href="structarmnn_1_1_instance_normalization_descriptor.html#details">More...</a><br /></td></tr>
542<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
543<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_instance_normalization_layer.html">InstanceNormalizationLayer</a></td></tr>
544<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an instance normalization operation. <a href="classarmnn_1_1_instance_normalization_layer.html#details">More...</a><br /></td></tr>
545<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
546<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.html">InstanceNormalizationQueueDescriptor</a></td></tr>
547<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
548<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_instrument.html">Instrument</a></td></tr>
549<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
550<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_int32_decoder.html">Int32Decoder</a></td></tr>
551<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
552<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_int32_encoder.html">Int32Encoder</a></td></tr>
553<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
554<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a></td></tr>
555<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
556<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a></td></tr>
557<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
558<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_output_slot.html">IOutputSlot</a></td></tr>
559<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An output connection slot for a layer. The output slot may be connected to 1 or more input slots of subsequent layers in the graph. <a href="classarmnn_1_1_i_output_slot.html#details">More...</a><br /></td></tr>
560<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
561<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_profiler.html">IProfiler</a></td></tr>
562<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
563<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_i_quantization_scheme.html">IQuantizationScheme</a></td></tr>
564<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
565<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a></td></tr>
566<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
567<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_half_type.html">IsHalfType</a></td></tr>
568<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
569<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_memory_source.html">IsMemorySource</a></td></tr>
570<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
571<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_memory_source_3_01_memory_source_01_4.html">IsMemorySource&lt; MemorySource &gt;</a></td></tr>
572<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
573<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_subgraph_view_converter.html">ISubgraphViewConverter</a></td></tr>
574<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
575<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a></td></tr>
576<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
577<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html">ITensorHandleFactory</a></td></tr>
578<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
579<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.html">IWorkload</a></td></tr>
580<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Workload interface to enqueue a layer computation. <a href="classarmnn_1_1_i_workload.html#details">More...</a><br /></td></tr>
581<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
582<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload_factory.html">IWorkloadFactory</a></td></tr>
583<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
584<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_json_child_object.html">JsonChildObject</a></td></tr>
585<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
586<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_json_printer.html">JsonPrinter</a></td></tr>
587<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
588<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a></td></tr>
589<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html" title="A L2NormalizationDescriptor for the L2NormalizationLayer. ">L2NormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_l2_normalization_layer.html" title="This layer represents a L2 normalization operation. ">L2NormalizationLayer</a>. <a href="structarmnn_1_1_l2_normalization_descriptor.html#details">More...</a><br /></td></tr>
590<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
591<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_l2_normalization_layer.html">L2NormalizationLayer</a></td></tr>
592<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a L2 normalization operation. <a href="classarmnn_1_1_l2_normalization_layer.html#details">More...</a><br /></td></tr>
593<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
594<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_l2_normalization_queue_descriptor.html">L2NormalizationQueueDescriptor</a></td></tr>
595<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
596<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer.html">Layer</a></td></tr>
597<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
598<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_support_base.html">LayerSupportBase</a></td></tr>
599<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
600<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl.html">LayerTypeOfImpl</a></td></tr>
601<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
602<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_activation_01_4.html">LayerTypeOfImpl&lt; LayerType::Activation &gt;</a></td></tr>
603<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
604<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_addition_01_4.html">LayerTypeOfImpl&lt; LayerType::Addition &gt;</a></td></tr>
605<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
606<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_arg_min_max_01_4.html">LayerTypeOfImpl&lt; LayerType::ArgMinMax &gt;</a></td></tr>
607<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
608<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_batch_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::BatchNormalization &gt;</a></td></tr>
609<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
610<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_batch_to_space_nd_01_4.html">LayerTypeOfImpl&lt; LayerType::BatchToSpaceNd &gt;</a></td></tr>
611<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
612<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_comparison_01_4.html">LayerTypeOfImpl&lt; LayerType::Comparison &gt;</a></td></tr>
613<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
614<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_concat_01_4.html">LayerTypeOfImpl&lt; LayerType::Concat &gt;</a></td></tr>
615<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
616<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_constant_01_4.html">LayerTypeOfImpl&lt; LayerType::Constant &gt;</a></td></tr>
617<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
618<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convert_fp16_to_fp32_01_4.html">LayerTypeOfImpl&lt; LayerType::ConvertFp16ToFp32 &gt;</a></td></tr>
619<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
620<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convert_fp32_to_fp16_01_4.html">LayerTypeOfImpl&lt; LayerType::ConvertFp32ToFp16 &gt;</a></td></tr>
621<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
622<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convolution2d_01_4.html">LayerTypeOfImpl&lt; LayerType::Convolution2d &gt;</a></td></tr>
623<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
624<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_debug_01_4.html">LayerTypeOfImpl&lt; LayerType::Debug &gt;</a></td></tr>
625<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
626<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_depth_to_space_01_4.html">LayerTypeOfImpl&lt; LayerType::DepthToSpace &gt;</a></td></tr>
627<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
628<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_depthwise_convolution2d_01_4.html">LayerTypeOfImpl&lt; LayerType::DepthwiseConvolution2d &gt;</a></td></tr>
629<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
630<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_dequantize_01_4.html">LayerTypeOfImpl&lt; LayerType::Dequantize &gt;</a></td></tr>
631<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
632<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_detection_post_process_01_4.html">LayerTypeOfImpl&lt; LayerType::DetectionPostProcess &gt;</a></td></tr>
633<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
634<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_division_01_4.html">LayerTypeOfImpl&lt; LayerType::Division &gt;</a></td></tr>
635<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
636<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_elementwise_unary_01_4.html">LayerTypeOfImpl&lt; LayerType::ElementwiseUnary &gt;</a></td></tr>
637<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
638<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_fake_quantization_01_4.html">LayerTypeOfImpl&lt; LayerType::FakeQuantization &gt;</a></td></tr>
639<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
640<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_floor_01_4.html">LayerTypeOfImpl&lt; LayerType::Floor &gt;</a></td></tr>
641<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
642<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_fully_connected_01_4.html">LayerTypeOfImpl&lt; LayerType::FullyConnected &gt;</a></td></tr>
643<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
644<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_gather_01_4.html">LayerTypeOfImpl&lt; LayerType::Gather &gt;</a></td></tr>
645<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
646<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_input_01_4.html">LayerTypeOfImpl&lt; LayerType::Input &gt;</a></td></tr>
647<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
648<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_instance_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::InstanceNormalization &gt;</a></td></tr>
649<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
650<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_l2_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::L2Normalization &gt;</a></td></tr>
651<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
652<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_log_softmax_01_4.html">LayerTypeOfImpl&lt; LayerType::LogSoftmax &gt;</a></td></tr>
653<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
654<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_lstm_01_4.html">LayerTypeOfImpl&lt; LayerType::Lstm &gt;</a></td></tr>
655<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
656<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_maximum_01_4.html">LayerTypeOfImpl&lt; LayerType::Maximum &gt;</a></td></tr>
657<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
658<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mean_01_4.html">LayerTypeOfImpl&lt; LayerType::Mean &gt;</a></td></tr>
659<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
660<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mem_copy_01_4.html">LayerTypeOfImpl&lt; LayerType::MemCopy &gt;</a></td></tr>
661<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
662<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mem_import_01_4.html">LayerTypeOfImpl&lt; LayerType::MemImport &gt;</a></td></tr>
663<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
664<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_merge_01_4.html">LayerTypeOfImpl&lt; LayerType::Merge &gt;</a></td></tr>
665<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
666<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_minimum_01_4.html">LayerTypeOfImpl&lt; LayerType::Minimum &gt;</a></td></tr>
667<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
668<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_multiplication_01_4.html">LayerTypeOfImpl&lt; LayerType::Multiplication &gt;</a></td></tr>
669<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
670<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_normalization_01_4.html">LayerTypeOfImpl&lt; LayerType::Normalization &gt;</a></td></tr>
671<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
672<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_output_01_4.html">LayerTypeOfImpl&lt; LayerType::Output &gt;</a></td></tr>
673<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
674<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pad_01_4.html">LayerTypeOfImpl&lt; LayerType::Pad &gt;</a></td></tr>
675<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
676<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_permute_01_4.html">LayerTypeOfImpl&lt; LayerType::Permute &gt;</a></td></tr>
677<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
678<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pooling2d_01_4.html">LayerTypeOfImpl&lt; LayerType::Pooling2d &gt;</a></td></tr>
679<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
680<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pre_compiled_01_4.html">LayerTypeOfImpl&lt; LayerType::PreCompiled &gt;</a></td></tr>
681<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
682<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_prelu_01_4.html">LayerTypeOfImpl&lt; LayerType::Prelu &gt;</a></td></tr>
683<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
684<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_quantize_01_4.html">LayerTypeOfImpl&lt; LayerType::Quantize &gt;</a></td></tr>
685<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
686<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_quantized_lstm_01_4.html">LayerTypeOfImpl&lt; LayerType::QuantizedLstm &gt;</a></td></tr>
687<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
688<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_reshape_01_4.html">LayerTypeOfImpl&lt; LayerType::Reshape &gt;</a></td></tr>
689<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
690<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_resize_01_4.html">LayerTypeOfImpl&lt; LayerType::Resize &gt;</a></td></tr>
691<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
692<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_slice_01_4.html">LayerTypeOfImpl&lt; LayerType::Slice &gt;</a></td></tr>
693<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
694<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_softmax_01_4.html">LayerTypeOfImpl&lt; LayerType::Softmax &gt;</a></td></tr>
695<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
696<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_space_to_batch_nd_01_4.html">LayerTypeOfImpl&lt; LayerType::SpaceToBatchNd &gt;</a></td></tr>
697<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
698<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_space_to_depth_01_4.html">LayerTypeOfImpl&lt; LayerType::SpaceToDepth &gt;</a></td></tr>
699<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
700<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_splitter_01_4.html">LayerTypeOfImpl&lt; LayerType::Splitter &gt;</a></td></tr>
701<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
702<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_stack_01_4.html">LayerTypeOfImpl&lt; LayerType::Stack &gt;</a></td></tr>
703<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
704<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_stand_in_01_4.html">LayerTypeOfImpl&lt; LayerType::StandIn &gt;</a></td></tr>
705<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
706<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_strided_slice_01_4.html">LayerTypeOfImpl&lt; LayerType::StridedSlice &gt;</a></td></tr>
707<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
708<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_subtraction_01_4.html">LayerTypeOfImpl&lt; LayerType::Subtraction &gt;</a></td></tr>
709<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
710<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_switch_01_4.html">LayerTypeOfImpl&lt; LayerType::Switch &gt;</a></td></tr>
711<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
712<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_transpose_convolution2d_01_4.html">LayerTypeOfImpl&lt; LayerType::TransposeConvolution2d &gt;</a></td></tr>
713<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
714<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_validation_exception.html">LayerValidationException</a></td></tr>
715<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
716<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_visitor_base.html">LayerVisitorBase</a></td></tr>
717<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
718<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_with_parameters.html">LayerWithParameters</a></td></tr>
719<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
720<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_loaded_network.html">LoadedNetwork</a></td></tr>
721<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
722<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_log_sink.html">LogSink</a></td></tr>
723<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
724<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_log_softmax_layer.html">LogSoftmaxLayer</a></td></tr>
725<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a log softmax operation. <a href="classarmnn_1_1_log_softmax_layer.html#details">More...</a><br /></td></tr>
726<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
727<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_log_softmax_queue_descriptor.html">LogSoftmaxQueueDescriptor</a></td></tr>
728<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
729<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_basic_parameters.html">LstmBasicParameters</a></td></tr>
730<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
731<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a></td></tr>
732<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_lstm_descriptor.html" title="An LstmDescriptor for the LstmLayer. ">LstmDescriptor</a> for the <a class="el" href="classarmnn_1_1_lstm_layer.html" title="This layer represents a LSTM operation. ">LstmLayer</a>. <a href="structarmnn_1_1_lstm_descriptor.html#details">More...</a><br /></td></tr>
733<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
734<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_input_params.html">LstmInputParams</a></td></tr>
735<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
736<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a></td></tr>
737<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
738<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_lstm_layer.html">LstmLayer</a></td></tr>
739<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a LSTM operation. <a href="classarmnn_1_1_lstm_layer.html#details">More...</a><br /></td></tr>
740<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
741<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_cifg_parameters.html">LstmOptCifgParameters</a></td></tr>
742<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
743<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_layer_norm_parameters.html">LstmOptLayerNormParameters</a></td></tr>
744<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
745<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_peephole_parameters.html">LstmOptPeepholeParameters</a></td></tr>
746<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
747<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_projection_parameters.html">LstmOptProjectionParameters</a></td></tr>
748<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
749<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_queue_descriptor.html">LstmQueueDescriptor</a></td></tr>
750<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
751<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1maximum.html">maximum</a></td></tr>
752<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
753<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_maximum_layer.html">MaximumLayer</a></td></tr>
754<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a maximum operation. <a href="classarmnn_1_1_maximum_layer.html#details">More...</a><br /></td></tr>
755<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
756<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_maximum_queue_descriptor.html">MaximumQueueDescriptor</a></td></tr>
757<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
758<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a></td></tr>
759<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_mean_descriptor.html" title="A MeanDescriptor for the MeanLayer. ">MeanDescriptor</a> for the <a class="el" href="classarmnn_1_1_mean_layer.html" title="This layer represents a mean operation. ">MeanLayer</a>. <a href="structarmnn_1_1_mean_descriptor.html#details">More...</a><br /></td></tr>
760<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
761<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mean_layer.html">MeanLayer</a></td></tr>
762<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a mean operation. <a href="classarmnn_1_1_mean_layer.html#details">More...</a><br /></td></tr>
763<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
764<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mean_queue_descriptor.html">MeanQueueDescriptor</a></td></tr>
765<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
766<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_measurement.html">Measurement</a></td></tr>
767<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
768<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mem_copy_layer.html">MemCopyLayer</a></td></tr>
769<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a memory copy operation. <a href="classarmnn_1_1_mem_copy_layer.html#details">More...</a><br /></td></tr>
770<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
771<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td></tr>
772<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
773<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mem_import_layer.html">MemImportLayer</a></td></tr>
774<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a memory import operation. <a href="classarmnn_1_1_mem_import_layer.html#details">More...</a><br /></td></tr>
775<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
776<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_import_queue_descriptor.html">MemImportQueueDescriptor</a></td></tr>
777<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
778<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_memory_export_exception.html">MemoryExportException</a></td></tr>
779<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
780<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_memory_import_exception.html">MemoryImportException</a></td></tr>
781<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
782<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_sync_queue_descriptor.html">MemSyncQueueDescriptor</a></td></tr>
783<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
784<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_merge_layer.html">MergeLayer</a></td></tr>
785<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer dequantizes the input tensor. <a href="classarmnn_1_1_merge_layer.html#details">More...</a><br /></td></tr>
786<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
787<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_merge_queue_descriptor.html">MergeQueueDescriptor</a></td></tr>
788<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
789<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1minimum.html">minimum</a></td></tr>
790<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
791<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_minimum_layer.html">MinimumLayer</a></td></tr>
792<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a minimum operation. <a href="classarmnn_1_1_minimum_layer.html#details">More...</a><br /></td></tr>
793<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
794<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_minimum_queue_descriptor.html">MinimumQueueDescriptor</a></td></tr>
795<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
796<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend.html">MockBackend</a></td></tr>
797<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
798<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_initialiser.html">MockBackendInitialiser</a></td></tr>
799<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
800<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_profiling_context.html">MockBackendProfilingContext</a></td></tr>
801<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
802<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_profiling_service.html">MockBackendProfilingService</a></td></tr>
803<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
804<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_layer_support.html">MockLayerSupport</a></td></tr>
805<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
806<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_multiplication_layer.html">MultiplicationLayer</a></td></tr>
807<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a multiplication operation. <a href="classarmnn_1_1_multiplication_layer.html#details">More...</a><br /></td></tr>
808<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
809<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.html">MultiplicationQueueDescriptor</a></td></tr>
810<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
811<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a></td></tr>
812<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
813<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_abs_workload.html">NeonAbsWorkload</a></td></tr>
814<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
815<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_activation_workload.html">NeonActivationWorkload</a></td></tr>
816<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
817<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_addition_workload.html">NeonAdditionWorkload</a></td></tr>
818<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
819<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_arg_min_max_workload.html">NeonArgMinMaxWorkload</a></td></tr>
820<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
821<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_backend.html">NeonBackend</a></td></tr>
822<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
823<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_batch_normalization_workload.html">NeonBatchNormalizationWorkload</a></td></tr>
824<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
825<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_batch_to_space_nd_workload.html">NeonBatchToSpaceNdWorkload</a></td></tr>
826<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
827<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_concat_workload.html">NeonConcatWorkload</a></td></tr>
828<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
829<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_constant_workload.html">NeonConstantWorkload</a></td></tr>
830<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
831<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convert_fp16_to_fp32_workload.html">NeonConvertFp16ToFp32Workload</a></td></tr>
832<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
833<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convert_fp32_to_fp16_workload.html">NeonConvertFp32ToFp16Workload</a></td></tr>
834<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
835<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convolution2d_workload.html">NeonConvolution2dWorkload</a></td></tr>
836<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
837<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_depth_to_space_workload.html">NeonDepthToSpaceWorkload</a></td></tr>
838<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
839<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_depthwise_convolution_workload.html">NeonDepthwiseConvolutionWorkload</a></td></tr>
840<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
841<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_dequantize_workload.html">NeonDequantizeWorkload</a></td></tr>
842<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
843<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_detection_post_process_workload.html">NeonDetectionPostProcessWorkload</a></td></tr>
844<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
845<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_division_workload.html">NeonDivisionWorkload</a></td></tr>
846<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
847<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_floor_float_workload.html">NeonFloorFloatWorkload</a></td></tr>
848<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
849<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_fully_connected_workload.html">NeonFullyConnectedWorkload</a></td></tr>
850<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
851<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a></td></tr>
852<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
853<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_instance_normalization_workload.html">NeonInstanceNormalizationWorkload</a></td></tr>
854<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
855<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_interceptor_scheduler.html">NeonInterceptorScheduler</a></td></tr>
856<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
857<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_l2_normalization_float_workload.html">NeonL2NormalizationFloatWorkload</a></td></tr>
858<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
859<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_layer_support.html">NeonLayerSupport</a></td></tr>
860<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
861<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_lstm_float_workload.html">NeonLstmFloatWorkload</a></td></tr>
862<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
863<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_maximum_workload.html">NeonMaximumWorkload</a></td></tr>
864<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
865<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_mean_workload.html">NeonMeanWorkload</a></td></tr>
866<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
867<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_memory_manager.html">NeonMemoryManager</a></td></tr>
868<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
869<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_minimum_workload.html">NeonMinimumWorkload</a></td></tr>
870<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
871<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_multiplication_workload.html">NeonMultiplicationWorkload</a></td></tr>
872<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
873<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_normalization_float_workload.html">NeonNormalizationFloatWorkload</a></td></tr>
874<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
875<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_pad_workload.html">NeonPadWorkload</a></td></tr>
876<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
877<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_permute_workload.html">NeonPermuteWorkload</a></td></tr>
878<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
879<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_pooling2d_workload.html">NeonPooling2dWorkload</a></td></tr>
880<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
881<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_prelu_workload.html">NeonPreluWorkload</a></td></tr>
882<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
883<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_quantized_lstm_workload.html">NeonQuantizedLstmWorkload</a></td></tr>
884<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
885<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_quantize_workload.html">NeonQuantizeWorkload</a></td></tr>
886<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
887<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_reshape_workload.html">NeonReshapeWorkload</a></td></tr>
888<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
889<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_resize_workload.html">NeonResizeWorkload</a></td></tr>
890<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
891<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_rsqrt_workload.html">NeonRsqrtWorkload</a></td></tr>
892<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
893<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_slice_workload.html">NeonSliceWorkload</a></td></tr>
894<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
895<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_softmax_float_workload.html">NeonSoftmaxFloatWorkload</a></td></tr>
896<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
897<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_softmax_uint8_workload.html">NeonSoftmaxUint8Workload</a></td></tr>
898<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
899<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_space_to_batch_nd_workload.html">NeonSpaceToBatchNdWorkload</a></td></tr>
900<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
901<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_space_to_depth_workload.html">NeonSpaceToDepthWorkload</a></td></tr>
902<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
903<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_splitter_workload.html">NeonSplitterWorkload</a></td></tr>
904<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
905<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_stack_workload.html">NeonStackWorkload</a></td></tr>
906<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
907<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_strided_slice_workload.html">NeonStridedSliceWorkload</a></td></tr>
908<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
909<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_sub_tensor_handle.html">NeonSubTensorHandle</a></td></tr>
910<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
911<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_subtraction_workload.html">NeonSubtractionWorkload</a></td></tr>
912<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
913<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_tensor_handle.html">NeonTensorHandle</a></td></tr>
914<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
915<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_tensor_handle_factory.html">NeonTensorHandleFactory</a></td></tr>
916<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
917<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_timer.html">NeonTimer</a></td></tr>
918<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
919<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_transpose_convolution2d_workload.html">NeonTransposeConvolution2dWorkload</a></td></tr>
920<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
921<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_workload_factory.html">NeonWorkloadFactory</a></td></tr>
922<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
923<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_network.html">Network</a></td></tr>
924<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Private implementation of <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>. <a href="classarmnn_1_1_network.html#details">More...</a><br /></td></tr>
925<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
926<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_network_quantizer.html">NetworkQuantizer</a></td></tr>
927<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
928<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_node_content.html">NodeContent</a></td></tr>
929<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
930<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a></td></tr>
931<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_normalization_descriptor.html" title="A NormalizationDescriptor for the NormalizationLayer. ">NormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_normalization_layer.html" title="This layer represents a normalization operation. ">NormalizationLayer</a>. <a href="structarmnn_1_1_normalization_descriptor.html#details">More...</a><br /></td></tr>
932<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
933<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_normalization_layer.html">NormalizationLayer</a></td></tr>
934<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a normalization operation. <a href="classarmnn_1_1_normalization_layer.html#details">More...</a><br /></td></tr>
935<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
936<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_normalization_queue_descriptor.html">NormalizationQueueDescriptor</a></td></tr>
937<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
938<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_null_workload.html">NullWorkload</a></td></tr>
939<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
940<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_open_cl_timer.html">OpenClTimer</a></td></tr>
941<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_open_cl_timer.html" title="OpenClTimer instrument that times all OpenCl kernels executed between calls to Start() and Stop()...">OpenClTimer</a> instrument that times all OpenCl kernels executed between calls to <a class="el" href="classarmnn_1_1_open_cl_timer.html#a156f3866ca69d98b4d9e6e1c1b3ec7da" title="Start the OpenCl timer. ">Start()</a> and <a class="el" href="classarmnn_1_1_open_cl_timer.html#a634c58de2126b4a4e6a2a093e60e1290" title="Stop the OpenCl timer. ">Stop()</a>. <a href="classarmnn_1_1_open_cl_timer.html#details">More...</a><br /></td></tr>
942<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
943<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimization.html">Optimization</a></td></tr>
944<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
945<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a></td></tr>
946<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
947<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimization_views.html">OptimizationViews</a></td></tr>
948<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
949<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a></td></tr>
950<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
951<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_connection.html">OptimizeForConnection</a></td></tr>
952<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
953<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_connection_impl.html">OptimizeForConnectionImpl</a></td></tr>
954<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
955<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type.html">OptimizeForType</a></td></tr>
956<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
957<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type_impl.html">OptimizeForTypeImpl</a></td></tr>
958<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
959<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type_impl_3_01_layer_00_01_wrapped_01_4.html">OptimizeForTypeImpl&lt; Layer, Wrapped &gt;</a></td></tr>
960<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialization that calls Wrapped::Run() for any layer type. <a href="classarmnn_1_1_optimize_for_type_impl_3_01_layer_00_01_wrapped_01_4.html#details">More...</a><br /></td></tr>
961<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
962<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimizer.html">Optimizer</a></td></tr>
963<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
964<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a></td></tr>
965<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
966<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional.html">Optional</a></td></tr>
967<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
968<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_base.html">OptionalBase</a></td></tr>
969<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
970<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_reference_switch.html">OptionalReferenceSwitch</a></td></tr>
971<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
972<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_reference_switch_3_01true_00_01_t_01_4.html">OptionalReferenceSwitch&lt; true, T &gt;</a></td></tr>
973<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
974<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td></tr>
975<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_origins_descriptor.html" title="An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...">OriginsDescriptor</a> for the <a class="el" href="classarmnn_1_1_concat_layer.html" title="This layer represents a merge operation. ">ConcatLayer</a>. Descriptor to configure the concatenation process. Number of views must be equal to the number of inputs, and their order must match - e.g. first view corresponds to the first input, second view to the second input, etc. <a href="structarmnn_1_1_origins_descriptor.html#details">More...</a><br /></td></tr>
976<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
977<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_handler.html">OutputHandler</a></td></tr>
978<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
979<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_layer.html">OutputLayer</a></td></tr>
980<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer user-provided data can be bound to (e.g. inputs, outputs). <a href="classarmnn_1_1_output_layer.html#details">More...</a><br /></td></tr>
981<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
982<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a></td></tr>
983<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
984<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_override_input_range_visitor.html">OverrideInputRangeVisitor</a></td></tr>
985<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor object for overriding the input range of the quantized input layers in a network. <a href="classarmnn_1_1_override_input_range_visitor.html#details">More...</a><br /></td></tr>
986<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
987<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a></td></tr>
988<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pad_descriptor.html" title="A PadDescriptor for the PadLayer. ">PadDescriptor</a> for the <a class="el" href="classarmnn_1_1_pad_layer.html" title="This layer represents a pad operation. ">PadLayer</a>. <a href="structarmnn_1_1_pad_descriptor.html#details">More...</a><br /></td></tr>
989<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
990<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pad_layer.html">PadLayer</a></td></tr>
991<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a pad operation. <a href="classarmnn_1_1_pad_layer.html#details">More...</a><br /></td></tr>
992<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
993<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pad_queue_descriptor.html">PadQueueDescriptor</a></td></tr>
994<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
995<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_parse_exception.html">ParseException</a></td></tr>
996<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
997<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_passthrough_cpu_tensor_handle.html">PassthroughCpuTensorHandle</a></td></tr>
998<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
999<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_per_axis_iterator.html">PerAxisIterator</a></td></tr>
1000<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1001<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a></td></tr>
1002<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1003<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a></td></tr>
1004<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_permute_descriptor.html" title="A PermuteDescriptor for the PermuteLayer. ">PermuteDescriptor</a> for the <a class="el" href="classarmnn_1_1_permute_layer.html" title="This layer represents a permutation operation. ">PermuteLayer</a>. <a href="structarmnn_1_1_permute_descriptor.html#details">More...</a><br /></td></tr>
1005<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1006<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permute_layer.html">PermuteLayer</a></td></tr>
1007<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a permutation operation. <a href="classarmnn_1_1_permute_layer.html#details">More...</a><br /></td></tr>
1008<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1009<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_permute_queue_descriptor.html">PermuteQueueDescriptor</a></td></tr>
1010<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1011<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a></td></tr>
1012<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html" title="A Pooling2dDescriptor for the Pooling2dLayer. ">Pooling2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_pooling2d_layer.html" title="This layer represents a pooling 2d operation. ">Pooling2dLayer</a>. <a href="structarmnn_1_1_pooling2d_descriptor.html#details">More...</a><br /></td></tr>
1013<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1014<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pooling2d_layer.html">Pooling2dLayer</a></td></tr>
1015<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a pooling 2d operation. <a href="classarmnn_1_1_pooling2d_layer.html#details">More...</a><br /></td></tr>
1016<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1017<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pooling2d_queue_descriptor.html">Pooling2dQueueDescriptor</a></td></tr>
1018<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1019<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pre_compiled_descriptor.html">PreCompiledDescriptor</a></td></tr>
1020<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pre_compiled_descriptor.html" title="A PreCompiledDescriptor for the PreCompiledLayer. ">PreCompiledDescriptor</a> for the <a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a>. <a href="structarmnn_1_1_pre_compiled_descriptor.html#details">More...</a><br /></td></tr>
1021<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1022<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a></td></tr>
1023<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1024<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pre_compiled_queue_descriptor.html">PreCompiledQueueDescriptor</a></td></tr>
1025<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1026<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_prelu_layer.html">PreluLayer</a></td></tr>
1027<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1028<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_prelu_queue_descriptor.html">PreluQueueDescriptor</a></td></tr>
1029<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1030<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_profiler.html">Profiler</a></td></tr>
1031<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1032<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_profiler_manager.html">ProfilerManager</a></td></tr>
1033<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1034<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm8_decoder.html">QASymm8Decoder</a></td></tr>
1035<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1036<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm8_encoder.html">QASymm8Encoder</a></td></tr>
1037<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1038<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm_s8_decoder.html">QASymmS8Decoder</a></td></tr>
1039<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1040<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm_s8_encoder.html">QASymmS8Encoder</a></td></tr>
1041<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1042<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_asymm_s8_quantization_scheme.html">QAsymmS8QuantizationScheme</a></td></tr>
1043<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1044<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_asymm_u8_quantization_scheme.html">QAsymmU8QuantizationScheme</a></td></tr>
1045<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1046<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm16_decoder.html">QSymm16Decoder</a></td></tr>
1047<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1048<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm16_encoder.html">QSymm16Encoder</a></td></tr>
1049<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1050<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_symm16_quantization_scheme.html">QSymm16QuantizationScheme</a></td></tr>
1051<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1052<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm8_per_axis_decoder.html">QSymm8PerAxisDecoder</a></td></tr>
1053<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1054<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm8_per_axis_encoder.html">QSymm8PerAxisEncoder</a></td></tr>
1055<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1056<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm_s8_decoder.html">QSymmS8Decoder</a></td></tr>
1057<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1058<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm_s8_encoder.html">QSymmS8Encoder</a></td></tr>
1059<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1060<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_symm_s8_quantization_scheme.html">QSymmS8QuantizationScheme</a></td></tr>
1061<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1062<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantization_parameters_are_equal.html">QuantizationParametersAreEqual</a></td></tr>
1063<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1064<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_input_params.html">QuantizedLstmInputParams</a></td></tr>
1065<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1066<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a></td></tr>
1067<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1068<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantized_lstm_layer.html">QuantizedLstmLayer</a></td></tr>
1069<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a QuantizedLstm operation. <a href="classarmnn_1_1_quantized_lstm_layer.html#details">More...</a><br /></td></tr>
1070<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1071<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_parameters.html">QuantizedLstmParameters</a></td></tr>
1072<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1073<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_queue_descriptor.html">QuantizedLstmQueueDescriptor</a></td></tr>
1074<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1075<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.html">QuantizedMultiplierSmallerThanOne</a></td></tr>
1076<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1077<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantize_layer.html">QuantizeLayer</a></td></tr>
1078<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1079<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantize_queue_descriptor.html">QuantizeQueueDescriptor</a></td></tr>
1080<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1081<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantizer_options.html">QuantizerOptions</a></td></tr>
1082<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1083<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantizer_visitor.html">QuantizerVisitor</a></td></tr>
1084<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor object for quantizing layers in a network. <a href="classarmnn_1_1_quantizer_visitor.html#details">More...</a><br /></td></tr>
1085<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1086<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a></td></tr>
1087<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1088<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.html">QueueDescriptorWithParameters</a></td></tr>
1089<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1090<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_range_tracker.html">RangeTracker</a></td></tr>
1091<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1092<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_activation_workload.html">RefActivationWorkload</a></td></tr>
1093<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1094<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_arg_min_max_workload.html">RefArgMinMaxWorkload</a></td></tr>
1095<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1096<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.html">RefBackend</a></td></tr>
1097<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1098<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_batch_normalization_workload.html">RefBatchNormalizationWorkload</a></td></tr>
1099<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1100<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_batch_to_space_nd_workload.html">RefBatchToSpaceNdWorkload</a></td></tr>
1101<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1102<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_comparison_workload.html">RefComparisonWorkload</a></td></tr>
1103<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1104<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_concat_workload.html">RefConcatWorkload</a></td></tr>
1105<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1106<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_constant_workload.html">RefConstantWorkload</a></td></tr>
1107<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1108<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convert_fp16_to_fp32_workload.html">RefConvertFp16ToFp32Workload</a></td></tr>
1109<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1110<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convert_fp32_to_fp16_workload.html">RefConvertFp32ToFp16Workload</a></td></tr>
1111<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1112<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convolution2d_workload.html">RefConvolution2dWorkload</a></td></tr>
1113<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1114<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a></td></tr>
1115<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1116<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_depth_to_space_workload.html">RefDepthToSpaceWorkload</a></td></tr>
1117<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1118<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_depthwise_convolution2d_workload.html">RefDepthwiseConvolution2dWorkload</a></td></tr>
1119<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1120<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_dequantize_workload.html">RefDequantizeWorkload</a></td></tr>
1121<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1122<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_detection_post_process_workload.html">RefDetectionPostProcessWorkload</a></td></tr>
1123<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1124<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_elementwise_unary_workload.html">RefElementwiseUnaryWorkload</a></td></tr>
1125<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1126<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a></td></tr>
1127<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1128<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_fake_quantization_float32_workload.html">RefFakeQuantizationFloat32Workload</a></td></tr>
1129<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1130<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_floor_workload.html">RefFloorWorkload</a></td></tr>
1131<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1132<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_fully_connected_workload.html">RefFullyConnectedWorkload</a></td></tr>
1133<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1134<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_gather_workload.html">RefGatherWorkload</a></td></tr>
1135<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1136<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_instance_normalization_workload.html">RefInstanceNormalizationWorkload</a></td></tr>
1137<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1138<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_l2_normalization_workload.html">RefL2NormalizationWorkload</a></td></tr>
1139<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1140<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_layer_support.html">RefLayerSupport</a></td></tr>
1141<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1142<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_log_softmax_workload.html">RefLogSoftmaxWorkload</a></td></tr>
1143<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1144<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_lstm_workload.html">RefLstmWorkload</a></td></tr>
1145<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1146<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_mean_workload.html">RefMeanWorkload</a></td></tr>
1147<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1148<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_memory_manager.html">RefMemoryManager</a></td></tr>
1149<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1150<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_normalization_workload.html">RefNormalizationWorkload</a></td></tr>
1151<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1152<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a></td></tr>
1153<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1154<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a></td></tr>
1155<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1156<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_pooling2d_workload.html">RefPooling2dWorkload</a></td></tr>
1157<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1158<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_prelu_workload.html">RefPreluWorkload</a></td></tr>
1159<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1160<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_quantize_workload.html">RefQuantizeWorkload</a></td></tr>
1161<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1162<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_reshape_workload.html">RefReshapeWorkload</a></td></tr>
1163<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1164<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_resize_bilinear_workload.html">RefResizeBilinearWorkload</a></td></tr>
1165<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1166<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_resize_workload.html">RefResizeWorkload</a></td></tr>
1167<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1168<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_slice_workload.html">RefSliceWorkload</a></td></tr>
1169<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1170<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_softmax_workload.html">RefSoftmaxWorkload</a></td></tr>
1171<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1172<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_space_to_batch_nd_workload.html">RefSpaceToBatchNdWorkload</a></td></tr>
1173<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1174<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_space_to_depth_workload.html">RefSpaceToDepthWorkload</a></td></tr>
1175<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1176<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_splitter_workload.html">RefSplitterWorkload</a></td></tr>
1177<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1178<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_stack_workload.html">RefStackWorkload</a></td></tr>
1179<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1180<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_strided_slice_workload.html">RefStridedSliceWorkload</a></td></tr>
1181<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1182<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_tensor_handle.html">RefTensorHandle</a></td></tr>
1183<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1184<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_tensor_handle_factory.html">RefTensorHandleFactory</a></td></tr>
1185<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1186<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_transpose_convolution2d_workload.html">RefTransposeConvolution2dWorkload</a></td></tr>
1187<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1188<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_workload_factory.html">RefWorkloadFactory</a></td></tr>
1189<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1190<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a></td></tr>
1191<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_reshape_descriptor.html" title="A ReshapeDescriptor for the ReshapeLayer. ">ReshapeDescriptor</a> for the <a class="el" href="classarmnn_1_1_reshape_layer.html" title="This layer represents a reshape operation. ">ReshapeLayer</a>. <a href="structarmnn_1_1_reshape_descriptor.html#details">More...</a><br /></td></tr>
1192<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1193<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_reshape_layer.html">ReshapeLayer</a></td></tr>
1194<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a reshape operation. <a href="classarmnn_1_1_reshape_layer.html#details">More...</a><br /></td></tr>
1195<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1196<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_reshape_queue_descriptor.html">ReshapeQueueDescriptor</a></td></tr>
1197<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1198<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_bilinear_descriptor.html">ResizeBilinearDescriptor</a></td></tr>
1199<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_resize_bilinear_descriptor.html" title="A ResizeBilinearDescriptor for the ResizeBilinearLayer. ">ResizeBilinearDescriptor</a> for the ResizeBilinearLayer. <a href="structarmnn_1_1_resize_bilinear_descriptor.html#details">More...</a><br /></td></tr>
1200<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1201<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_bilinear_queue_descriptor.html">ResizeBilinearQueueDescriptor</a></td></tr>
1202<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1203<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a></td></tr>
1204<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_resize_descriptor.html" title="A ResizeDescriptor for the ResizeLayer. ">ResizeDescriptor</a> for the <a class="el" href="classarmnn_1_1_resize_layer.html" title="This layer represents a resize operation. ">ResizeLayer</a>. <a href="structarmnn_1_1_resize_descriptor.html#details">More...</a><br /></td></tr>
1205<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1206<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_resize_layer.html">ResizeLayer</a></td></tr>
1207<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a resize operation. <a href="classarmnn_1_1_resize_layer.html#details">More...</a><br /></td></tr>
1208<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1209<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_queue_descriptor.html">ResizeQueueDescriptor</a></td></tr>
1210<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1211<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl.html">ResolveTypeImpl</a></td></tr>
1212<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1213<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_boolean_01_4.html">ResolveTypeImpl&lt; DataType::Boolean &gt;</a></td></tr>
1214<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1215<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_float16_01_4.html">ResolveTypeImpl&lt; DataType::Float16 &gt;</a></td></tr>
1216<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1217<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_float32_01_4.html">ResolveTypeImpl&lt; DataType::Float32 &gt;</a></td></tr>
1218<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1219<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_asymm_s8_01_4.html">ResolveTypeImpl&lt; DataType::QAsymmS8 &gt;</a></td></tr>
1220<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1221<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_asymm_u8_01_4.html">ResolveTypeImpl&lt; DataType::QAsymmU8 &gt;</a></td></tr>
1222<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1223<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_symm_s16_01_4.html">ResolveTypeImpl&lt; DataType::QSymmS16 &gt;</a></td></tr>
1224<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1225<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_symm_s8_01_4.html">ResolveTypeImpl&lt; DataType::QSymmS8 &gt;</a></td></tr>
1226<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1227<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_signed32_01_4.html">ResolveTypeImpl&lt; DataType::Signed32 &gt;</a></td></tr>
1228<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1229<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1rsqrt.html">rsqrt</a></td></tr>
1230<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1231<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_rsqrt_layer.html">RsqrtLayer</a></td></tr>
1232<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1233<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_rsqrt_queue_descriptor.html">RsqrtQueueDescriptor</a></td></tr>
1234<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1235<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_rule.html">Rule</a></td></tr>
1236<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1237<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_runtime.html">Runtime</a></td></tr>
1238<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1239<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_runtime_exception.html">RuntimeException</a></td></tr>
1240<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1241<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_addition_workload.html">SampleDynamicAdditionWorkload</a></td></tr>
1242<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1243<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_layer_support.html">SampleDynamicLayerSupport</a></td></tr>
1244<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1245<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_workload_factory.html">SampleDynamicWorkloadFactory</a></td></tr>
1246<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1247<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_memory_manager.html">SampleMemoryManager</a></td></tr>
1248<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1249<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_tensor_handle.html">SampleTensorHandle</a></td></tr>
1250<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1251<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scaled_int32_decoder.html">ScaledInt32Decoder</a></td></tr>
1252<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1253<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scaled_int32_per_axis_decoder.html">ScaledInt32PerAxisDecoder</a></td></tr>
1254<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1255<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scoped_cpu_tensor_handle.html">ScopedCpuTensorHandle</a></td></tr>
1256<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1257<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scoped_profiling_event.html">ScopedProfilingEvent</a></td></tr>
1258<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1259<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_scoped_record.html">ScopedRecord</a></td></tr>
1260<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1261<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_broadcast_compatible.html">ShapesAreBroadcastCompatible</a></td></tr>
1262<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1263<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_same_rank.html">ShapesAreSameRank</a></td></tr>
1264<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1265<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_same_total_size.html">ShapesAreSameTotalSize</a></td></tr>
1266<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1267<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_simple_logger.html">SimpleLogger</a></td></tr>
1268<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1269<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a></td></tr>
1270<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_slice_descriptor.html" title="A SliceDescriptor for the SliceLayer. ">SliceDescriptor</a> for the <a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a>. <a href="structarmnn_1_1_slice_descriptor.html#details">More...</a><br /></td></tr>
1271<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1272<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a></td></tr>
1273<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1274<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_slice_queue_descriptor.html">SliceQueueDescriptor</a></td></tr>
1275<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1276<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a></td></tr>
1277<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_softmax_descriptor.html" title="A SoftmaxDescriptor for the SoftmaxLayer. ">SoftmaxDescriptor</a> for the <a class="el" href="classarmnn_1_1_softmax_layer.html" title="This layer represents a softmax operation. ">SoftmaxLayer</a>. <a href="structarmnn_1_1_softmax_descriptor.html#details">More...</a><br /></td></tr>
1278<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1279<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_softmax_layer.html">SoftmaxLayer</a></td></tr>
1280<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a softmax operation. <a href="classarmnn_1_1_softmax_layer.html#details">More...</a><br /></td></tr>
1281<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1282<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_softmax_queue_descriptor.html">SoftmaxQueueDescriptor</a></td></tr>
1283<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1284<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a></td></tr>
1285<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html" title="A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer. ">SpaceToBatchNdDescriptor</a> for the <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html" title="This layer represents a SpaceToBatchNd operation. ">SpaceToBatchNdLayer</a>. <a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#details">More...</a><br /></td></tr>
1286<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1287<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html">SpaceToBatchNdLayer</a></td></tr>
1288<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a SpaceToBatchNd operation. <a href="classarmnn_1_1_space_to_batch_nd_layer.html#details">More...</a><br /></td></tr>
1289<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1290<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_batch_nd_queue_descriptor.html">SpaceToBatchNdQueueDescriptor</a></td></tr>
1291<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1292<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a></td></tr>
1293<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html" title="A SpaceToDepthDescriptor for the SpaceToDepthLayer. ">SpaceToDepthDescriptor</a> for the <a class="el" href="classarmnn_1_1_space_to_depth_layer.html" title="This layer represents a SpaceToDepth operation. ">SpaceToDepthLayer</a>. <a href="structarmnn_1_1_space_to_depth_descriptor.html#details">More...</a><br /></td></tr>
1294<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1295<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_space_to_depth_layer.html">SpaceToDepthLayer</a></td></tr>
1296<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a SpaceToDepth operation. <a href="classarmnn_1_1_space_to_depth_layer.html#details">More...</a><br /></td></tr>
1297<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1298<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_depth_queue_descriptor.html">SpaceToDepthQueueDescriptor</a></td></tr>
1299<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1300<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_splitter_layer.html">SplitterLayer</a></td></tr>
1301<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a split operation. <a href="classarmnn_1_1_splitter_layer.html#details">More...</a><br /></td></tr>
1302<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1303<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a></td></tr>
1304<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1305<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1sqrt.html">sqrt</a></td></tr>
1306<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1307<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a></td></tr>
1308<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_stack_descriptor.html" title="A StackDescriptor for the StackLayer. ">StackDescriptor</a> for the <a class="el" href="classarmnn_1_1_stack_layer.html" title="This layer represents a stack operation. ">StackLayer</a>. <a href="structarmnn_1_1_stack_descriptor.html#details">More...</a><br /></td></tr>
1309<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1310<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_stack_layer.html">StackLayer</a></td></tr>
1311<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a stack operation. <a href="classarmnn_1_1_stack_layer.html#details">More...</a><br /></td></tr>
1312<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1313<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stack_queue_descriptor.html">StackQueueDescriptor</a></td></tr>
1314<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1315<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_standard_output_sink.html">StandardOutputSink</a></td></tr>
1316<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1317<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stand_in_descriptor.html">StandInDescriptor</a></td></tr>
1318<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_stand_in_descriptor.html" title="A StandInDescriptor for the StandIn layer. ">StandInDescriptor</a> for the StandIn layer. <a href="structarmnn_1_1_stand_in_descriptor.html#details">More...</a><br /></td></tr>
1319<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1320<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_stand_in_layer.html">StandInLayer</a></td></tr>
1321<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an unknown operation in the input graph. <a href="classarmnn_1_1_stand_in_layer.html#details">More...</a><br /></td></tr>
1322<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1323<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_static_range_visitor.html">StaticRangeVisitor</a></td></tr>
1324<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor class to establish min/max ranges based on the type of the layer. <a href="classarmnn_1_1_static_range_visitor.html#details">More...</a><br /></td></tr>
1325<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1326<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a></td></tr>
1327<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html" title="A StridedSliceDescriptor for the StridedSliceLayer. ">StridedSliceDescriptor</a> for the <a class="el" href="classarmnn_1_1_strided_slice_layer.html" title="This layer represents a strided slice operation. ">StridedSliceLayer</a>. <a href="structarmnn_1_1_strided_slice_descriptor.html#details">More...</a><br /></td></tr>
1328<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1329<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_strided_slice_layer.html">StridedSliceLayer</a></td></tr>
1330<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a strided slice operation. <a href="classarmnn_1_1_strided_slice_layer.html#details">More...</a><br /></td></tr>
1331<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1332<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_strided_slice_queue_descriptor.html">StridedSliceQueueDescriptor</a></td></tr>
1333<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1334<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters.html">StringifyLayerParameters</a></td></tr>
1335<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1336<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_activation_descriptor_01_4.html">StringifyLayerParameters&lt; ActivationDescriptor &gt;</a></td></tr>
1337<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1338<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_batch_normalization_descriptor_01_4.html">StringifyLayerParameters&lt; BatchNormalizationDescriptor &gt;</a></td></tr>
1339<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1340<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_batch_to_space_nd_descriptor_01_4.html">StringifyLayerParameters&lt; BatchToSpaceNdDescriptor &gt;</a></td></tr>
1341<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1342<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_convolution2d_descriptor_01_4.html">StringifyLayerParameters&lt; Convolution2dDescriptor &gt;</a></td></tr>
1343<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1344<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_depthwise_convolution2d_descriptor_01_4.html">StringifyLayerParameters&lt; DepthwiseConvolution2dDescriptor &gt;</a></td></tr>
1345<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1346<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_detection_post_process_descriptor_01_4.html">StringifyLayerParameters&lt; DetectionPostProcessDescriptor &gt;</a></td></tr>
1347<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1348<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_fake_quantization_descriptor_01_4.html">StringifyLayerParameters&lt; FakeQuantizationDescriptor &gt;</a></td></tr>
1349<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1350<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_fully_connected_descriptor_01_4.html">StringifyLayerParameters&lt; FullyConnectedDescriptor &gt;</a></td></tr>
1351<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1352<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_l2_normalization_descriptor_01_4.html">StringifyLayerParameters&lt; L2NormalizationDescriptor &gt;</a></td></tr>
1353<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1354<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_lstm_descriptor_01_4.html">StringifyLayerParameters&lt; LstmDescriptor &gt;</a></td></tr>
1355<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1356<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_mean_descriptor_01_4.html">StringifyLayerParameters&lt; MeanDescriptor &gt;</a></td></tr>
1357<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1358<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_normalization_descriptor_01_4.html">StringifyLayerParameters&lt; NormalizationDescriptor &gt;</a></td></tr>
1359<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1360<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_origins_descriptor_01_4.html">StringifyLayerParameters&lt; OriginsDescriptor &gt;</a></td></tr>
1361<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1362<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pad_descriptor_01_4.html">StringifyLayerParameters&lt; PadDescriptor &gt;</a></td></tr>
1363<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1364<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_permute_descriptor_01_4.html">StringifyLayerParameters&lt; PermuteDescriptor &gt;</a></td></tr>
1365<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1366<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pooling2d_descriptor_01_4.html">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;</a></td></tr>
1367<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1368<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pre_compiled_descriptor_01_4.html">StringifyLayerParameters&lt; PreCompiledDescriptor &gt;</a></td></tr>
1369<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1370<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_reshape_descriptor_01_4.html">StringifyLayerParameters&lt; ReshapeDescriptor &gt;</a></td></tr>
1371<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1372<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_resize_bilinear_descriptor_01_4.html">StringifyLayerParameters&lt; ResizeBilinearDescriptor &gt;</a></td></tr>
1373<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1374<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_resize_descriptor_01_4.html">StringifyLayerParameters&lt; ResizeDescriptor &gt;</a></td></tr>
1375<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1376<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_softmax_descriptor_01_4.html">StringifyLayerParameters&lt; SoftmaxDescriptor &gt;</a></td></tr>
1377<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1378<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_space_to_batch_nd_descriptor_01_4.html">StringifyLayerParameters&lt; SpaceToBatchNdDescriptor &gt;</a></td></tr>
1379<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1380<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_space_to_depth_descriptor_01_4.html">StringifyLayerParameters&lt; SpaceToDepthDescriptor &gt;</a></td></tr>
1381<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1382<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_stack_descriptor_01_4.html">StringifyLayerParameters&lt; StackDescriptor &gt;</a></td></tr>
1383<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1384<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_strided_slice_descriptor_01_4.html">StringifyLayerParameters&lt; StridedSliceDescriptor &gt;</a></td></tr>
1385<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1386<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_transpose_convolution2d_descriptor_01_4.html">StringifyLayerParameters&lt; TransposeConvolution2dDescriptor &gt;</a></td></tr>
1387<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1388<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_views_descriptor_01_4.html">StringifyLayerParameters&lt; ViewsDescriptor &gt;</a></td></tr>
1389<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1390<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_string_mapping.html">StringMapping</a></td></tr>
1391<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1392<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a></td></tr>
1393<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1394<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subgraph_view_selector.html">SubgraphViewSelector</a></td></tr>
1395<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1396<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subtraction_layer.html">SubtractionLayer</a></td></tr>
1397<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a subtraction operation. <a href="classarmnn_1_1_subtraction_layer.html#details">More...</a><br /></td></tr>
1398<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1399<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.html">SubtractionQueueDescriptor</a></td></tr>
1400<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1401<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_switch_layer.html">SwitchLayer</a></td></tr>
1402<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer calculates both true and false outputs for input. <a href="classarmnn_1_1_switch_layer.html#details">More...</a><br /></td></tr>
1403<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1404<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_switch_queue_descriptor.html">SwitchQueueDescriptor</a></td></tr>
1405<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1406<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sync_mem_generic_workload.html">SyncMemGenericWorkload</a></td></tr>
1407<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1408<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor.html">Tensor</a></td></tr>
1409<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A tensor defined by a <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> (shape and data type) and a mutable backing store. <a href="classarmnn_1_1_tensor.html#details">More...</a><br /></td></tr>
1410<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1411<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_buffer_array_view.html">TensorBufferArrayView</a></td></tr>
1412<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1413<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a></td></tr>
1414<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1415<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a></td></tr>
1416<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1417<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_tensor_num_dimensions_are_correct.html">TensorNumDimensionsAreCorrect</a></td></tr>
1418<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1419<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a></td></tr>
1420<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1421<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_batch_normalization_layer_visitor.html">TestBatchNormalizationLayerVisitor</a></td></tr>
1422<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1423<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_constant_layer_visitor.html">TestConstantLayerVisitor</a></td></tr>
1424<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1425<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_convolution2d_layer_visitor.html">TestConvolution2dLayerVisitor</a></td></tr>
1426<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1427<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_depthwise_convolution2d_layer_visitor.html">TestDepthwiseConvolution2dLayerVisitor</a></td></tr>
1428<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1429<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_fully_connected_layer_vistor.html">TestFullyConnectedLayerVistor</a></td></tr>
1430<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1431<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_input_layer_visitor.html">TestInputLayerVisitor</a></td></tr>
1432<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1433<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_layer_visitor.html">TestLayerVisitor</a></td></tr>
1434<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1435<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_lstm_layer_visitor.html">TestLstmLayerVisitor</a></td></tr>
1436<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1437<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_output_layer_visitor.html">TestOutputLayerVisitor</a></td></tr>
1438<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1439<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_quantized_lstm_layer_visitor.html">TestQuantizedLstmLayerVisitor</a></td></tr>
1440<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1441<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_timeout_exception.html">TimeoutException</a></td></tr>
1442<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1443<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a></td></tr>
1444<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html" title="A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer. ">TransposeConvolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html" title="This layer represents a 2D transpose convolution operation. ">TransposeConvolution2dLayer</a>. <a href="structarmnn_1_1_transpose_convolution2d_descriptor.html#details">More...</a><br /></td></tr>
1445<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1446<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html">TransposeConvolution2dLayer</a></td></tr>
1447<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a 2D transpose convolution operation. <a href="classarmnn_1_1_transpose_convolution2d_layer.html#details">More...</a><br /></td></tr>
1448<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1449<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_convolution2d_queue_descriptor.html">TransposeConvolution2dQueueDescriptor</a></td></tr>
1450<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1451<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_any_of.html">TypeAnyOf</a></td></tr>
1452<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1453<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_typed_iterator.html">TypedIterator</a></td></tr>
1454<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1455<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a></td></tr>
1456<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1457<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_is.html">TypeIs</a></td></tr>
1458<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1459<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_not_per_axis_quantized.html">TypeNotPerAxisQuantized</a></td></tr>
1460<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1461<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_types_are_equal.html">TypesAreEqual</a></td></tr>
1462<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1463<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_unimplemented_exception.html">UnimplementedException</a></td></tr>
1464<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1465<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a></td></tr>
1466<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_views_descriptor.html" title="A ViewsDescriptor for the SplitterLayer. Descriptor to configure the splitting process. Number of Views must be equal to the number of outputs, and their order must match - e.g. first view corresponds to the first output, second view to the second output, etc. ">ViewsDescriptor</a> for the <a class="el" href="classarmnn_1_1_splitter_layer.html" title="This layer represents a split operation. ">SplitterLayer</a>. Descriptor to configure the splitting process. Number of Views must be equal to the number of outputs, and their order must match - e.g. first view corresponds to the first output, second view to the second output, etc. <a href="structarmnn_1_1_views_descriptor.html#details">More...</a><br /></td></tr>
1467<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1468<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_visitor_no_throw_policy.html">VisitorNoThrowPolicy</a></td></tr>
1469<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1470<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_visitor_throwing_policy.html">VisitorThrowingPolicy</a></td></tr>
1471<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1472<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_wall_clock_timer.html">WallClockTimer</a></td></tr>
1473<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1474<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_workload_data_collector.html">WorkloadDataCollector</a></td></tr>
1475<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1476<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_workload_factory_base.html">WorkloadFactoryBase</a></td></tr>
1477<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1478<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a></td></tr>
1479<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1480</table><table class="memberdecls">
1481<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
1482Typedefs</h2></td></tr>
1483<tr class="memitem:ac858d91eedb7b4dba1bcd0aa760ab510"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac858d91eedb7b4dba1bcd0aa760ab510">BackendIdVector</a> = std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt;</td></tr>
1484<tr class="separator:ac858d91eedb7b4dba1bcd0aa760ab510"><td class="memSeparator" colspan="2">&#160;</td></tr>
1485<tr class="memitem:a1854d9cda81304325664363c1fd0fb27"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> = std::unordered_set&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt;</td></tr>
1486<tr class="separator:a1854d9cda81304325664363c1fd0fb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
1487<tr class="memitem:ade0af9dacaa52cafdd701bef2e901c77"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ade0af9dacaa52cafdd701bef2e901c77">IBackendInternalUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a> &gt;</td></tr>
1488<tr class="separator:ade0af9dacaa52cafdd701bef2e901c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
1489<tr class="memitem:a754d43dc24a0fe36ecb3044d8f13a413"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a754d43dc24a0fe36ecb3044d8f13a413">DynamicBackendPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_dynamic_backend.html">DynamicBackend</a> &gt;</td></tr>
1490<tr class="separator:a754d43dc24a0fe36ecb3044d8f13a413"><td class="memSeparator" colspan="2">&#160;</td></tr>
1491<tr class="memitem:a65a0ad0a7b807e70295481a7b9cb93ac"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a65a0ad0a7b807e70295481a7b9cb93ac">IBackendContextUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_context.html">IBackendContext</a> &gt;</td></tr>
1492<tr class="separator:a65a0ad0a7b807e70295481a7b9cb93ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
1493<tr class="memitem:a12bff6d51d63dac1375c89bc8415dc46"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a> &gt;</td></tr>
1494<tr class="separator:a12bff6d51d63dac1375c89bc8415dc46"><td class="memSeparator" colspan="2">&#160;</td></tr>
1495<tr class="memitem:ac14705405cbcdd580df613de6766fe65"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> = <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a></td></tr>
1496<tr class="memdesc:ac14705405cbcdd580df613de6766fe65"><td class="mdescLeft">&#160;</td><td class="mdescRight">A LogSoftmaxDescriptor for the <a class="el" href="classarmnn_1_1_log_softmax_layer.html" title="This layer represents a log softmax operation. ">LogSoftmaxLayer</a>. <a href="#ac14705405cbcdd580df613de6766fe65">More...</a><br /></td></tr>
1497<tr class="separator:ac14705405cbcdd580df613de6766fe65"><td class="memSeparator" colspan="2">&#160;</td></tr>
1498<tr class="memitem:a3647f60510bc8ddaced01c51b0ee8714"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> = <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a></td></tr>
1499<tr class="memdesc:a3647f60510bc8ddaced01c51b0ee8714"><td class="mdescLeft">&#160;</td><td class="mdescRight">A DepthToSpaceDescriptor for the <a class="el" href="classarmnn_1_1_depth_to_space_layer.html" title="This layer represents a DepthToSpace operation. ">DepthToSpaceLayer</a>. <a href="#a3647f60510bc8ddaced01c51b0ee8714">More...</a><br /></td></tr>
1500<tr class="separator:a3647f60510bc8ddaced01c51b0ee8714"><td class="memSeparator" colspan="2">&#160;</td></tr>
1501<tr class="memitem:a7863c179ff92feec660c48ab7b95ae55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7863c179ff92feec660c48ab7b95ae55">ConcatDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td></tr>
1502<tr class="separator:a7863c179ff92feec660c48ab7b95ae55"><td class="memSeparator" colspan="2">&#160;</td></tr>
1503<tr class="memitem:a003d213dd28b0b8c0f26fbf268ccb975"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a003d213dd28b0b8c0f26fbf268ccb975">MergerDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td></tr>
1504<tr class="separator:a003d213dd28b0b8c0f26fbf268ccb975"><td class="memSeparator" colspan="2">&#160;</td></tr>
1505<tr class="memitem:a60291543fe872b795e71e05bcd835fd1"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a> = <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a></td></tr>
1506<tr class="separator:a60291543fe872b795e71e05bcd835fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
1507<tr class="memitem:a11fa919c11fe46aad613b2e960fcfe90"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> &gt;</td></tr>
1508<tr class="separator:a11fa919c11fe46aad613b2e960fcfe90"><td class="memSeparator" colspan="2">&#160;</td></tr>
1509<tr class="memitem:ace74f6f9feb95a964a49d79458232703"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *network)&gt;</td></tr>
1510<tr class="separator:ace74f6f9feb95a964a49d79458232703"><td class="memSeparator" colspan="2">&#160;</td></tr>
1511<tr class="memitem:a674efcf6cbdb9e831d653ff0e821fb38"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a> *network)&gt;</td></tr>
1512<tr class="separator:a674efcf6cbdb9e831d653ff0e821fb38"><td class="memSeparator" colspan="2">&#160;</td></tr>
1513<tr class="memitem:a83015160d8c67d5d77735eb0d4033d9a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> = int</td></tr>
1514<tr class="separator:a83015160d8c67d5d77735eb0d4033d9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1515<tr class="memitem:a150468a02bd7b2d2d061c4aaaee939f0"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a>, void(*)(<a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a> *runtime)&gt;</td></tr>
1516<tr class="separator:a150468a02bd7b2d2d061c4aaaee939f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1517<tr class="memitem:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2d3a708a26ac6d77bf8f15506e89a25a">IGpuAccTunedParametersPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.html">IGpuAccTunedParameters</a> &gt;</td></tr>
1518<tr class="memdesc:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The following API is replaced by the backend options API. <a href="#a2d3a708a26ac6d77bf8f15506e89a25a">More...</a><br /></td></tr>
1519<tr class="separator:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1520<tr class="memitem:a5b05f3b7208ec7cea3338e30057c0bac"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> = unsigned int</td></tr>
1521<tr class="separator:a5b05f3b7208ec7cea3338e30057c0bac"><td class="memSeparator" colspan="2">&#160;</td></tr>
1522<tr class="memitem:a280670a263dc4fd40491f6d0a2737f44"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">BindingPointInfo</a> = std::pair&lt; <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a>, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &gt;</td></tr>
1523<tr class="separator:a280670a263dc4fd40491f6d0a2737f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
1524<tr class="memitem:aa01bce88f89975a5a031db4cc8861527"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> = std::vector&lt; std::pair&lt; <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &gt; &gt;</td></tr>
1525<tr class="separator:aa01bce88f89975a5a031db4cc8861527"><td class="memSeparator" colspan="2">&#160;</td></tr>
1526<tr class="memitem:a8f091a512915d1cb29a4ebf13dfc53ea"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a> = std::vector&lt; std::pair&lt; <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_tensor.html">Tensor</a> &gt; &gt;</td></tr>
1527<tr class="separator:a8f091a512915d1cb29a4ebf13dfc53ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
1528<tr class="memitem:ae18caa7ee6287aa7f8c2a5ce6bc92382"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae18caa7ee6287aa7f8c2a5ce6bc92382">IBackendSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a> &gt;</td></tr>
1529<tr class="separator:ae18caa7ee6287aa7f8c2a5ce6bc92382"><td class="memSeparator" colspan="2">&#160;</td></tr>
1530<tr class="memitem:a5a665483e56a688e9f8180accdf72d80"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5a665483e56a688e9f8180accdf72d80">IBackendUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>, void(*)(<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a> *backend)&gt;</td></tr>
1531<tr class="separator:a5a665483e56a688e9f8180accdf72d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
1532<tr class="memitem:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> = int</td></tr>
1533<tr class="memdesc:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of identifiers for bindable layers (inputs, outputs). <a href="#ab8cf8f9fb6792e654c2d8d8382f6f01b">More...</a><br /></td></tr>
1534<tr class="separator:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1535<tr class="memitem:afad4088a9a058114ee5f87246f87bf49"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> = <a class="el" href="classarmnn_1_1profiling_1_1_profiling_guid.html">profiling::ProfilingGuid</a></td></tr>
1536<tr class="memdesc:afad4088a9a058114ee5f87246f87bf49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define LayerGuid type. <a href="#afad4088a9a058114ee5f87246f87bf49">More...</a><br /></td></tr>
1537<tr class="separator:afad4088a9a058114ee5f87246f87bf49"><td class="memSeparator" colspan="2">&#160;</td></tr>
1538<tr class="memitem:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a> = std::function&lt; void(<a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, unsigned int slotIndex, <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *tensorHandle)&gt;</td></tr>
1539<tr class="separator:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="memSeparator" colspan="2">&#160;</td></tr>
1540<tr class="memitem:a41119e261eec9343888d2ceab1e4999a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> = std::unique_ptr&lt; class <a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a> *quantizer)&gt;</td></tr>
1541<tr class="separator:a41119e261eec9343888d2ceab1e4999a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1542<tr class="memitem:a15f53f26b8495b51d0bba3d1bc4efc80"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a15f53f26b8495b51d0bba3d1bc4efc80">WorkloadQueue</a> = std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_workload.html">IWorkload</a> &gt; &gt;</td></tr>
1543<tr class="separator:a15f53f26b8495b51d0bba3d1bc4efc80"><td class="memSeparator" colspan="2">&#160;</td></tr>
1544<tr class="memitem:ac6e86c1def7f674d3c4cb7f577874aa6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">Coordinates</a> = std::array&lt; unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> &gt;</td></tr>
1545<tr class="separator:ac6e86c1def7f674d3c4cb7f577874aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1546<tr class="memitem:a293695a94110c1a0eb77e29c22dce79a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a293695a94110c1a0eb77e29c22dce79a">Dimensions</a> = std::array&lt; unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> &gt;</td></tr>
1547<tr class="separator:a293695a94110c1a0eb77e29c22dce79a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1548<tr class="memitem:a689de00cadd81b4e35b7448e4fbbc034"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> = std::function&lt; void(const void *)&gt;</td></tr>
1549<tr class="separator:a689de00cadd81b4e35b7448e4fbbc034"><td class="memSeparator" colspan="2">&#160;</td></tr>
1550<tr class="memitem:a7b4ac337ed307e0739e628d5b9883856"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7b4ac337ed307e0739e628d5b9883856">CompiledBlobPtr</a> = std::unique_ptr&lt; void, <a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> &gt;</td></tr>
1551<tr class="separator:a7b4ac337ed307e0739e628d5b9883856"><td class="memSeparator" colspan="2">&#160;</td></tr>
1552<tr class="memitem:a02847c99a2acae3b267615479f93ab55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a> = <a class="el" href="classarmnn_1_1_i_subgraph_view_converter.html">ISubgraphViewConverter</a></td></tr>
1553<tr class="separator:a02847c99a2acae3b267615479f93ab55"><td class="memSeparator" colspan="2">&#160;</td></tr>
1554<tr class="memitem:a419086ecb4dc9d0f9e5d8933c87e2ea2"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a419086ecb4dc9d0f9e5d8933c87e2ea2">LayerPriority</a> = unsigned int</td></tr>
1555<tr class="separator:a419086ecb4dc9d0f9e5d8933c87e2ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
1556<tr class="memitem:ae73bf7cb78cc552c5511431b0d583f14"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> = std::function&lt; void(const void *)&gt;</td></tr>
1557<tr class="separator:ae73bf7cb78cc552c5511431b0d583f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
1558<tr class="memitem:ae3bff3986cb5a50637c9b3238d821f54"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae3bff3986cb5a50637c9b3238d821f54">PreCompiledObjectPtr</a> = std::unique_ptr&lt; void, <a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> &gt;</td></tr>
1559<tr class="separator:ae3bff3986cb5a50637c9b3238d821f54"><td class="memSeparator" colspan="2">&#160;</td></tr>
1560<tr class="memitem:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memTemplParams" colspan="2">template&lt;LayerType Type&gt; </td></tr>
1561<tr class="memitem:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6b5db6cc9aad8ec0ac7b14f859aacdab">LayerTypeOf</a> = typename <a class="el" href="structarmnn_1_1_layer_type_of_impl.html">LayerTypeOfImpl</a>&lt; Type &gt;::Type</td></tr>
1562<tr class="separator:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memSeparator" colspan="2">&#160;</td></tr>
1563<tr class="memitem:a9173495a61a0092b5f38b855f02c3585"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> = std::map&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, std::unique_ptr&lt; class <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a> &gt; &gt;</td></tr>
1564<tr class="separator:a9173495a61a0092b5f38b855f02c3585"><td class="memSeparator" colspan="2">&#160;</td></tr>
1565<tr class="memitem:a9b8e5a95f8c061bbbcdb036915dcb61a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> = std::pair&lt; float, int &gt;</td></tr>
1566<tr class="separator:a9b8e5a95f8c061bbbcdb036915dcb61a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1567<tr class="memitem:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt; std::vector&lt; float &gt;, std::vector&lt; int &gt;, std::vector&lt; unsigned char &gt; &gt;</td></tr>
1568<tr class="separator:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memSeparator" colspan="2">&#160;</td></tr>
1569<tr class="memitem:a0743ed5e860c316a20b68ca96301b411"><td class="memTemplParams" colspan="2">template&lt;DataType DT&gt; </td></tr>
1570<tr class="memitem:a0743ed5e860c316a20b68ca96301b411"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">ResolveType</a> = typename <a class="el" href="structarmnn_1_1_resolve_type_impl.html">ResolveTypeImpl</a>&lt; DT &gt;::Type</td></tr>
1571<tr class="separator:a0743ed5e860c316a20b68ca96301b411"><td class="memSeparator" colspan="2">&#160;</td></tr>
1572<tr class="memitem:a8c42c6647e31ebe525aeba878d133e45"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> = std::function&lt; void(const std::string &amp;name, const std::string &amp;value)&gt;</td></tr>
1573<tr class="separator:a8c42c6647e31ebe525aeba878d133e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
1574<tr class="memitem:a86e4b37c7c48cf5fbc5e99ccc6fd50b7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">instead</a> = <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a></td></tr>
1575<tr class="separator:a86e4b37c7c48cf5fbc5e99ccc6fd50b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1576<tr class="memitem:a997e96288bdb106c922202e3f33d5d7b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> = std::pair&lt; float, float &gt;</td></tr>
1577<tr class="separator:a997e96288bdb106c922202e3f33d5d7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1578<tr class="memitem:ac757baefa4b72b54c38f713f86418f8a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> = std::vector&lt; <a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> &gt;</td></tr>
1579<tr class="separator:ac757baefa4b72b54c38f713f86418f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1580<tr class="memitem:a061aafb62b3769f55369845c3990ec7a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a061aafb62b3769f55369845c3990ec7a">MinMaxRangeMap</a> = std::unordered_map&lt; <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>, <a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> &gt;</td></tr>
1581<tr class="separator:a061aafb62b3769f55369845c3990ec7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1582<tr class="memitem:a0f38fa92b2468d5378258a2b074c1a31"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> = half_float::half</td></tr>
1583<tr class="separator:a0f38fa92b2468d5378258a2b074c1a31"><td class="memSeparator" colspan="2">&#160;</td></tr>
1584<tr class="memitem:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1585<tr class="memitem:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abaedcfd0ae08790c03bfe8ba7586dd84">FloatWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1586<tr class="separator:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memSeparator" colspan="2">&#160;</td></tr>
1587<tr class="memitem:a0493144f15b35804a133c9aa0b63fcc9"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1588<tr class="memitem:a0493144f15b35804a133c9aa0b63fcc9"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0493144f15b35804a133c9aa0b63fcc9">Float32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1589<tr class="separator:a0493144f15b35804a133c9aa0b63fcc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1590<tr class="memitem:ad4d53881107428c301d43b5aad16bfe0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1591<tr class="memitem:ad4d53881107428c301d43b5aad16bfe0"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad4d53881107428c301d43b5aad16bfe0">Uint8Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;</td></tr>
1592<tr class="separator:ad4d53881107428c301d43b5aad16bfe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1593<tr class="memitem:a3e4b88b993c90b274e0bd268c35d798e"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1594<tr class="memitem:a3e4b88b993c90b274e0bd268c35d798e"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3e4b88b993c90b274e0bd268c35d798e">Int32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt;</td></tr>
1595<tr class="separator:a3e4b88b993c90b274e0bd268c35d798e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1596<tr class="memitem:ab539ef5a0c152536da71c8fcc065efb5"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1597<tr class="memitem:ab539ef5a0c152536da71c8fcc065efb5"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab539ef5a0c152536da71c8fcc065efb5">BooleanWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
1598<tr class="separator:ab539ef5a0c152536da71c8fcc065efb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
1599<tr class="memitem:a20d2055c37fedf3f39db9facf2c8c697"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1600<tr class="memitem:a20d2055c37fedf3f39db9facf2c8c697"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a20d2055c37fedf3f39db9facf2c8c697">BaseFloat32ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
1601<tr class="separator:a20d2055c37fedf3f39db9facf2c8c697"><td class="memSeparator" colspan="2">&#160;</td></tr>
1602<tr class="memitem:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1603<tr class="memitem:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cbc0957cf0637cc3fd9702086117cc0">BaseUint8ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
1604<tr class="separator:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1605<tr class="memitem:a827d59b5a779a8089017802172817f3c"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1606<tr class="memitem:a827d59b5a779a8089017802172817f3c"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a827d59b5a779a8089017802172817f3c">Float16ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1607<tr class="separator:a827d59b5a779a8089017802172817f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1608<tr class="memitem:a6486138451112140f98516c0bee18615"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1609<tr class="memitem:a6486138451112140f98516c0bee18615"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6486138451112140f98516c0bee18615">Float32ToFloat16Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a> &gt;</td></tr>
1610<tr class="separator:a6486138451112140f98516c0bee18615"><td class="memSeparator" colspan="2">&#160;</td></tr>
1611<tr class="memitem:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1612<tr class="memitem:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6d4fbf927a9d8e68cab1d7965c7dbc44">Uint8ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1613<tr class="separator:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memSeparator" colspan="2">&#160;</td></tr>
1614<tr class="memitem:a2231ac018fe2c465f2d42fef597d67e7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2231ac018fe2c465f2d42fef597d67e7">InputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td></tr>
1615<tr class="separator:a2231ac018fe2c465f2d42fef597d67e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1616<tr class="memitem:a37a1a6b381ccc76df203fee023234996"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a37a1a6b381ccc76df203fee023234996">OutputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td></tr>
1617<tr class="separator:a37a1a6b381ccc76df203fee023234996"><td class="memSeparator" colspan="2">&#160;</td></tr>
1618<tr class="memitem:a308ba160745ba35e1de8d698d0139eb4"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a308ba160745ba35e1de8d698d0139eb4">MergerQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a></td></tr>
1619<tr class="separator:a308ba160745ba35e1de8d698d0139eb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
1620<tr class="memitem:a947e07902b1b5d98b57eeae34053146b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">FactoryId</a> = <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a></td></tr>
1621<tr class="separator:a947e07902b1b5d98b57eeae34053146b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1622<tr class="memitem:a77e1ccec3acbb3dadba3fd4939508b32"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a77e1ccec3acbb3dadba3fd4939508b32">ClGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1623<tr class="separator:a77e1ccec3acbb3dadba3fd4939508b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
1624<tr class="memitem:a569ba573145851e753623be817b98e9b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a569ba573145851e753623be817b98e9b">ClGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1625<tr class="separator:a569ba573145851e753623be817b98e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1626<tr class="memitem:a18b8b3bd9e39c84e36ab560978ab64c7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a18b8b3bd9e39c84e36ab560978ab64c7">NeonGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1627<tr class="separator:a18b8b3bd9e39c84e36ab560978ab64c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1628<tr class="memitem:a9b0bb8592cd6e6cb693d305825fae448"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9b0bb8592cd6e6cb693d305825fae448">NeonGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1629<tr class="separator:a9b0bb8592cd6e6cb693d305825fae448"><td class="memSeparator" colspan="2">&#160;</td></tr>
1630<tr class="memitem:ac8d7aa6e66fb59a839833b160f619228"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac8d7aa6e66fb59a839833b160f619228">RefDebugFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
1631<tr class="separator:ac8d7aa6e66fb59a839833b160f619228"><td class="memSeparator" colspan="2">&#160;</td></tr>
1632<tr class="memitem:ad194629946077375dcce05b2449334c8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad194629946077375dcce05b2449334c8">RefDebugFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1633<tr class="separator:ad194629946077375dcce05b2449334c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1634<tr class="memitem:a0c1df21c99a094d2f078ca90047a73ff"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0c1df21c99a094d2f078ca90047a73ff">RefDebugQAsymmU8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1635<tr class="separator:a0c1df21c99a094d2f078ca90047a73ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
1636<tr class="memitem:a44ab486f2a7728d75bbf52ffa1025ab5"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a44ab486f2a7728d75bbf52ffa1025ab5">RefDebugQAsymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a> &gt;</td></tr>
1637<tr class="separator:a44ab486f2a7728d75bbf52ffa1025ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
1638<tr class="memitem:ae6d1d064ec7d33b2cc5bcc8afafbe193"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae6d1d064ec7d33b2cc5bcc8afafbe193">RefDebugQSymmS16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
1639<tr class="separator:ae6d1d064ec7d33b2cc5bcc8afafbe193"><td class="memSeparator" colspan="2">&#160;</td></tr>
1640<tr class="memitem:ad607a96fafba334ba5bde946947dd0af"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad607a96fafba334ba5bde946947dd0af">RefDebugQSymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a> &gt;</td></tr>
1641<tr class="separator:ad607a96fafba334ba5bde946947dd0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
1642<tr class="memitem:a2b2b0a60cbb51bf3eb9bd2899aee2c86"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2b2b0a60cbb51bf3eb9bd2899aee2c86">RefDebugSigned32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a> &gt;</td></tr>
1643<tr class="separator:a2b2b0a60cbb51bf3eb9bd2899aee2c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
1644<tr class="memitem:a7a9d365fbb868d53e67c4cdfdbf9cf7e"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7a9d365fbb868d53e67c4cdfdbf9cf7e">RefAdditionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::plus&lt; float &gt;, <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a5b84f797c82a1ad494549330af517ad5">StringMapping::RefAdditionWorkload_Execute</a> &gt;</td></tr>
1645<tr class="separator:a7a9d365fbb868d53e67c4cdfdbf9cf7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1646<tr class="memitem:a01853f5d02495c04636016c1e3e7c144"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a01853f5d02495c04636016c1e3e7c144">RefSubtractionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::minus&lt; float &gt;, <a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.html">SubtractionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a3694ad0341ebb1fe50b78efe13672519">StringMapping::RefSubtractionWorkload_Execute</a> &gt;</td></tr>
1647<tr class="separator:a01853f5d02495c04636016c1e3e7c144"><td class="memSeparator" colspan="2">&#160;</td></tr>
1648<tr class="memitem:aabff736a576814611f65ce1a14600a17"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aabff736a576814611f65ce1a14600a17">RefMultiplicationWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::multiplies&lt; float &gt;, <a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.html">MultiplicationQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11ab3eb648f0f29bf56db68d80624b9bb6c">StringMapping::RefMultiplicationWorkload_Execute</a> &gt;</td></tr>
1649<tr class="separator:aabff736a576814611f65ce1a14600a17"><td class="memSeparator" colspan="2">&#160;</td></tr>
1650<tr class="memitem:a5c3a2aa3adc87d79164914b63f27dc25"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5c3a2aa3adc87d79164914b63f27dc25">RefDivisionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; std::divides&lt; float &gt;, <a class="el" href="structarmnn_1_1_division_queue_descriptor.html">DivisionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a69485fd6282ca5ed7d50589f8f759645">StringMapping::RefDivisionWorkload_Execute</a> &gt;</td></tr>
1651<tr class="separator:a5c3a2aa3adc87d79164914b63f27dc25"><td class="memSeparator" colspan="2">&#160;</td></tr>
1652<tr class="memitem:a044df856403d0af13189f49bcfb209dd"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a044df856403d0af13189f49bcfb209dd">RefMaximumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; <a class="el" href="structarmnn_1_1maximum.html">armnn::maximum</a>&lt; float &gt;, <a class="el" href="structarmnn_1_1_maximum_queue_descriptor.html">MaximumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11aea93564675347f60a80cf699c177a80e">StringMapping::RefMaximumWorkload_Execute</a> &gt;</td></tr>
1653<tr class="separator:a044df856403d0af13189f49bcfb209dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
1654<tr class="memitem:aa8c69a3741eafef59e51564511403fb8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa8c69a3741eafef59e51564511403fb8">RefMinimumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt; <a class="el" href="structarmnn_1_1minimum.html">armnn::minimum</a>&lt; float &gt;, <a class="el" href="structarmnn_1_1_minimum_queue_descriptor.html">MinimumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a9bddcf9777d5ca3ab5e40b3a93559625">StringMapping::RefMinimumWorkload_Execute</a> &gt;</td></tr>
1655<tr class="separator:aa8c69a3741eafef59e51564511403fb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1656<tr class="memitem:aef8145fff0dca42e42786745414fec96"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aef8145fff0dca42e42786745414fec96">RefPadFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1657<tr class="separator:aef8145fff0dca42e42786745414fec96"><td class="memSeparator" colspan="2">&#160;</td></tr>
1658<tr class="memitem:a9e2582f828ee36a6bce3e1abdd660bc5"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9e2582f828ee36a6bce3e1abdd660bc5">RefPadFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
1659<tr class="separator:a9e2582f828ee36a6bce3e1abdd660bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
1660<tr class="memitem:abc074517cf18f4e0827faca852df7bd9"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abc074517cf18f4e0827faca852df7bd9">RefPadQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1661<tr class="separator:abc074517cf18f4e0827faca852df7bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1662<tr class="memitem:acc8fc2b1c708fd1c7af0d04e004e8516"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc8fc2b1c708fd1c7af0d04e004e8516">RefPadQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
1663<tr class="separator:acc8fc2b1c708fd1c7af0d04e004e8516"><td class="memSeparator" colspan="2">&#160;</td></tr>
1664<tr class="memitem:ad1c0fb6bfa580b04574ab56971b6cbc6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad1c0fb6bfa580b04574ab56971b6cbc6">RefPermuteFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
1665<tr class="separator:ad1c0fb6bfa580b04574ab56971b6cbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1666<tr class="memitem:a54c3f7c7b9909e828a084f68dc78a031"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a54c3f7c7b9909e828a084f68dc78a031">RefPermuteFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1667<tr class="separator:a54c3f7c7b9909e828a084f68dc78a031"><td class="memSeparator" colspan="2">&#160;</td></tr>
1668<tr class="memitem:a50ffe5068ecb2fbf7f73b30ef0d753f8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a50ffe5068ecb2fbf7f73b30ef0d753f8">RefPermuteQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1669<tr class="separator:a50ffe5068ecb2fbf7f73b30ef0d753f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1670<tr class="memitem:a6ffed93fad525ce1d534cec2cdaee6bd"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6ffed93fad525ce1d534cec2cdaee6bd">RefPermuteQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
1671<tr class="separator:a6ffed93fad525ce1d534cec2cdaee6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
1672</table><table class="memberdecls">
1673<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
1674Enumerations</h2></td></tr>
1675<tr class="memitem:ae2f04a162585c0a5222a537efd5456ae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> { <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,
1676<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a> = 1,
1677<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a> = 2,
1678<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a> = 3
1679 }</td></tr>
1680<tr class="separator:ae2f04a162585c0a5222a537efd5456ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
1681<tr class="memitem:aff209afc1dc598da399e3e78617ce016"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> { <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>,
1682<a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>,
1683<a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>,
1684<a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a>
1685 }</td></tr>
1686<tr class="separator:aff209afc1dc598da399e3e78617ce016"><td class="memSeparator" colspan="2">&#160;</td></tr>
1687<tr class="memitem:a4dc0adc6737b5944e7671bee71788407"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a> { <br />
1688&#160;&#160;<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">trace</a>,
1689<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>,
1690<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,
1691<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>,
1692<br />
1693&#160;&#160;<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>,
1694<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">fatal</a>
1695<br />
1696 }</td></tr>
1697<tr class="separator:a4dc0adc6737b5944e7671bee71788407"><td class="memSeparator" colspan="2">&#160;</td></tr>
1698<tr class="memitem:a0fc99721e27eb20ecd0ea85a3cc8b488"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a> { <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,
1699<a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a> = 1,
1700<a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">DmaBuf</a> = 2,
1701<a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">DmaBufProtected</a> = 4
1702 }</td></tr>
1703<tr class="separator:a0fc99721e27eb20ecd0ea85a3cc8b488"><td class="memSeparator" colspan="2">&#160;</td></tr>
1704<tr class="memitem:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> { <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a> = 0,
1705<a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a> = 1
1706 }</td></tr>
1707<tr class="separator:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1708<tr class="memitem:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> { <br />
1709&#160;&#160;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a> = 0,
1710<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a> = 1,
1711<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a> = 2,
1712<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a> = 3,
1713<br />
1714&#160;&#160;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a> = 4,
1715<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a> = 5,
1716<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a> = 6,
1717<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a> = 7,
1718<br />
1719&#160;&#160;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a> = 8,
1720<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">QuantisedAsymm8</a> = QAsymmU8,
1721<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">QuantisedSymm16</a> = QSymmS16
1722<br />
1723 }</td></tr>
1724<tr class="separator:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1725<tr class="memitem:ad1d5cce2d9e9a5d61c243e5c989112e0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> { <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a> = 1,
1726<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a> = 2
1727 }</td></tr>
1728<tr class="separator:ad1d5cce2d9e9a5d61c243e5c989112e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1729<tr class="memitem:a56297e0f7b215eea46c818cb7528d9ea"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> { <br />
1730&#160;&#160;<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a> = 0,
1731<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a> = 1,
1732<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a> = 2,
1733<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a> = 3,
1734<br />
1735&#160;&#160;<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a> = 4,
1736<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a> = 5,
1737<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a> = 6,
1738<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 7,
1739<br />
1740&#160;&#160;<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 8,
1741<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a> = 9
1742<br />
1743 }</td></tr>
1744<tr class="separator:a56297e0f7b215eea46c818cb7528d9ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
1745<tr class="memitem:ae7e8cbf71db6a490789ca6dcaa8deeae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> { <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a> = 0,
1746<a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 1
1747 }</td></tr>
1748<tr class="separator:ae7e8cbf71db6a490789ca6dcaa8deeae"><td class="memSeparator" colspan="2">&#160;</td></tr>
1749<tr class="memitem:a2d299363c9fc33334c571fa29ca4f58c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> { <br />
1750&#160;&#160;<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a> = 0,
1751<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a> = 1,
1752<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a> = 2,
1753<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a> = 3,
1754<br />
1755&#160;&#160;<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a> = 4,
1756<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a> = 5
1757<br />
1758 }</td></tr>
1759<tr class="separator:a2d299363c9fc33334c571fa29ca4f58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1760<tr class="memitem:a1cfaa710db2a54673b21d2ea2da757c8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a> { <br />
1761&#160;&#160;<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 0,
1762<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a> = 1,
1763<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054">Sqrt</a> = 2,
1764<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a> = 3,
1765<br />
1766&#160;&#160;<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a> = 4
1767<br />
1768 }</td></tr>
1769<tr class="separator:a1cfaa710db2a54673b21d2ea2da757c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1770<tr class="memitem:a961bbfe1db71a848eff5a1f0ab775718"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> { <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233">Max</a> = 0,
1771<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a> = 1,
1772<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a> = 2
1773 }</td></tr>
1774<tr class="separator:a961bbfe1db71a848eff5a1f0ab775718"><td class="memSeparator" colspan="2">&#160;</td></tr>
1775<tr class="memitem:a9a2af2f8c4af4f9efa8e79417d505ac4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> { <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a> = 0,
1776<a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a> = 1
1777 }</td></tr>
1778<tr class="separator:a9a2af2f8c4af4f9efa8e79417d505ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
1779<tr class="memitem:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a> { <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a> = 0,
1780<a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a> = 1
1781 }</td></tr>
1782<tr class="separator:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1783<tr class="memitem:abe18a5033f2ab9c0de82c676b48f5437"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> { <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a> = 0,
1784<a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a> = 1
1785 }</td></tr>
1786<tr class="separator:abe18a5033f2ab9c0de82c676b48f5437"><td class="memSeparator" colspan="2">&#160;</td></tr>
1787<tr class="memitem:ad605d1661fa0d8c7fea651d82fbe11c9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a> { <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a> = 0,
1788<a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a> = 1
1789 }</td></tr>
1790<tr class="separator:ad605d1661fa0d8c7fea651d82fbe11c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1791<tr class="memitem:adf2e5515c4c36a3e7e46bb8b83c6754e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> { <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a> = 0,
1792<a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a> = 1
1793 }</td></tr>
1794<tr class="separator:adf2e5515c4c36a3e7e46bb8b83c6754e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1795<tr class="memitem:a93a3ba385cad27c4774e5fe64c025d3d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> { <br />
1796&#160;&#160;<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>,
1797<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>,
1798<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>,
1799<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>,
1800<br />
1801&#160;&#160;<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,
1802<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>
1803<br />
1804 }</td></tr>
1805<tr class="separator:a93a3ba385cad27c4774e5fe64c025d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
1806<tr class="memitem:a34eaed09302a4d7bfe930c13a7673e0b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0b">GraphEvent</a> { <a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">LayerAdded</a>,
1807<a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">LayerErased</a>
1808 }</td></tr>
1809<tr class="separator:a34eaed09302a4d7bfe930c13a7673e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1810<tr class="memitem:a56943a0946e5f15e5e58054b8e7a04a4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> { <br />
1811&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,
1812<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36">Activation</a> = FirstLayer,
1813<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>,
1814<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c">ArgMinMax</a>,
1815<br />
1816&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>,
1817<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2">BatchToSpaceNd</a>,
1818<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>,
1819<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>,
1820<br />
1821&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>,
1822<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>,
1823<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>,
1824<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>,
1825<br />
1826&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba">Debug</a>,
1827<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d">DepthToSpace</a>,
1828<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>,
1829<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>,
1830<br />
1831&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a">DetectionPostProcess</a>,
1832<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>,
1833<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>,
1834<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48">FakeQuantization</a>,
1835<br />
1836&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3">Floor</a>,
1837<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">FullyConnected</a>,
1838<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53">Gather</a>,
1839<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>,
1840<br />
1841&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>,
1842<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>,
1843<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488">LogSoftmax</a>,
1844<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>,
1845<br />
1846&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>,
1847<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d">Mean</a>,
1848<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>,
1849<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>,
1850<br />
1851&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>,
1852<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>,
1853<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>,
1854<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>,
1855<br />
1856&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>,
1857<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">Pad</a>,
1858<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>,
1859<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">Pooling2d</a>,
1860<br />
1861&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>,
1862<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>,
1863<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>,
1864<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>,
1865<br />
1866&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>,
1867<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63">Resize</a>,
1868<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb">Slice</a>,
1869<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>,
1870<br />
1871&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279">SpaceToBatchNd</a>,
1872<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a">SpaceToDepth</a>,
1873<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf">Splitter</a>,
1874<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca">Stack</a>,
1875<br />
1876&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>,
1877<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d">StridedSlice</a>,
1878<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>,
1879<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>,
1880<br />
1881&#160;&#160;<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">LastLayer</a>,
1882<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a> = LastLayer
1883<br />
1884 }</td></tr>
1885<tr class="separator:a56943a0946e5f15e5e58054b8e7a04a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
1886<tr class="memitem:a4e2dd387ba6f0dc5164b4cdf8de3262a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262a">JsonObjectType</a> { <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>,
1887<a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a>
1888 }</td></tr>
1889<tr class="separator:a4e2dd387ba6f0dc5164b4cdf8de3262a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1890<tr class="memitem:a707090747256af276c389e0cf1cb0a9a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> { <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>,
1891<a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>,
1892<a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>,
1893<a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>
1894 }</td></tr>
1895<tr class="separator:a707090747256af276c389e0cf1cb0a9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1896</table><table class="memberdecls">
1897<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
1898Functions</h2></td></tr>
1899<tr class="memitem:a5974a183710829851dbd98a4a919cd50"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5974a183710829851dbd98a4a919cd50">GetILayerSupportByBackendId</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;backend)</td></tr>
1900<tr class="memdesc:a5974a183710829851dbd98a4a919cd50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience function to retrieve the <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> for a backend. <a href="#a5974a183710829851dbd98a4a919cd50">More...</a><br /></td></tr>
1901<tr class="separator:a5974a183710829851dbd98a4a919cd50"><td class="memSeparator" colspan="2">&#160;</td></tr>
1902<tr class="memitem:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a> (<a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> compute)</td></tr>
1903<tr class="separator:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1904<tr class="memitem:a5b0313cb554380d6e4dfb24c31f9e605"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5b0313cb554380d6e4dfb24c31f9e605">operator&lt;&lt;</a> (std::ostream &amp;os, const std::vector&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;compute)</td></tr>
1905<tr class="separator:a5b0313cb554380d6e4dfb24c31f9e605"><td class="memSeparator" colspan="2">&#160;</td></tr>
1906<tr class="memitem:a127a59fdf5e6d2fa74f87f9265de958b"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a127a59fdf5e6d2fa74f87f9265de958b">operator&lt;&lt;</a> (std::ostream &amp;os, const std::set&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;compute)</td></tr>
1907<tr class="separator:a127a59fdf5e6d2fa74f87f9265de958b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1908<tr class="memitem:a345acf4e0dc087eee3f9688029ee6328"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a345acf4e0dc087eee3f9688029ee6328">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &amp;compute)</td></tr>
1909<tr class="separator:a345acf4e0dc087eee3f9688029ee6328"><td class="memSeparator" colspan="2">&#160;</td></tr>
1910<tr class="memitem:afc46634e26857d037ee80bb5a74ef28a"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afc46634e26857d037ee80bb5a74ef28a">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;id)</td></tr>
1911<tr class="separator:afc46634e26857d037ee80bb5a74ef28a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1912<tr class="memitem:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; class TContainer, typename... TContainerTemplateArgs&gt; </td></tr>
1913<tr class="memitem:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a62a9e8c87b9b9f504726746ba4a000a6">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a>&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, TContainerTemplateArgs... &gt; &amp;ids)</td></tr>
1914<tr class="separator:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1915<tr class="memitem:ac2807505b850738bc8a1991ce669dd47"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_backend_registry.html">BackendRegistry</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a> ()</td></tr>
1916<tr class="separator:ac2807505b850738bc8a1991ce669dd47"><td class="memSeparator" colspan="2">&#160;</td></tr>
1917<tr class="memitem:a14de37f4c695ac066f999aa75b7cb136"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14de37f4c695ac066f999aa75b7cb136">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="structarmnn_1_1_backend_version.html">BackendVersion</a> &amp;backendVersion)</td></tr>
1918<tr class="separator:a14de37f4c695ac066f999aa75b7cb136"><td class="memSeparator" colspan="2">&#160;</td></tr>
1919<tr class="memitem:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
1920<tr class="memitem:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2fe587812a8dd3e7d7419cbb84a7f4ff">CreateMergerDescriptorForConcatenation</a> (TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</td></tr>
1921<tr class="separator:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
1922<tr class="memitem:a733ae6b70d0bfa43433c3e7606992328"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
1923<tr class="memitem:a733ae6b70d0bfa43433c3e7606992328"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a> (TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</td></tr>
1924<tr class="memdesc:a733ae6b70d0bfa43433c3e7606992328"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience template to create an <a class="el" href="structarmnn_1_1_origins_descriptor.html" title="An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...">OriginsDescriptor</a> to use when creating a <a class="el" href="classarmnn_1_1_concat_layer.html" title="This layer represents a merge operation. ">ConcatLayer</a> for performing concatenation of a number of input tensors. <a href="#a733ae6b70d0bfa43433c3e7606992328">More...</a><br /></td></tr>
1925<tr class="separator:a733ae6b70d0bfa43433c3e7606992328"><td class="memSeparator" colspan="2">&#160;</td></tr>
1926<tr class="memitem:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType &gt; </td></tr>
1927<tr class="memitem:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae4ab3bf0697ad13316a6bcba0a8fade5">ConditionalThrow</a> (bool condition, const std::string &amp;message)</td></tr>
1928<tr class="separator:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memSeparator" colspan="2">&#160;</td></tr>
1929<tr class="memitem:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType , typename ComparedType &gt; </td></tr>
1930<tr class="memitem:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae57b7f9e2cb7080bf10b28d1f72b558e">ConditionalThrowIfNotEqual</a> (const std::string &amp;message, const ComparedType &amp;leftHandSide, const ComparedType &amp;rightHandSide)</td></tr>
1931<tr class="separator:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1932<tr class="memitem:a82e98ef05fd67036d1195ba17174d685"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a82e98ef05fd67036d1195ba17174d685">Optimize</a> (const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> &amp;network, const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt; &amp;backendPreferences, const <a class="el" href="classarmnn_1_1_i_device_spec.html">IDeviceSpec</a> &amp;deviceSpec, const <a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a> &amp;<a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>=<a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a>(), <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; messages=<a class="el" href="structarmnn_1_1_empty_optional.html">EmptyOptional</a>())</td></tr>
1933<tr class="separator:a82e98ef05fd67036d1195ba17174d685"><td class="memSeparator" colspan="2">&#160;</td></tr>
1934<tr class="memitem:a58bfb9626d373249745d78b95543116e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a58bfb9626d373249745d78b95543116e">IsActivationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1935<tr class="memdesc:a58bfb9626d373249745d78b95543116e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a58bfb9626d373249745d78b95543116e">More...</a><br /></td></tr>
1936<tr class="separator:a58bfb9626d373249745d78b95543116e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1937<tr class="memitem:a1b01771dc5a057d09f8cd82492154a1f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b01771dc5a057d09f8cd82492154a1f">IsAdditionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1938<tr class="memdesc:a1b01771dc5a057d09f8cd82492154a1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a1b01771dc5a057d09f8cd82492154a1f">More...</a><br /></td></tr>
1939<tr class="separator:a1b01771dc5a057d09f8cd82492154a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1940<tr class="memitem:a7d18d6613bb865b66b05d4d6e0391934"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7d18d6613bb865b66b05d4d6e0391934">IsBatchNormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1941<tr class="memdesc:a7d18d6613bb865b66b05d4d6e0391934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a7d18d6613bb865b66b05d4d6e0391934">More...</a><br /></td></tr>
1942<tr class="separator:a7d18d6613bb865b66b05d4d6e0391934"><td class="memSeparator" colspan="2">&#160;</td></tr>
1943<tr class="memitem:a2399052d9cbb2b88720b07511a2e362f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2399052d9cbb2b88720b07511a2e362f">IsBatchToSpaceNdSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1944<tr class="memdesc:a2399052d9cbb2b88720b07511a2e362f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a2399052d9cbb2b88720b07511a2e362f">More...</a><br /></td></tr>
1945<tr class="separator:a2399052d9cbb2b88720b07511a2e362f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1946<tr class="memitem:a757df85e956e425c1a082d35a98ca4a9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a757df85e956e425c1a082d35a98ca4a9">IsConcatSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1947<tr class="memdesc:a757df85e956e425c1a082d35a98ca4a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a757df85e956e425c1a082d35a98ca4a9">More...</a><br /></td></tr>
1948<tr class="separator:a757df85e956e425c1a082d35a98ca4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1949<tr class="memitem:acc76cdec78906a3457a9c2293a453869"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc76cdec78906a3457a9c2293a453869">IsConstantSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1950<tr class="memdesc:acc76cdec78906a3457a9c2293a453869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#acc76cdec78906a3457a9c2293a453869">More...</a><br /></td></tr>
1951<tr class="separator:acc76cdec78906a3457a9c2293a453869"><td class="memSeparator" colspan="2">&#160;</td></tr>
1952<tr class="memitem:aaa152f86599af5189c9d637fe7ade6d0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaa152f86599af5189c9d637fe7ade6d0">IsConvertFp16ToFp32Supported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1953<tr class="memdesc:aaa152f86599af5189c9d637fe7ade6d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aaa152f86599af5189c9d637fe7ade6d0">More...</a><br /></td></tr>
1954<tr class="separator:aaa152f86599af5189c9d637fe7ade6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1955<tr class="memitem:a98994026cec1578ceb7aa74c834b00d9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a98994026cec1578ceb7aa74c834b00d9">IsConvertFp32ToFp16Supported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1956<tr class="memdesc:a98994026cec1578ceb7aa74c834b00d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a98994026cec1578ceb7aa74c834b00d9">More...</a><br /></td></tr>
1957<tr class="separator:a98994026cec1578ceb7aa74c834b00d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1958<tr class="memitem:af22d4421773ce95e0f2324fc1a66c0d9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af22d4421773ce95e0f2324fc1a66c0d9">IsConvolution2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1959<tr class="memdesc:af22d4421773ce95e0f2324fc1a66c0d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#af22d4421773ce95e0f2324fc1a66c0d9">More...</a><br /></td></tr>
1960<tr class="separator:af22d4421773ce95e0f2324fc1a66c0d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1961<tr class="memitem:a8b96de58aae24091d0ad761f27360630"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8b96de58aae24091d0ad761f27360630">IsDebugSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1962<tr class="memdesc:a8b96de58aae24091d0ad761f27360630"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a8b96de58aae24091d0ad761f27360630">More...</a><br /></td></tr>
1963<tr class="separator:a8b96de58aae24091d0ad761f27360630"><td class="memSeparator" colspan="2">&#160;</td></tr>
1964<tr class="memitem:a399d38872500c6ac84ae031673176ef3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a399d38872500c6ac84ae031673176ef3">IsDepthwiseConvolutionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1965<tr class="memdesc:a399d38872500c6ac84ae031673176ef3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a399d38872500c6ac84ae031673176ef3">More...</a><br /></td></tr>
1966<tr class="separator:a399d38872500c6ac84ae031673176ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
1967<tr class="memitem:ac92dceabfbc1e46fe74f699f733886a8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac92dceabfbc1e46fe74f699f733886a8">IsDequantizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1968<tr class="memdesc:ac92dceabfbc1e46fe74f699f733886a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#ac92dceabfbc1e46fe74f699f733886a8">More...</a><br /></td></tr>
1969<tr class="separator:ac92dceabfbc1e46fe74f699f733886a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1970<tr class="memitem:a29b4b6b364a31632597970d0bad3d78f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a29b4b6b364a31632597970d0bad3d78f">IsDivisionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1971<tr class="memdesc:a29b4b6b364a31632597970d0bad3d78f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a29b4b6b364a31632597970d0bad3d78f">More...</a><br /></td></tr>
1972<tr class="separator:a29b4b6b364a31632597970d0bad3d78f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1973<tr class="memitem:a0e3cdea6143299b258a9c34b596bad4d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0e3cdea6143299b258a9c34b596bad4d">IsEqualSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1974<tr class="memdesc:a0e3cdea6143299b258a9c34b596bad4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a0e3cdea6143299b258a9c34b596bad4d">More...</a><br /></td></tr>
1975<tr class="separator:a0e3cdea6143299b258a9c34b596bad4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
1976<tr class="memitem:afe39427f8974f064b838df5c7f0ebebc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afe39427f8974f064b838df5c7f0ebebc">IsFakeQuantizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html">FakeQuantizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1977<tr class="memdesc:afe39427f8974f064b838df5c7f0ebebc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#afe39427f8974f064b838df5c7f0ebebc">More...</a><br /></td></tr>
1978<tr class="separator:afe39427f8974f064b838df5c7f0ebebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
1979<tr class="memitem:a89e9c52419c572f05bf9737a7a60b267"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a89e9c52419c572f05bf9737a7a60b267">IsFloorSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1980<tr class="memdesc:a89e9c52419c572f05bf9737a7a60b267"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a89e9c52419c572f05bf9737a7a60b267">More...</a><br /></td></tr>
1981<tr class="separator:a89e9c52419c572f05bf9737a7a60b267"><td class="memSeparator" colspan="2">&#160;</td></tr>
1982<tr class="memitem:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa2f4e75d4a4f61b24de0dfe150952c80">IsFullyConnectedSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1983<tr class="memdesc:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aa2f4e75d4a4f61b24de0dfe150952c80">More...</a><br /></td></tr>
1984<tr class="separator:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
1985<tr class="memitem:adffa596b4bdecd54ca460853cd1439e2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adffa596b4bdecd54ca460853cd1439e2">IsGreaterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1986<tr class="memdesc:adffa596b4bdecd54ca460853cd1439e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#adffa596b4bdecd54ca460853cd1439e2">More...</a><br /></td></tr>
1987<tr class="separator:adffa596b4bdecd54ca460853cd1439e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
1988<tr class="memitem:a197a353aa963497d29a07796268ea5c1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a197a353aa963497d29a07796268ea5c1">IsInputSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1989<tr class="memdesc:a197a353aa963497d29a07796268ea5c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a197a353aa963497d29a07796268ea5c1">More...</a><br /></td></tr>
1990<tr class="separator:a197a353aa963497d29a07796268ea5c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
1991<tr class="memitem:a0906736b90464c0eb3ce5a87e05ebeee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0906736b90464c0eb3ce5a87e05ebeee">IsL2NormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1992<tr class="memdesc:a0906736b90464c0eb3ce5a87e05ebeee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a0906736b90464c0eb3ce5a87e05ebeee">More...</a><br /></td></tr>
1993<tr class="separator:a0906736b90464c0eb3ce5a87e05ebeee"><td class="memSeparator" colspan="2">&#160;</td></tr>
1994<tr class="memitem:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3e8b3af7771ffb37ede50aa2d9cc3af6">IsLstmSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
1995<tr class="memdesc:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a3e8b3af7771ffb37ede50aa2d9cc3af6">More...</a><br /></td></tr>
1996<tr class="separator:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1997<tr class="memitem:a3b85a270baf98ea6b040bd395c2d700a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3b85a270baf98ea6b040bd395c2d700a">IsMaximumSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnSupported=nullptr, size_t reasonIfUnSupportedMaxLength=0)</td></tr>
1998<tr class="memdesc:a3b85a270baf98ea6b040bd395c2d700a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a3b85a270baf98ea6b040bd395c2d700a">More...</a><br /></td></tr>
1999<tr class="separator:a3b85a270baf98ea6b040bd395c2d700a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2000<tr class="memitem:a0cdc60b4988b2193b97590e35f34a07e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0cdc60b4988b2193b97590e35f34a07e">IsMeanSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2001<tr class="memdesc:a0cdc60b4988b2193b97590e35f34a07e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a0cdc60b4988b2193b97590e35f34a07e">More...</a><br /></td></tr>
2002<tr class="separator:a0cdc60b4988b2193b97590e35f34a07e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2003<tr class="memitem:a87ac712443e46c0deb38ab0eaf637e70"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a87ac712443e46c0deb38ab0eaf637e70">IsMemCopySupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2004<tr class="memdesc:a87ac712443e46c0deb38ab0eaf637e70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a87ac712443e46c0deb38ab0eaf637e70">More...</a><br /></td></tr>
2005<tr class="separator:a87ac712443e46c0deb38ab0eaf637e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
2006<tr class="memitem:a7f518a73b9f7e41c5584c1f49bca8568"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7f518a73b9f7e41c5584c1f49bca8568">IsMergeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2007<tr class="memdesc:a7f518a73b9f7e41c5584c1f49bca8568"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a7f518a73b9f7e41c5584c1f49bca8568">More...</a><br /></td></tr>
2008<tr class="separator:a7f518a73b9f7e41c5584c1f49bca8568"><td class="memSeparator" colspan="2">&#160;</td></tr>
2009<tr class="memitem:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">IsMergerSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2010<tr class="memdesc:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">More...</a><br /></td></tr>
2011<tr class="separator:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2012<tr class="memitem:ab99d3d944b80f47bd1be70f63cc60abb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab99d3d944b80f47bd1be70f63cc60abb">IsMinimumSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2013<tr class="memdesc:ab99d3d944b80f47bd1be70f63cc60abb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#ab99d3d944b80f47bd1be70f63cc60abb">More...</a><br /></td></tr>
2014<tr class="separator:ab99d3d944b80f47bd1be70f63cc60abb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2015<tr class="memitem:a56ff60c2946bf0b7e772007acce0d7ec"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56ff60c2946bf0b7e772007acce0d7ec">IsMultiplicationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2016<tr class="memdesc:a56ff60c2946bf0b7e772007acce0d7ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a56ff60c2946bf0b7e772007acce0d7ec">More...</a><br /></td></tr>
2017<tr class="separator:a56ff60c2946bf0b7e772007acce0d7ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
2018<tr class="memitem:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a754b0ac19fd6341ce2b5f480c3b35e8e">IsNormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2019<tr class="memdesc:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a754b0ac19fd6341ce2b5f480c3b35e8e">More...</a><br /></td></tr>
2020<tr class="separator:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2021<tr class="memitem:a701cecec7714cf8bc9dca804f473610d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a701cecec7714cf8bc9dca804f473610d">IsOutputSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2022<tr class="memdesc:a701cecec7714cf8bc9dca804f473610d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a701cecec7714cf8bc9dca804f473610d">More...</a><br /></td></tr>
2023<tr class="separator:a701cecec7714cf8bc9dca804f473610d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2024<tr class="memitem:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a515e8a98d7ef9ecda64a2e1e5298461a">IsPadSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2025<tr class="memdesc:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a515e8a98d7ef9ecda64a2e1e5298461a">More...</a><br /></td></tr>
2026<tr class="separator:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2027<tr class="memitem:aa3a1bea3b3cd5611f13c06020dababc4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa3a1bea3b3cd5611f13c06020dababc4">IsPermuteSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2028<tr class="memdesc:aa3a1bea3b3cd5611f13c06020dababc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aa3a1bea3b3cd5611f13c06020dababc4">More...</a><br /></td></tr>
2029<tr class="separator:aa3a1bea3b3cd5611f13c06020dababc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2030<tr class="memitem:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3b4773564c3fd8c88e697ffe0afbe10d">IsPreCompiledSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2031<tr class="memdesc:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a3b4773564c3fd8c88e697ffe0afbe10d">More...</a><br /></td></tr>
2032<tr class="separator:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2033<tr class="memitem:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5a0c1871f7e4822adb8b15e8ae76bca0">IsPreluSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2034<tr class="memdesc:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a5a0c1871f7e4822adb8b15e8ae76bca0">More...</a><br /></td></tr>
2035<tr class="separator:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2036<tr class="memitem:aea548aa1485adbeeb3e393a13bb6bff8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aea548aa1485adbeeb3e393a13bb6bff8">IsPooling2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2037<tr class="memdesc:aea548aa1485adbeeb3e393a13bb6bff8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aea548aa1485adbeeb3e393a13bb6bff8">More...</a><br /></td></tr>
2038<tr class="separator:aea548aa1485adbeeb3e393a13bb6bff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2039<tr class="memitem:a4069381c4737d57fc7fd299a61ad9ca1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4069381c4737d57fc7fd299a61ad9ca1">IsQuantizedLstmSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousCellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousOutputIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2040<tr class="memdesc:a4069381c4737d57fc7fd299a61ad9ca1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a4069381c4737d57fc7fd299a61ad9ca1">More...</a><br /></td></tr>
2041<tr class="separator:a4069381c4737d57fc7fd299a61ad9ca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2042<tr class="memitem:af5014cbc003abcf201d4372b0012734c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af5014cbc003abcf201d4372b0012734c">IsReshapeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2043<tr class="memdesc:af5014cbc003abcf201d4372b0012734c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#af5014cbc003abcf201d4372b0012734c">More...</a><br /></td></tr>
2044<tr class="separator:af5014cbc003abcf201d4372b0012734c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2045<tr class="memitem:a936d3f949a334668f839fb0bdd170b72"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a936d3f949a334668f839fb0bdd170b72">IsResizeBilinearSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2046<tr class="memdesc:a936d3f949a334668f839fb0bdd170b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a936d3f949a334668f839fb0bdd170b72">More...</a><br /></td></tr>
2047<tr class="separator:a936d3f949a334668f839fb0bdd170b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
2048<tr class="memitem:a90a1aadb53c7537f225252afd681ff22"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2049<tr class="memdesc:a90a1aadb53c7537f225252afd681ff22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a90a1aadb53c7537f225252afd681ff22">More...</a><br /></td></tr>
2050<tr class="separator:a90a1aadb53c7537f225252afd681ff22"><td class="memSeparator" colspan="2">&#160;</td></tr>
2051<tr class="memitem:accc42ba9679a474e75b43cdf1efa9422"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#accc42ba9679a474e75b43cdf1efa9422">IsRsqrtSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2052<tr class="memdesc:accc42ba9679a474e75b43cdf1efa9422"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#accc42ba9679a474e75b43cdf1efa9422">More...</a><br /></td></tr>
2053<tr class="separator:accc42ba9679a474e75b43cdf1efa9422"><td class="memSeparator" colspan="2">&#160;</td></tr>
2054<tr class="memitem:a477695b3df8c0abd2efcf02051f61065"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a477695b3df8c0abd2efcf02051f61065">IsSoftmaxSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2055<tr class="memdesc:a477695b3df8c0abd2efcf02051f61065"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a477695b3df8c0abd2efcf02051f61065">More...</a><br /></td></tr>
2056<tr class="separator:a477695b3df8c0abd2efcf02051f61065"><td class="memSeparator" colspan="2">&#160;</td></tr>
2057<tr class="memitem:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4b3a41e24d4b9e2b4cb431dc90c48970">IsSpaceToBatchNdSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2058<tr class="memdesc:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a4b3a41e24d4b9e2b4cb431dc90c48970">More...</a><br /></td></tr>
2059<tr class="separator:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="memSeparator" colspan="2">&#160;</td></tr>
2060<tr class="memitem:addffaddb4bdb6ec506fe08debcce9b75"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#addffaddb4bdb6ec506fe08debcce9b75">IsSpaceToDepthSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2061<tr class="memdesc:addffaddb4bdb6ec506fe08debcce9b75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#addffaddb4bdb6ec506fe08debcce9b75">More...</a><br /></td></tr>
2062<tr class="separator:addffaddb4bdb6ec506fe08debcce9b75"><td class="memSeparator" colspan="2">&#160;</td></tr>
2063<tr class="memitem:a7ce5f7168bf0d1e7efe269d59ed564ba"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2064<tr class="separator:a7ce5f7168bf0d1e7efe269d59ed564ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
2065<tr class="memitem:a6487e532e0cb72a210096185e31e2bd6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6487e532e0cb72a210096185e31e2bd6">IsSplitterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;outputs, const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2066<tr class="memdesc:a6487e532e0cb72a210096185e31e2bd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a6487e532e0cb72a210096185e31e2bd6">More...</a><br /></td></tr>
2067<tr class="separator:a6487e532e0cb72a210096185e31e2bd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2068<tr class="memitem:a10e8442be2b8596afd5770e98b904caa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a10e8442be2b8596afd5770e98b904caa">IsStackSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2069<tr class="memdesc:a10e8442be2b8596afd5770e98b904caa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a10e8442be2b8596afd5770e98b904caa">More...</a><br /></td></tr>
2070<tr class="separator:a10e8442be2b8596afd5770e98b904caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2071<tr class="memitem:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aebe3dc6730e1b29aee9c9f33b8f94121">IsStridedSliceSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2072<tr class="memdesc:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#aebe3dc6730e1b29aee9c9f33b8f94121">More...</a><br /></td></tr>
2073<tr class="separator:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="memSeparator" colspan="2">&#160;</td></tr>
2074<tr class="memitem:afbf752a51fa513e0a54e343be130d962"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afbf752a51fa513e0a54e343be130d962">IsSubtractionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2075<tr class="memdesc:afbf752a51fa513e0a54e343be130d962"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#afbf752a51fa513e0a54e343be130d962">More...</a><br /></td></tr>
2076<tr class="separator:afbf752a51fa513e0a54e343be130d962"><td class="memSeparator" colspan="2">&#160;</td></tr>
2077<tr class="memitem:a85fcfea412723413a05f0743c84053aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a85fcfea412723413a05f0743c84053aa">IsSwitchSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output1, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2078<tr class="memdesc:a85fcfea412723413a05f0743c84053aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#a85fcfea412723413a05f0743c84053aa">More...</a><br /></td></tr>
2079<tr class="separator:a85fcfea412723413a05f0743c84053aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2080<tr class="memitem:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac6cc8e0bd35d229486fe6d844d88e0d4">IsTransposeConvolution2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2081<tr class="memdesc:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. <a href="#ac6cc8e0bd35d229486fe6d844d88e0d4">More...</a><br /></td></tr>
2082<tr class="separator:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2083<tr class="memitem:a71f2cc06b097cb5c4f0a1f48130a823b"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a71f2cc06b097cb5c4f0a1f48130a823b">LevelToString</a> (<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> level)</td></tr>
2084<tr class="separator:a71f2cc06b097cb5c4f0a1f48130a823b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2085<tr class="memitem:ac9aad76a34137b6359a867b282ea7cfb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac9aad76a34137b6359a867b282ea7cfb">SetLogFilter</a> (<a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> level)</td></tr>
2086<tr class="separator:ac9aad76a34137b6359a867b282ea7cfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2087<tr class="memitem:a7f8325a4bc02f2f687ba1968b595ec0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7f8325a4bc02f2f687ba1968b595ec0a">SetAllLoggingSinks</a> (bool standardOut, bool debugOut, bool coloured)</td></tr>
2088<tr class="separator:a7f8325a4bc02f2f687ba1968b595ec0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2089<tr class="memitem:a9cdee30c21f3dd630b4e460527105b74"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cdee30c21f3dd630b4e460527105b74">ConvertLogSeverity</a> (<a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a> severity)</td></tr>
2090<tr class="separator:a9cdee30c21f3dd630b4e460527105b74"><td class="memSeparator" colspan="2">&#160;</td></tr>
2091<tr class="memitem:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memTemplParams" colspan="2">template&lt;typename Arg , typename std::enable_if&lt; IsMemorySource&lt; Arg &gt;::value &gt;::type * = nullptr&gt; </td></tr>
2092<tr class="memitem:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5d94c2125c725df5b619d16db9d4a8e9">Combine</a> (Arg sourceA, Arg sourceB)</td></tr>
2093<tr class="separator:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2094<tr class="memitem:ae91e1849e95350c8e50912a217999eac"><td class="memTemplParams" colspan="2">template&lt;typename Arg , typename ... Args, typename std::enable_if&lt; IsMemorySource&lt; Arg &gt;::value &gt;::type * = nullptr&gt; </td></tr>
2095<tr class="memitem:ae91e1849e95350c8e50912a217999eac"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae91e1849e95350c8e50912a217999eac">Combine</a> (Arg source, Args... rest)</td></tr>
2096<tr class="separator:ae91e1849e95350c8e50912a217999eac"><td class="memSeparator" colspan="2">&#160;</td></tr>
2097<tr class="memitem:a84f86b4de5adf0b164e811c87051a0ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a84f86b4de5adf0b164e811c87051a0ee">CheckFlag</a> (<a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> flags, <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a> source)</td></tr>
2098<tr class="separator:a84f86b4de5adf0b164e811c87051a0ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
2099<tr class="memitem:a77780137c47f528921f6537447060f05"><td class="memTemplParams" colspan="2">template&lt;typename T , class... Args&gt; </td></tr>
2100<tr class="memitem:a77780137c47f528921f6537447060f05"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a77780137c47f528921f6537447060f05">MakeOptional</a> (Args &amp;&amp;... args)</td></tr>
2101<tr class="separator:a77780137c47f528921f6537447060f05"><td class="memSeparator" colspan="2">&#160;</td></tr>
2102<tr class="memitem:a19a90c41ca2f46ab29918fef1a6ad72e"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a19a90c41ca2f46ab29918fef1a6ad72e">GetStatusAsCString</a> (<a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> status)</td></tr>
2103<tr class="separator:a19a90c41ca2f46ab29918fef1a6ad72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2104<tr class="memitem:aa093207ea7c4e7a9c9abe40d2f57995b"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa093207ea7c4e7a9c9abe40d2f57995b">GetActivationFunctionAsCString</a> (<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> activation)</td></tr>
2105<tr class="separator:aa093207ea7c4e7a9c9abe40d2f57995b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2106<tr class="memitem:a5cda3502382f06a64c3cbeb1829bd850"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5cda3502382f06a64c3cbeb1829bd850">GetArgMinMaxFunctionAsCString</a> (<a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> function)</td></tr>
2107<tr class="separator:a5cda3502382f06a64c3cbeb1829bd850"><td class="memSeparator" colspan="2">&#160;</td></tr>
2108<tr class="memitem:aabb76a77e95921785f576bb29b495cd8"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aabb76a77e95921785f576bb29b495cd8">GetComparisonOperationAsCString</a> (<a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> operation)</td></tr>
2109<tr class="separator:aabb76a77e95921785f576bb29b495cd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2110<tr class="memitem:a6dac966f265381903c8ef4f392becced"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6dac966f265381903c8ef4f392becced">GetUnaryOperationAsCString</a> (<a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a> operation)</td></tr>
2111<tr class="separator:a6dac966f265381903c8ef4f392becced"><td class="memSeparator" colspan="2">&#160;</td></tr>
2112<tr class="memitem:a517314c21ac5309b90408da162212f9d"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a517314c21ac5309b90408da162212f9d">GetPoolingAlgorithmAsCString</a> (<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> pooling)</td></tr>
2113<tr class="separator:a517314c21ac5309b90408da162212f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2114<tr class="memitem:a67d7ce2e14ebd328f423322db88279c3"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a67d7ce2e14ebd328f423322db88279c3">GetOutputShapeRoundingAsCString</a> (<a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> rounding)</td></tr>
2115<tr class="separator:a67d7ce2e14ebd328f423322db88279c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2116<tr class="memitem:a129bde68152f5892e6abdedcb62aa983"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a129bde68152f5892e6abdedcb62aa983">GetPaddingMethodAsCString</a> (<a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a> method)</td></tr>
2117<tr class="separator:a129bde68152f5892e6abdedcb62aa983"><td class="memSeparator" colspan="2">&#160;</td></tr>
2118<tr class="memitem:aa02b9e06fb20fa3c13da0427e6ee5ab2"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2119<tr class="separator:aa02b9e06fb20fa3c13da0427e6ee5ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
2120<tr class="memitem:a637fea04314a9870c1dc4355c1bed429"><td class="memTemplParams" colspan="2">template&lt;unsigned N&gt; </td></tr>
2121<tr class="memitem:a637fea04314a9870c1dc4355c1bed429"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">StrEqual</a> (const char *strA, const char(&amp;strB)[N])</td></tr>
2122<tr class="separator:a637fea04314a9870c1dc4355c1bed429"><td class="memSeparator" colspan="2">&#160;</td></tr>
2123<tr class="memitem:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">ParseComputeDevice</a> (const char *str)</td></tr>
2124<tr class="separator:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2125<tr class="memitem:a81b5ff8545adad19a1c9d4ca076d552c"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2126<tr class="separator:a81b5ff8545adad19a1c9d4ca076d552c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2127<tr class="memitem:aeef70b7611ae71e97ab55c75ef72b210"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aeef70b7611ae71e97ab55c75ef72b210">GetDataLayoutName</a> (<a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
2128<tr class="separator:aeef70b7611ae71e97ab55c75ef72b210"><td class="memSeparator" colspan="2">&#160;</td></tr>
2129<tr class="memitem:aeadd602e128a2be97161345b48533417"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aeadd602e128a2be97161345b48533417">GetNormalizationAlgorithmChannelAsCString</a> (<a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> channel)</td></tr>
2130<tr class="separator:aeadd602e128a2be97161345b48533417"><td class="memSeparator" colspan="2">&#160;</td></tr>
2131<tr class="memitem:ad57460ea53cd0b519a3b3547eaf1db7c"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad57460ea53cd0b519a3b3547eaf1db7c">GetNormalizationAlgorithmMethodAsCString</a> (<a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a> method)</td></tr>
2132<tr class="separator:ad57460ea53cd0b519a3b3547eaf1db7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2133<tr class="memitem:aded981a42027bd3302b9c0f09d988659"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aded981a42027bd3302b9c0f09d988659">GetResizeMethodAsCString</a> (<a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> method)</td></tr>
2134<tr class="separator:aded981a42027bd3302b9c0f09d988659"><td class="memSeparator" colspan="2">&#160;</td></tr>
2135<tr class="memitem:ad44c007f21af2d0375e3ef9400a1b275"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2136<tr class="memitem:ad44c007f21af2d0375e3ef9400a1b275"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad44c007f21af2d0375e3ef9400a1b275">IsQuantizedType</a> ()</td></tr>
2137<tr class="separator:ad44c007f21af2d0375e3ef9400a1b275"><td class="memSeparator" colspan="2">&#160;</td></tr>
2138<tr class="memitem:ad91bc7bfe29186f5d78c28386c6c5309"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad91bc7bfe29186f5d78c28386c6c5309">IsQuantized8BitType</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2139<tr class="separator:ad91bc7bfe29186f5d78c28386c6c5309"><td class="memSeparator" colspan="2">&#160;</td></tr>
2140<tr class="memitem:aa172264d7075abf828e0b6894996a561"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa172264d7075abf828e0b6894996a561">IsQuantizedType</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2141<tr class="separator:aa172264d7075abf828e0b6894996a561"><td class="memSeparator" colspan="2">&#160;</td></tr>
2142<tr class="memitem:aaa5b68f3f5bb73b1d3c85d895547a372"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaa5b68f3f5bb73b1d3c85d895547a372">operator&lt;&lt;</a> (std::ostream &amp;os, <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> stat)</td></tr>
2143<tr class="separator:aaa5b68f3f5bb73b1d3c85d895547a372"><td class="memSeparator" colspan="2">&#160;</td></tr>
2144<tr class="memitem:aa6d7532e14af97577c054f96d0cf23b3"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa6d7532e14af97577c054f96d0cf23b3">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;shape)</td></tr>
2145<tr class="separator:aa6d7532e14af97577c054f96d0cf23b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2146<tr class="memitem:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
2147<tr class="memitem:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memTemplItemLeft" align="right" valign="top">QuantizedType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">Quantize</a> (float value, float scale, int32_t offset)</td></tr>
2148<tr class="memdesc:ad773a034fb9983e15f3094b4c5c7c30c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicit specialization of Quantize for int8_t. <a href="#ad773a034fb9983e15f3094b4c5c7c30c">More...</a><br /></td></tr>
2149<tr class="separator:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2150<tr class="memitem:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
2151<tr class="memitem:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memTemplItemLeft" align="right" valign="top">float&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">Dequantize</a> (QuantizedType value, float scale, int32_t offset)</td></tr>
2152<tr class="separator:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2153<tr class="memitem:a9667bea652e3a5ef81fea59b71513ced"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9667bea652e3a5ef81fea59b71513ced">VerifyTensorInfoDataType</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;info, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> dataType)</td></tr>
2154<tr class="separator:a9667bea652e3a5ef81fea59b71513ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
2155<tr class="memitem:aa59f7a819c3e29d10ffc41e5c0616872"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa59f7a819c3e29d10ffc41e5c0616872">ConfigureLogging</a> (bool printToStandardOutput, bool printToDebugOutput, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> severity)</td></tr>
2156<tr class="separator:aa59f7a819c3e29d10ffc41e5c0616872"><td class="memSeparator" colspan="2">&#160;</td></tr>
2157<tr class="memitem:a238a74871f634b778176e5dc8391888a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2158<tr class="memitem:a238a74871f634b778176e5dc8391888a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">CompatibleTypes</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>)</td></tr>
2159<tr class="separator:a238a74871f634b778176e5dc8391888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2160<tr class="memitem:a7296af8a86f22ef7f144dc02c4c94324"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2161<tr class="memitem:a7296af8a86f22ef7f144dc02c4c94324"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7296af8a86f22ef7f144dc02c4c94324">CompatibleTypes&lt; float &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2162<tr class="separator:a7296af8a86f22ef7f144dc02c4c94324"><td class="memSeparator" colspan="2">&#160;</td></tr>
2163<tr class="memitem:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2164<tr class="memitem:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7b224e4c135fa1fdb3e54dfe945e07f8">CompatibleTypes&lt; Half &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2165<tr class="separator:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2166<tr class="memitem:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2167<tr class="memitem:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad23bcbfd1876f1ae11c926d0e3e8c3e5">CompatibleTypes&lt; uint8_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2168<tr class="separator:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2169<tr class="memitem:a2bcd446605a7ee354be1038983358e04"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2170<tr class="memitem:a2bcd446605a7ee354be1038983358e04"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2bcd446605a7ee354be1038983358e04">CompatibleTypes&lt; int8_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2171<tr class="separator:a2bcd446605a7ee354be1038983358e04"><td class="memSeparator" colspan="2">&#160;</td></tr>
2172<tr class="memitem:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2173<tr class="memitem:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a0a86fe227d22c1cf7381798ad8550f">CompatibleTypes&lt; int16_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2174<tr class="separator:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2175<tr class="memitem:a000bb59f20fa937e2acff1c2aaba7944"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2176<tr class="memitem:a000bb59f20fa937e2acff1c2aaba7944"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a000bb59f20fa937e2acff1c2aaba7944">CompatibleTypes&lt; int32_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2177<tr class="separator:a000bb59f20fa937e2acff1c2aaba7944"><td class="memSeparator" colspan="2">&#160;</td></tr>
2178<tr class="memitem:a14d7f180bf51e86850305965c3707e07"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14d7f180bf51e86850305965c3707e07">swap</a> (<a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;first, <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;second)</td></tr>
2179<tr class="separator:a14d7f180bf51e86850305965c3707e07"><td class="memSeparator" colspan="2">&#160;</td></tr>
2180<tr class="memitem:a686b8288a04b3ffff67d560eea53f6be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a> (<a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;first, <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;second)</td></tr>
2181<tr class="separator:a686b8288a04b3ffff67d560eea53f6be"><td class="memSeparator" colspan="2">&#160;</td></tr>
2182<tr class="memitem:a9da573d7a1fc03726fd41f2130cbcf92"><td class="memItemLeft" align="right" valign="top">char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a> (<a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> type)</td></tr>
2183<tr class="separator:a9da573d7a1fc03726fd41f2130cbcf92"><td class="memSeparator" colspan="2">&#160;</td></tr>
2184<tr class="memitem:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2185<tr class="memitem:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac4fb1513cf6f4f3f40ab3d6559ec4067">LayerEnumOf</a> (const T *=nullptr)</td></tr>
2186<tr class="separator:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memSeparator" colspan="2">&#160;</td></tr>
2187<tr class="memitem:afb1e69829289fb07cc349c0884f27abd"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2188<tr class="memitem:afb1e69829289fb07cc349c0884f27abd"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afb1e69829289fb07cc349c0884f27abd">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_activation_layer.html">ActivationLayer</a> *)</td></tr>
2189<tr class="separator:afb1e69829289fb07cc349c0884f27abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2190<tr class="memitem:acc630e11a5baa28ad5723568a7a60109"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2191<tr class="memitem:acc630e11a5baa28ad5723568a7a60109"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc630e11a5baa28ad5723568a7a60109">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_addition_layer.html">AdditionLayer</a> *)</td></tr>
2192<tr class="separator:acc630e11a5baa28ad5723568a7a60109"><td class="memSeparator" colspan="2">&#160;</td></tr>
2193<tr class="memitem:a324e860c347972fce7a1c07531bed06e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2194<tr class="memitem:a324e860c347972fce7a1c07531bed06e"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a324e860c347972fce7a1c07531bed06e">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_arg_min_max_layer.html">ArgMinMaxLayer</a> *)</td></tr>
2195<tr class="separator:a324e860c347972fce7a1c07531bed06e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2196<tr class="memitem:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2197<tr class="memitem:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae22db3ab5196edbb2e4e5244adc512e3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_batch_normalization_layer.html">BatchNormalizationLayer</a> *)</td></tr>
2198<tr class="separator:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2199<tr class="memitem:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2200<tr class="memitem:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a87ffe3fb58ec36989d343e53e23fb0f8">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html">BatchToSpaceNdLayer</a> *)</td></tr>
2201<tr class="separator:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2202<tr class="memitem:a43b8024cb70c07116be132ca28b12a21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2203<tr class="memitem:a43b8024cb70c07116be132ca28b12a21"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a43b8024cb70c07116be132ca28b12a21">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_comparison_layer.html">ComparisonLayer</a> *)</td></tr>
2204<tr class="separator:a43b8024cb70c07116be132ca28b12a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
2205<tr class="memitem:a300c356944bb1e9d2dff6191d1c3501c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2206<tr class="memitem:a300c356944bb1e9d2dff6191d1c3501c"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a300c356944bb1e9d2dff6191d1c3501c">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_concat_layer.html">ConcatLayer</a> *)</td></tr>
2207<tr class="separator:a300c356944bb1e9d2dff6191d1c3501c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2208<tr class="memitem:a307007c2249288fe158bfdfaf9e1c413"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2209<tr class="memitem:a307007c2249288fe158bfdfaf9e1c413"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a307007c2249288fe158bfdfaf9e1c413">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_constant_layer.html">ConstantLayer</a> *)</td></tr>
2210<tr class="separator:a307007c2249288fe158bfdfaf9e1c413"><td class="memSeparator" colspan="2">&#160;</td></tr>
2211<tr class="memitem:a4471d39d8390fc550c1f8688639e66f5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2212<tr class="memitem:a4471d39d8390fc550c1f8688639e66f5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4471d39d8390fc550c1f8688639e66f5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> *)</td></tr>
2213<tr class="separator:a4471d39d8390fc550c1f8688639e66f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2214<tr class="memitem:af8df06bed5f1257864645e45948afa5c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2215<tr class="memitem:af8df06bed5f1257864645e45948afa5c"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af8df06bed5f1257864645e45948afa5c">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> *)</td></tr>
2216<tr class="separator:af8df06bed5f1257864645e45948afa5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2217<tr class="memitem:ab2f52d0c728933e36f581a07676d9fe9"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2218<tr class="memitem:ab2f52d0c728933e36f581a07676d9fe9"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab2f52d0c728933e36f581a07676d9fe9">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convolution2d_layer.html">Convolution2dLayer</a> *)</td></tr>
2219<tr class="separator:ab2f52d0c728933e36f581a07676d9fe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2220<tr class="memitem:ad596268fcd03c87a4b6fde86f4732546"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2221<tr class="memitem:ad596268fcd03c87a4b6fde86f4732546"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad596268fcd03c87a4b6fde86f4732546">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> *)</td></tr>
2222<tr class="separator:ad596268fcd03c87a4b6fde86f4732546"><td class="memSeparator" colspan="2">&#160;</td></tr>
2223<tr class="memitem:a939154289f544a02baec0735b27b8894"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2224<tr class="memitem:a939154289f544a02baec0735b27b8894"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a939154289f544a02baec0735b27b8894">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_depth_to_space_layer.html">DepthToSpaceLayer</a> *)</td></tr>
2225<tr class="separator:a939154289f544a02baec0735b27b8894"><td class="memSeparator" colspan="2">&#160;</td></tr>
2226<tr class="memitem:a26a46c27bca08b5bd26abba341f1d795"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2227<tr class="memitem:a26a46c27bca08b5bd26abba341f1d795"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a26a46c27bca08b5bd26abba341f1d795">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html">DepthwiseConvolution2dLayer</a> *)</td></tr>
2228<tr class="separator:a26a46c27bca08b5bd26abba341f1d795"><td class="memSeparator" colspan="2">&#160;</td></tr>
2229<tr class="memitem:a95e2d190d7483017b4f4841dd07776e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2230<tr class="memitem:a95e2d190d7483017b4f4841dd07776e5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a95e2d190d7483017b4f4841dd07776e5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_dequantize_layer.html">DequantizeLayer</a> *)</td></tr>
2231<tr class="separator:a95e2d190d7483017b4f4841dd07776e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2232<tr class="memitem:a22772d461066f995cd72d13066b0f46d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2233<tr class="memitem:a22772d461066f995cd72d13066b0f46d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a22772d461066f995cd72d13066b0f46d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_detection_post_process_layer.html">DetectionPostProcessLayer</a> *)</td></tr>
2234<tr class="separator:a22772d461066f995cd72d13066b0f46d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2235<tr class="memitem:a955b1001b8c57c60ce443a1e31468f20"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2236<tr class="memitem:a955b1001b8c57c60ce443a1e31468f20"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a955b1001b8c57c60ce443a1e31468f20">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_division_layer.html">DivisionLayer</a> *)</td></tr>
2237<tr class="separator:a955b1001b8c57c60ce443a1e31468f20"><td class="memSeparator" colspan="2">&#160;</td></tr>
2238<tr class="memitem:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2239<tr class="memitem:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a72f7601d11f32c8d9ccb49a80fcf662a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_elementwise_unary_layer.html">ElementwiseUnaryLayer</a> *)</td></tr>
2240<tr class="separator:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2241<tr class="memitem:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2242<tr class="memitem:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4acae0cdcdfab8e941af5c4e42e58cb3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_fake_quantization_layer.html">FakeQuantizationLayer</a> *)</td></tr>
2243<tr class="separator:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2244<tr class="memitem:a575f5487e62465b6b9edbc447a26f32f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2245<tr class="memitem:a575f5487e62465b6b9edbc447a26f32f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a575f5487e62465b6b9edbc447a26f32f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_floor_layer.html">FloorLayer</a> *)</td></tr>
2246<tr class="separator:a575f5487e62465b6b9edbc447a26f32f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2247<tr class="memitem:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2248<tr class="memitem:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa689e4a3aa77e9d9e5851f566c5eb8b3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_fully_connected_layer.html">FullyConnectedLayer</a> *)</td></tr>
2249<tr class="separator:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2250<tr class="memitem:a548fb17a9bff172e751ae4bd3add62b5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2251<tr class="memitem:a548fb17a9bff172e751ae4bd3add62b5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a548fb17a9bff172e751ae4bd3add62b5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_gather_layer.html">GatherLayer</a> *)</td></tr>
2252<tr class="separator:a548fb17a9bff172e751ae4bd3add62b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2253<tr class="memitem:adef1c8c63daa9d348a29e74eac33a054"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2254<tr class="memitem:adef1c8c63daa9d348a29e74eac33a054"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adef1c8c63daa9d348a29e74eac33a054">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_input_layer.html">InputLayer</a> *)</td></tr>
2255<tr class="separator:adef1c8c63daa9d348a29e74eac33a054"><td class="memSeparator" colspan="2">&#160;</td></tr>
2256<tr class="memitem:a57bcf309be7adcc91001834979f87bde"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2257<tr class="memitem:a57bcf309be7adcc91001834979f87bde"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a57bcf309be7adcc91001834979f87bde">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_instance_normalization_layer.html">InstanceNormalizationLayer</a> *)</td></tr>
2258<tr class="separator:a57bcf309be7adcc91001834979f87bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
2259<tr class="memitem:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2260<tr class="memitem:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a36f16b97bcb662caaa4eae24ea16cccf">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_l2_normalization_layer.html">L2NormalizationLayer</a> *)</td></tr>
2261<tr class="separator:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2262<tr class="memitem:afb6f9bd4f43118749a0336074bed7b35"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2263<tr class="memitem:afb6f9bd4f43118749a0336074bed7b35"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afb6f9bd4f43118749a0336074bed7b35">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_log_softmax_layer.html">LogSoftmaxLayer</a> *)</td></tr>
2264<tr class="separator:afb6f9bd4f43118749a0336074bed7b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
2265<tr class="memitem:a0d08fb555c6d1cba705fd73b71797a28"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2266<tr class="memitem:a0d08fb555c6d1cba705fd73b71797a28"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0d08fb555c6d1cba705fd73b71797a28">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_lstm_layer.html">LstmLayer</a> *)</td></tr>
2267<tr class="separator:a0d08fb555c6d1cba705fd73b71797a28"><td class="memSeparator" colspan="2">&#160;</td></tr>
2268<tr class="memitem:a6b231c8a547d4030d9a4a1618810c20b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2269<tr class="memitem:a6b231c8a547d4030d9a4a1618810c20b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6b231c8a547d4030d9a4a1618810c20b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_maximum_layer.html">MaximumLayer</a> *)</td></tr>
2270<tr class="separator:a6b231c8a547d4030d9a4a1618810c20b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2271<tr class="memitem:af079ba32db74f53aba1ad19193cd2a4b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2272<tr class="memitem:af079ba32db74f53aba1ad19193cd2a4b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af079ba32db74f53aba1ad19193cd2a4b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mean_layer.html">MeanLayer</a> *)</td></tr>
2273<tr class="separator:af079ba32db74f53aba1ad19193cd2a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2274<tr class="memitem:aa17969606f64ea581c28431f2395e653"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2275<tr class="memitem:aa17969606f64ea581c28431f2395e653"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa17969606f64ea581c28431f2395e653">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mem_copy_layer.html">MemCopyLayer</a> *)</td></tr>
2276<tr class="separator:aa17969606f64ea581c28431f2395e653"><td class="memSeparator" colspan="2">&#160;</td></tr>
2277<tr class="memitem:a70f3d83f6d1e3918eab895c8083058fa"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2278<tr class="memitem:a70f3d83f6d1e3918eab895c8083058fa"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a70f3d83f6d1e3918eab895c8083058fa">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mem_import_layer.html">MemImportLayer</a> *)</td></tr>
2279<tr class="separator:a70f3d83f6d1e3918eab895c8083058fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2280<tr class="memitem:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2281<tr class="memitem:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9e8199bdc39f928f694591a41d7aa0c0">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_merge_layer.html">MergeLayer</a> *)</td></tr>
2282<tr class="separator:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2283<tr class="memitem:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2284<tr class="memitem:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad32a13408ace1c1fa520ed64a2cbe70f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_minimum_layer.html">MinimumLayer</a> *)</td></tr>
2285<tr class="separator:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2286<tr class="memitem:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2287<tr class="memitem:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a40f1546c0fa69f318eeab4b29cc64b70">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_multiplication_layer.html">MultiplicationLayer</a> *)</td></tr>
2288<tr class="separator:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
2289<tr class="memitem:a140713619ee498a149854a5376b8d072"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2290<tr class="memitem:a140713619ee498a149854a5376b8d072"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a140713619ee498a149854a5376b8d072">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_normalization_layer.html">NormalizationLayer</a> *)</td></tr>
2291<tr class="separator:a140713619ee498a149854a5376b8d072"><td class="memSeparator" colspan="2">&#160;</td></tr>
2292<tr class="memitem:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2293<tr class="memitem:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7a6e68f66d1d3819640b0f2d46a55fd1">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_output_layer.html">OutputLayer</a> *)</td></tr>
2294<tr class="separator:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2295<tr class="memitem:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2296<tr class="memitem:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab6f1994db909dcc399cb1f8bc50c2d3d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pad_layer.html">PadLayer</a> *)</td></tr>
2297<tr class="separator:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2298<tr class="memitem:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2299<tr class="memitem:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1e6b17606926b8f69dbeda7f7ff1df95">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_permute_layer.html">PermuteLayer</a> *)</td></tr>
2300<tr class="separator:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memSeparator" colspan="2">&#160;</td></tr>
2301<tr class="memitem:ade84059b48b38da3a233bed287864c5b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2302<tr class="memitem:ade84059b48b38da3a233bed287864c5b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ade84059b48b38da3a233bed287864c5b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pooling2d_layer.html">Pooling2dLayer</a> *)</td></tr>
2303<tr class="separator:ade84059b48b38da3a233bed287864c5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2304<tr class="memitem:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2305<tr class="memitem:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e5eaa19ff232f11daa9a1c6caccf7fe">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a> *)</td></tr>
2306<tr class="separator:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
2307<tr class="memitem:a58a5defa35b12773a97760efadffef4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2308<tr class="memitem:a58a5defa35b12773a97760efadffef4f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a58a5defa35b12773a97760efadffef4f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_prelu_layer.html">PreluLayer</a> *)</td></tr>
2309<tr class="separator:a58a5defa35b12773a97760efadffef4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2310<tr class="memitem:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2311<tr class="memitem:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaaaf64c0888ab25bfae770bd4c2ec34b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_quantize_layer.html">QuantizeLayer</a> *)</td></tr>
2312<tr class="separator:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2313<tr class="memitem:a31bcd6f755df954a4d7b020a09499105"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2314<tr class="memitem:a31bcd6f755df954a4d7b020a09499105"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a31bcd6f755df954a4d7b020a09499105">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_quantized_lstm_layer.html">QuantizedLstmLayer</a> *)</td></tr>
2315<tr class="separator:a31bcd6f755df954a4d7b020a09499105"><td class="memSeparator" colspan="2">&#160;</td></tr>
2316<tr class="memitem:a6a17f58da2071720e3003a56a092aab3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2317<tr class="memitem:a6a17f58da2071720e3003a56a092aab3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a17f58da2071720e3003a56a092aab3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_reshape_layer.html">ReshapeLayer</a> *)</td></tr>
2318<tr class="separator:a6a17f58da2071720e3003a56a092aab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2319<tr class="memitem:aafc370ea363f0565c3a8bced1e37c79e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2320<tr class="memitem:aafc370ea363f0565c3a8bced1e37c79e"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aafc370ea363f0565c3a8bced1e37c79e">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_resize_layer.html">ResizeLayer</a> *)</td></tr>
2321<tr class="separator:aafc370ea363f0565c3a8bced1e37c79e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2322<tr class="memitem:a3cbbb4e00618b072ace46751e660a295"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2323<tr class="memitem:a3cbbb4e00618b072ace46751e660a295"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3cbbb4e00618b072ace46751e660a295">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a> *)</td></tr>
2324<tr class="separator:a3cbbb4e00618b072ace46751e660a295"><td class="memSeparator" colspan="2">&#160;</td></tr>
2325<tr class="memitem:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2326<tr class="memitem:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af6af4b51e08d3e811620811ab5e0cd2d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_softmax_layer.html">SoftmaxLayer</a> *)</td></tr>
2327<tr class="separator:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2328<tr class="memitem:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2329<tr class="memitem:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac2d31ced5505a9d05287f5b71d25e34a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html">SpaceToBatchNdLayer</a> *)</td></tr>
2330<tr class="separator:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2331<tr class="memitem:a81c31de4f532a95ab85ed6d999029332"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2332<tr class="memitem:a81c31de4f532a95ab85ed6d999029332"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a81c31de4f532a95ab85ed6d999029332">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_space_to_depth_layer.html">SpaceToDepthLayer</a> *)</td></tr>
2333<tr class="separator:a81c31de4f532a95ab85ed6d999029332"><td class="memSeparator" colspan="2">&#160;</td></tr>
2334<tr class="memitem:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2335<tr class="memitem:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a24d3abbfc1ed81df673452c7148aa0cc">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_splitter_layer.html">SplitterLayer</a> *)</td></tr>
2336<tr class="separator:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2337<tr class="memitem:ab676aab9119d1417764849099a099ecf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2338<tr class="memitem:ab676aab9119d1417764849099a099ecf"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab676aab9119d1417764849099a099ecf">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_stack_layer.html">StackLayer</a> *)</td></tr>
2339<tr class="separator:ab676aab9119d1417764849099a099ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2340<tr class="memitem:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2341<tr class="memitem:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b5ff142f1d4420a8d83d9bcff1bfff4">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_stand_in_layer.html">StandInLayer</a> *)</td></tr>
2342<tr class="separator:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2343<tr class="memitem:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2344<tr class="memitem:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad640080ff4ea3e4f9ff05823e32ce15f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_strided_slice_layer.html">StridedSliceLayer</a> *)</td></tr>
2345<tr class="separator:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2346<tr class="memitem:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2347<tr class="memitem:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cc235c8c5e2ef3d2788cd558d676b0a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_subtraction_layer.html">SubtractionLayer</a> *)</td></tr>
2348<tr class="separator:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2349<tr class="memitem:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2350<tr class="memitem:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a110b9fdf7f17a1d065cd59ebc4bb76f7">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_switch_layer.html">SwitchLayer</a> *)</td></tr>
2351<tr class="separator:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2352<tr class="memitem:a60af5a86cf0261d0bdf4312736ab4461"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2353<tr class="memitem:a60af5a86cf0261d0bdf4312736ab4461"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a60af5a86cf0261d0bdf4312736ab4461">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html">TransposeConvolution2dLayer</a> *)</td></tr>
2354<tr class="separator:a60af5a86cf0261d0bdf4312736ab4461"><td class="memSeparator" colspan="2">&#160;</td></tr>
2355<tr class="memitem:ac7cce6c8c3c53b2feeba6548fc3fb00c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac7cce6c8c3c53b2feeba6548fc3fb00c">CheckTensorDataTypesEqual</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1)</td></tr>
2356<tr class="separator:ac7cce6c8c3c53b2feeba6548fc3fb00c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2357<tr class="memitem:aa8d5d17d1edd51d899fe699eb6156b58"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa8d5d17d1edd51d899fe699eb6156b58">IsArgMinMaxSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2358<tr class="separator:aa8d5d17d1edd51d899fe699eb6156b58"><td class="memSeparator" colspan="2">&#160;</td></tr>
2359<tr class="memitem:ae1fc9dbaad02fff7f7227cc10536e1ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae1fc9dbaad02fff7f7227cc10536e1ee">IsConcatSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2360<tr class="separator:ae1fc9dbaad02fff7f7227cc10536e1ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
2361<tr class="memitem:aa9da770c93f812b264861f98cfdd650c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa9da770c93f812b264861f98cfdd650c">IsDetectionPostProcessSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2362<tr class="separator:aa9da770c93f812b264861f98cfdd650c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2363<tr class="memitem:a658eea4e746b1e664796c48d7eaf19f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a658eea4e746b1e664796c48d7eaf19f0">IsGatherSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2364<tr class="separator:a658eea4e746b1e664796c48d7eaf19f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2365<tr class="memitem:a99260bf94e4f8d0c8a527970cd52ce93"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a99260bf94e4f8d0c8a527970cd52ce93">IsMemImportSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2366<tr class="separator:a99260bf94e4f8d0c8a527970cd52ce93"><td class="memSeparator" colspan="2">&#160;</td></tr>
2367<tr class="memitem:adf5de1faf58e2eea99a932883edc3ed0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adf5de1faf58e2eea99a932883edc3ed0">IsMergerSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2368<tr class="separator:adf5de1faf58e2eea99a932883edc3ed0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2369<tr class="memitem:a599a95f708fa0b6a6230dc6c9e73ea3e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a599a95f708fa0b6a6230dc6c9e73ea3e">IsQuantizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2370<tr class="separator:a599a95f708fa0b6a6230dc6c9e73ea3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2371<tr class="memitem:a4bb384bc41a94bc7c3b4f543cd3fd437"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4bb384bc41a94bc7c3b4f543cd3fd437">IsReshapeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2372<tr class="separator:a4bb384bc41a94bc7c3b4f543cd3fd437"><td class="memSeparator" colspan="2">&#160;</td></tr>
2373<tr class="memitem:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memTemplParams" colspan="2">template&lt;typename T , typename V &gt; </td></tr>
2374<tr class="memitem:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</td></tr>
2375<tr class="separator:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2376<tr class="memitem:af6dbe371ec651a8e0063624fdf32afc0"><td class="memTemplParams" colspan="2">template&lt;typename Float16Func , typename Float32Func , typename Uint8Func , typename Int32Func , typename BooleanFunc , typename ... Params&gt; </td></tr>
2377<tr class="memitem:af6dbe371ec651a8e0063624fdf32afc0"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af6dbe371ec651a8e0063624fdf32afc0">IsSupportedForDataTypeGeneric</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType, Float16Func float16FuncPtr, Float32Func float32FuncPtr, Uint8Func uint8FuncPtr, Int32Func int32FuncPtr, BooleanFunc booleanFuncPtr, Params &amp;&amp;... params)</td></tr>
2378<tr class="separator:af6dbe371ec651a8e0063624fdf32afc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2379<tr class="memitem:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2380<tr class="memitem:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aeaee60c3c6c67a7cf37bbef45b89fc0a">TrueFunc</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2381<tr class="separator:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2382<tr class="memitem:a6e64aab48baba12883c73e90bfd07e77"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2383<tr class="memitem:a6e64aab48baba12883c73e90bfd07e77"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e64aab48baba12883c73e90bfd07e77">FalseFunc</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2384<tr class="separator:a6e64aab48baba12883c73e90bfd07e77"><td class="memSeparator" colspan="2">&#160;</td></tr>
2385<tr class="memitem:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2386<tr class="memitem:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a621c8ffe11bba3d7ab304a9ad3feec2f">FalseFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2387<tr class="separator:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2388<tr class="memitem:a02d627e25da543b79ee8a59a1193a426"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2389<tr class="memitem:a02d627e25da543b79ee8a59a1193a426"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a02d627e25da543b79ee8a59a1193a426">FalseFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2390<tr class="separator:a02d627e25da543b79ee8a59a1193a426"><td class="memSeparator" colspan="2">&#160;</td></tr>
2391<tr class="memitem:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2392<tr class="memitem:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4e4802d0916cb8b7da508ab03ce1f163">FalseFuncU8</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2393<tr class="separator:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
2394<tr class="memitem:a07ae80b502ab664f1aaf7d6c00725982"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2395<tr class="memitem:a07ae80b502ab664f1aaf7d6c00725982"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a07ae80b502ab664f1aaf7d6c00725982">FalseFuncI32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2396<tr class="separator:a07ae80b502ab664f1aaf7d6c00725982"><td class="memSeparator" colspan="2">&#160;</td></tr>
2397<tr class="memitem:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2398<tr class="memitem:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0b55e509dd7e3bfea233a389a18c21e6">FalseInputFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2399<tr class="separator:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2400<tr class="memitem:a216969fbba54df95de3e68435b8074d7"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2401<tr class="memitem:a216969fbba54df95de3e68435b8074d7"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a216969fbba54df95de3e68435b8074d7">FalseInputFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2402<tr class="separator:a216969fbba54df95de3e68435b8074d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2403<tr class="memitem:ad3d0087e2533d808debd5c959fb3901f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2404<tr class="memitem:ad3d0087e2533d808debd5c959fb3901f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad3d0087e2533d808debd5c959fb3901f">FalseOutputFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2405<tr class="separator:ad3d0087e2533d808debd5c959fb3901f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2406<tr class="memitem:a2febf8d85a92b69e4a677a7c632418ee"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2407<tr class="memitem:a2febf8d85a92b69e4a677a7c632418ee"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2febf8d85a92b69e4a677a7c632418ee">FalseOutputFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2408<tr class="separator:a2febf8d85a92b69e4a677a7c632418ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
2409<tr class="memitem:a5f523aee1752323aeaf899085649320b"><td class="memTemplParams" colspan="2">template&lt;LogSeverity Level&gt; </td></tr>
2410<tr class="memitem:a5f523aee1752323aeaf899085649320b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f523aee1752323aeaf899085649320b">SetLoggingSinks</a> (bool standardOut, bool debugOut, bool coloured)</td></tr>
2411<tr class="separator:a5f523aee1752323aeaf899085649320b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2412<tr class="memitem:a7658f93d899c8646515a29370e6aa994"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a> (const std::string &amp;errorMessage, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</td></tr>
2413<tr class="separator:a7658f93d899c8646515a29370e6aa994"><td class="memSeparator" colspan="2">&#160;</td></tr>
2414<tr class="memitem:a38e626422579decc13e3ee37da1a84c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a> (const std::string &amp;warningMessage, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</td></tr>
2415<tr class="separator:a38e626422579decc13e3ee37da1a84c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2416<tr class="memitem:af002111f64aee648e3258247075cae36"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a> (<a class="el" href="classarmnn_1_1_layer.html">Layer</a> *layer, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2417<tr class="separator:af002111f64aee648e3258247075cae36"><td class="memSeparator" colspan="2">&#160;</td></tr>
2418<tr class="memitem:aad4c29b429ad2d6c9224921cfdc5b271"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aad4c29b429ad2d6c9224921cfdc5b271">AssignBackends</a> (<a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;firstLayer, <a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;lastLayer, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2419<tr class="separator:aad4c29b429ad2d6c9224921cfdc5b271"><td class="memSeparator" colspan="2">&#160;</td></tr>
2420<tr class="memitem:a76dca645d0d0665f74e171bbc1901469"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a> (<a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a> &amp;subgraph, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2421<tr class="separator:a76dca645d0d0665f74e171bbc1901469"><td class="memSeparator" colspan="2">&#160;</td></tr>
2422<tr class="memitem:a1ec6b4c20ed294a96cf94c33c24caaf5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a> (<a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;handleFactoryRegistry, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings)</td></tr>
2423<tr class="separator:a1ec6b4c20ed294a96cf94c33c24caaf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2424<tr class="memitem:ae97734279fd10b4c754cc15bc8ed9dad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae97734279fd10b4c754cc15bc8ed9dad">ApplyBackendOptimizations</a> (<a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;backendSettings, <a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2425<tr class="separator:ae97734279fd10b4c754cc15bc8ed9dad"><td class="memSeparator" colspan="2">&#160;</td></tr>
2426<tr class="memitem:a5ee4a1cca55f69b31e625c786655ed1a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a> (<a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> src, <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> dst, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2427<tr class="separator:a5ee4a1cca55f69b31e625c786655ed1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2428<tr class="memitem:accb1637c58e1523f740025e0d0e7c6dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;slot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2429<tr class="separator:accb1637c58e1523f740025e0d0e7c6dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2430<tr class="memitem:ab46c7f5f4736d550ab0e5e05a0fff4a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;slot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2431<tr class="separator:ab46c7f5f4736d550ab0e5e05a0fff4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2432<tr class="memitem:a8d9f52bbb69750456acca06988beabda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;outputSlot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2433<tr class="separator:a8d9f52bbb69750456acca06988beabda"><td class="memSeparator" colspan="2">&#160;</td></tr>
2434<tr class="memitem:ab6ed577caec49def150e231c63af0d12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab6ed577caec49def150e231c63af0d12">CalculateEdgeStrategy</a> (<a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> srcFactoryId, const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer, const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;connectedLayer, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2435<tr class="separator:ab6ed577caec49def150e231c63af0d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
2436<tr class="memitem:a5d3468fb5880eb444cd25b55a86220ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5d3468fb5880eb444cd25b55a86220ff">SelectTensorHandleStrategy</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;optGraph, <a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;registry, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2437<tr class="separator:a5d3468fb5880eb444cd25b55a86220ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
2438<tr class="memitem:a310dd804fd70eadb1e8854325e63f0bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a310dd804fd70eadb1e8854325e63f0bd">CreateQuantizedConst</a> (const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;tensor, std::vector&lt; uint8_t &gt; &amp;backing)</td></tr>
2439<tr class="separator:a310dd804fd70eadb1e8854325e63f0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2440<tr class="memitem:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memTemplParams" colspan="2">template&lt;typename srcType &gt; </td></tr>
2441<tr class="memitem:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a> (const srcType *src, uint8_t *dst, size_t numElements, float &amp;scale, int &amp;offset)</td></tr>
2442<tr class="separator:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memSeparator" colspan="2">&#160;</td></tr>
2443<tr class="memitem:a9835ef753dda5b5a2fe827680e41fda7"><td class="memTemplParams" colspan="2">template&lt;typename LayerContainer &gt; </td></tr>
2444<tr class="memitem:a9835ef753dda5b5a2fe827680e41fda7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a> (const LayerContainer &amp;layerContainer, <a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;visitor)</td></tr>
2445<tr class="separator:a9835ef753dda5b5a2fe827680e41fda7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2446<tr class="memitem:ad31c56533e4f9f9f51719599fbfcf7bb"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad31c56533e4f9f9f51719599fbfcf7bb">InsertConvertFp16ToFp32LayersBefore</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer, bool expectCorrectInputType)</td></tr>
2447<tr class="separator:ad31c56533e4f9f9f51719599fbfcf7bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2448<tr class="memitem:abf625e50a5eaeafce5b39580dc95a9d3"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abf625e50a5eaeafce5b39580dc95a9d3">InsertConvertFp32ToFp16LayersAfter</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer)</td></tr>
2449<tr class="separator:abf625e50a5eaeafce5b39580dc95a9d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2450<tr class="memitem:a2616ffdae2db993af5c08019fb61860a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2616ffdae2db993af5c08019fb61860a">InsertDebugLayerAfter</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;layer)</td></tr>
2451<tr class="separator:a2616ffdae2db993af5c08019fb61860a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2452<tr class="memitem:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2453<tr class="memitem:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4907f6b88c3e72be6b8ae876de355e0a">Append</a> (<a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;optimizations, T &amp;&amp;optimization)</td></tr>
2454<tr class="separator:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2455<tr class="memitem:a0c8a28b71e49c04596289ff281e58f1a"><td class="memTemplParams" colspan="2">template&lt;typename Front , typename... Others&gt; </td></tr>
2456<tr class="memitem:a0c8a28b71e49c04596289ff281e58f1a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">Append</a> (<a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</td></tr>
2457<tr class="separator:a0c8a28b71e49c04596289ff281e58f1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2458<tr class="memitem:aa7427025a851113a492de0b68b23d22a"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
2459<tr class="memitem:aa7427025a851113a492de0b68b23d22a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a> (Args &amp;&amp;... args)</td></tr>
2460<tr class="separator:aa7427025a851113a492de0b68b23d22a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2461<tr class="memitem:a12d3ffe11b54c0aaa59bdd8415701c36"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_measurement.html">Measurement</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a12d3ffe11b54c0aaa59bdd8415701c36">FindMeasurement</a> (const std::string &amp;name, const <a class="el" href="classarmnn_1_1_event.html">Event</a> *event)</td></tr>
2462<tr class="separator:a12d3ffe11b54c0aaa59bdd8415701c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
2463<tr class="memitem:a1b90db39f6a9ebd11591e76fa364b06f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarmnn_1_1_measurement.html">Measurement</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b90db39f6a9ebd11591e76fa364b06f">FindKernelMeasurements</a> (const <a class="el" href="classarmnn_1_1_event.html">Event</a> *event)</td></tr>
2464<tr class="separator:a1b90db39f6a9ebd11591e76fa364b06f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2465<tr class="memitem:ab03dcfb3b4019d8f58a67c41681951ae"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab03dcfb3b4019d8f58a67c41681951ae">GetEventPtr</a> (const <a class="el" href="classarmnn_1_1_event.html">Event</a> *ptr)</td></tr>
2466<tr class="separator:ab03dcfb3b4019d8f58a67c41681951ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
2467<tr class="memitem:a4b1e2158af2aedd3f00d2121c45b0f93"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4b1e2158af2aedd3f00d2121c45b0f93">GetEventPtr</a> (const std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_event.html">Event</a> &gt; &amp;ptr)</td></tr>
2468<tr class="separator:a4b1e2158af2aedd3f00d2121c45b0f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
2469<tr class="memitem:a20f74b679d59b52e9fae3bbef8f10ffb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a20f74b679d59b52e9fae3bbef8f10ffb">CalcLevel</a> (const <a class="el" href="classarmnn_1_1_event.html">Event</a> *eventPtr)</td></tr>
2470<tr class="separator:a20f74b679d59b52e9fae3bbef8f10ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2471<tr class="memitem:a50805c29c35b9903c2dea301d8091711"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a50805c29c35b9903c2dea301d8091711">ExtractJsonObjects</a> (unsigned int inferenceIndex, const <a class="el" href="classarmnn_1_1_event.html">Event</a> *parentEvent, <a class="el" href="structarmnn_1_1_json_child_object.html">JsonChildObject</a> &amp;parentObject, std::map&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *, std::vector&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&gt;&gt; descendantsMap)</td></tr>
2472<tr class="separator:a50805c29c35b9903c2dea301d8091711"><td class="memSeparator" colspan="2">&#160;</td></tr>
2473<tr class="memitem:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
2474<tr class="memitem:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</td></tr>
2475<tr class="separator:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
2476<tr class="memitem:a49538fa883b70c944e437d65d6628eec"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
2477<tr class="memitem:a49538fa883b70c944e437d65d6628eec"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a49538fa883b70c944e437d65d6628eec">ForEachLayerOutput</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</td></tr>
2478<tr class="separator:a49538fa883b70c944e437d65d6628eec"><td class="memSeparator" colspan="2">&#160;</td></tr>
2479<tr class="memitem:a09ff1f6670d27d3b41e5b5d35a6c9f37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09ff1f6670d27d3b41e5b5d35a6c9f37">AssignSplitId</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo)</td></tr>
2480<tr class="separator:a09ff1f6670d27d3b41e5b5d35a6c9f37"><td class="memSeparator" colspan="2">&#160;</td></tr>
2481<tr class="memitem:a6b10dc0d12c7f4a52ad01b9975dbe908"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6b10dc0d12c7f4a52ad01b9975dbe908">IsReadyForSplitAssignment</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo)</td></tr>
2482<tr class="separator:a6b10dc0d12c7f4a52ad01b9975dbe908"><td class="memSeparator" colspan="2">&#160;</td></tr>
2483<tr class="memitem:a10d15f3df1ab52b3b915a4be1dbf386b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a10d15f3df1ab52b3b915a4be1dbf386b">BOOST_AUTO_TEST_CASE</a> (CheckConvolution2dLayer)</td></tr>
2484<tr class="separator:a10d15f3df1ab52b3b915a4be1dbf386b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2485<tr class="memitem:a62448ee306fc41cc7980c4b7eac3ebb6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a62448ee306fc41cc7980c4b7eac3ebb6">BOOST_AUTO_TEST_CASE</a> (CheckNamedConvolution2dLayer)</td></tr>
2486<tr class="separator:a62448ee306fc41cc7980c4b7eac3ebb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2487<tr class="memitem:a66e9fcc01969d6afa35dfaa212ded223"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a66e9fcc01969d6afa35dfaa212ded223">BOOST_AUTO_TEST_CASE</a> (CheckConvolution2dLayerWithBiases)</td></tr>
2488<tr class="separator:a66e9fcc01969d6afa35dfaa212ded223"><td class="memSeparator" colspan="2">&#160;</td></tr>
2489<tr class="memitem:a154c5a01df05412929d89e06fc4d0d6d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a154c5a01df05412929d89e06fc4d0d6d">BOOST_AUTO_TEST_CASE</a> (CheckNamedConvolution2dLayerWithBiases)</td></tr>
2490<tr class="separator:a154c5a01df05412929d89e06fc4d0d6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2491<tr class="memitem:a6eadb1671955b1bf7cdd8b29fd34aa33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6eadb1671955b1bf7cdd8b29fd34aa33">BOOST_AUTO_TEST_CASE</a> (CheckDepthwiseConvolution2dLayer)</td></tr>
2492<tr class="separator:a6eadb1671955b1bf7cdd8b29fd34aa33"><td class="memSeparator" colspan="2">&#160;</td></tr>
2493<tr class="memitem:ac36bd2336c0e3caefecde40bc07e2bf3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac36bd2336c0e3caefecde40bc07e2bf3">BOOST_AUTO_TEST_CASE</a> (CheckNamedDepthwiseConvolution2dLayer)</td></tr>
2494<tr class="separator:ac36bd2336c0e3caefecde40bc07e2bf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2495<tr class="memitem:a14bcc6125921389dceb27e432bc7a489"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14bcc6125921389dceb27e432bc7a489">BOOST_AUTO_TEST_CASE</a> (CheckDepthwiseConvolution2dLayerWithBiases)</td></tr>
2496<tr class="separator:a14bcc6125921389dceb27e432bc7a489"><td class="memSeparator" colspan="2">&#160;</td></tr>
2497<tr class="memitem:aaeafd5f3786a0bd215468714c1e743b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaeafd5f3786a0bd215468714c1e743b1">BOOST_AUTO_TEST_CASE</a> (CheckNamedDepthwiseConvolution2dLayerWithBiases)</td></tr>
2498<tr class="separator:aaeafd5f3786a0bd215468714c1e743b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2499<tr class="memitem:a3425db69ef4e4927a82e99025c16294a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3425db69ef4e4927a82e99025c16294a">BOOST_AUTO_TEST_CASE</a> (CheckFullyConnectedLayer)</td></tr>
2500<tr class="separator:a3425db69ef4e4927a82e99025c16294a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2501<tr class="memitem:a631f8c0c9bceff4bef761eb7fd865686"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a631f8c0c9bceff4bef761eb7fd865686">BOOST_AUTO_TEST_CASE</a> (CheckNamedFullyConnectedLayer)</td></tr>
2502<tr class="separator:a631f8c0c9bceff4bef761eb7fd865686"><td class="memSeparator" colspan="2">&#160;</td></tr>
2503<tr class="memitem:a7b017a692367333d1035e276f252f46c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7b017a692367333d1035e276f252f46c">BOOST_AUTO_TEST_CASE</a> (CheckFullyConnectedLayerWithBiases)</td></tr>
2504<tr class="separator:a7b017a692367333d1035e276f252f46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2505<tr class="memitem:a5f3e4faca1d063ad73764571f898dc2d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f3e4faca1d063ad73764571f898dc2d">BOOST_AUTO_TEST_CASE</a> (CheckNamedFullyConnectedLayerWithBiases)</td></tr>
2506<tr class="separator:a5f3e4faca1d063ad73764571f898dc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2507<tr class="memitem:a199581e11ebd49e1322b090484f3dd29"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a199581e11ebd49e1322b090484f3dd29">BOOST_AUTO_TEST_CASE</a> (CheckBatchNormalizationLayer)</td></tr>
2508<tr class="separator:a199581e11ebd49e1322b090484f3dd29"><td class="memSeparator" colspan="2">&#160;</td></tr>
2509<tr class="memitem:af1eda3afe49e91bf04d6e34a0e3be8ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af1eda3afe49e91bf04d6e34a0e3be8ef">BOOST_AUTO_TEST_CASE</a> (CheckNamedBatchNormalizationLayer)</td></tr>
2510<tr class="separator:af1eda3afe49e91bf04d6e34a0e3be8ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
2511<tr class="memitem:a1a8221833cf3d29cd6435aed632dfcce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1a8221833cf3d29cd6435aed632dfcce">BOOST_AUTO_TEST_CASE</a> (CheckConstLayer)</td></tr>
2512<tr class="separator:a1a8221833cf3d29cd6435aed632dfcce"><td class="memSeparator" colspan="2">&#160;</td></tr>
2513<tr class="memitem:a9da3b50de4d108b81264a22c5adacf05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9da3b50de4d108b81264a22c5adacf05">BOOST_AUTO_TEST_CASE</a> (CheckNamedConstLayer)</td></tr>
2514<tr class="separator:a9da3b50de4d108b81264a22c5adacf05"><td class="memSeparator" colspan="2">&#160;</td></tr>
2515<tr class="memitem:afefeb492b3446d34e413556a805210b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afefeb492b3446d34e413556a805210b6">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerBasic)</td></tr>
2516<tr class="separator:afefeb492b3446d34e413556a805210b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2517<tr class="memitem:a8f6ad27911e2e711f665ae69c5b2cd1d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8f6ad27911e2e711f665ae69c5b2cd1d">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerBasic)</td></tr>
2518<tr class="separator:a8f6ad27911e2e711f665ae69c5b2cd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2519<tr class="memitem:a5400bc09082eab59bdfdbd61a06578f5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5400bc09082eab59bdfdbd61a06578f5">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerCifgDisabled)</td></tr>
2520<tr class="separator:a5400bc09082eab59bdfdbd61a06578f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2521<tr class="memitem:ad956f3db79c93a658cbccb41714e1542"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad956f3db79c93a658cbccb41714e1542">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerCifgDisabled)</td></tr>
2522<tr class="separator:ad956f3db79c93a658cbccb41714e1542"><td class="memSeparator" colspan="2">&#160;</td></tr>
2523<tr class="memitem:aa524f33d3d2b294847c3929237947b20"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa524f33d3d2b294847c3929237947b20">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerPeephole)</td></tr>
2524<tr class="separator:aa524f33d3d2b294847c3929237947b20"><td class="memSeparator" colspan="2">&#160;</td></tr>
2525<tr class="memitem:a0f1dc6ab5dccc96c5a4df37cc5bcb923"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0f1dc6ab5dccc96c5a4df37cc5bcb923">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerPeephole)</td></tr>
2526<tr class="separator:a0f1dc6ab5dccc96c5a4df37cc5bcb923"><td class="memSeparator" colspan="2">&#160;</td></tr>
2527<tr class="memitem:a0d00c75b42e46b3a7dd78f9a40324c33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0d00c75b42e46b3a7dd78f9a40324c33">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerProjection)</td></tr>
2528<tr class="separator:a0d00c75b42e46b3a7dd78f9a40324c33"><td class="memSeparator" colspan="2">&#160;</td></tr>
2529<tr class="memitem:a3a3105d08231d5f2e53511bab46224c9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3a3105d08231d5f2e53511bab46224c9">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerProjection)</td></tr>
2530<tr class="separator:a3a3105d08231d5f2e53511bab46224c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2531<tr class="memitem:a84e5356296be66aa930ec53118f5ef6b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a84e5356296be66aa930ec53118f5ef6b">BOOST_AUTO_TEST_CASE</a> (CheckQuantizedLstmLayer)</td></tr>
2532<tr class="separator:a84e5356296be66aa930ec53118f5ef6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2533<tr class="memitem:a492fae0605d06684297540bb9af319dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a492fae0605d06684297540bb9af319dc">BOOST_AUTO_TEST_CASE</a> (CheckNamedQuantizedLstmLayer)</td></tr>
2534<tr class="separator:a492fae0605d06684297540bb9af319dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2535<tr class="memitem:a49a398090bc1044038300ce246821a1f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a49a398090bc1044038300ce246821a1f">GetProfilerEventSequenceSize</a> (<a class="el" href="classarmnn_1_1_profiler.html">armnn::Profiler</a> *profiler)</td></tr>
2536<tr class="separator:a49a398090bc1044038300ce246821a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2537<tr class="memitem:a6482907b4c57873e197324f5cb66fd4d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a> (const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *inputNetwork, <a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;visitor)</td></tr>
2538<tr class="separator:a6482907b4c57873e197324f5cb66fd4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2539<tr class="memitem:a8baf97065d802063eb9bcdd1a066dc86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8baf97065d802063eb9bcdd1a066dc86">BOOST_AUTO_TEST_CASE</a> (QuantizeAddition)</td></tr>
2540<tr class="separator:a8baf97065d802063eb9bcdd1a066dc86"><td class="memSeparator" colspan="2">&#160;</td></tr>
2541<tr class="memitem:a5fbc1479db5f4ff70a750cf02d58971b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a> (const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape)</td></tr>
2542<tr class="separator:a5fbc1479db5f4ff70a750cf02d58971b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2543<tr class="memitem:aa9c6c1a7b5380a99a536f4740f87dd59"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa9c6c1a7b5380a99a536f4740f87dd59">CreateNetworkWithInputOutputLayers</a> ()</td></tr>
2544<tr class="separator:aa9c6c1a7b5380a99a536f4740f87dd59"><td class="memSeparator" colspan="2">&#160;</td></tr>
2545<tr class="memitem:ae52296dff1f4879854f320d59f92574e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a> (const <a class="el" href="classarmnn_1_1_network.html">Network</a> *network)</td></tr>
2546<tr class="separator:ae52296dff1f4879854f320d59f92574e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2547<tr class="memitem:a9cec088786b209989fe9e04e1be9636d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9cec088786b209989fe9e04e1be9636d">BOOST_AUTO_TEST_CASE</a> (InputOutputLayerDynamicQuant)</td></tr>
2548<tr class="separator:a9cec088786b209989fe9e04e1be9636d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2549<tr class="memitem:a7db6a78bb6eedbea7f0525f1fe59de28"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7db6a78bb6eedbea7f0525f1fe59de28">BOOST_AUTO_TEST_CASE</a> (QuantizeAbsActivation)</td></tr>
2550<tr class="separator:a7db6a78bb6eedbea7f0525f1fe59de28"><td class="memSeparator" colspan="2">&#160;</td></tr>
2551<tr class="memitem:a2df3b432de50a9b9e8b486aa53e11cc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2df3b432de50a9b9e8b486aa53e11cc5">BOOST_AUTO_TEST_CASE</a> (QuantizeLinearActivation)</td></tr>
2552<tr class="separator:a2df3b432de50a9b9e8b486aa53e11cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2553<tr class="memitem:a3dd219b394b8186d1849ee595193268d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3dd219b394b8186d1849ee595193268d">BOOST_AUTO_TEST_CASE</a> (QuantizeReLuActivation)</td></tr>
2554<tr class="separator:a3dd219b394b8186d1849ee595193268d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2555<tr class="memitem:a52e948b4bffc16a3933d812dbc384833"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a52e948b4bffc16a3933d812dbc384833">BOOST_AUTO_TEST_CASE</a> (QuantizeSoftReLuActivation)</td></tr>
2556<tr class="separator:a52e948b4bffc16a3933d812dbc384833"><td class="memSeparator" colspan="2">&#160;</td></tr>
2557<tr class="memitem:abf109580225cb949565c8223bceadd5d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abf109580225cb949565c8223bceadd5d">BOOST_AUTO_TEST_CASE</a> (QuantizeBoundedReluActivation)</td></tr>
2558<tr class="separator:abf109580225cb949565c8223bceadd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2559<tr class="memitem:acbf871a6ec0726bfe2746e761a278108"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acbf871a6ec0726bfe2746e761a278108">BOOST_AUTO_TEST_CASE</a> (QuantizeTanHActivation)</td></tr>
2560<tr class="separator:acbf871a6ec0726bfe2746e761a278108"><td class="memSeparator" colspan="2">&#160;</td></tr>
2561<tr class="memitem:a32068047cc7b37f1bed1830508891526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a32068047cc7b37f1bed1830508891526">BOOST_AUTO_TEST_CASE</a> (QuantizeLeakyReLuActivation)</td></tr>
2562<tr class="separator:a32068047cc7b37f1bed1830508891526"><td class="memSeparator" colspan="2">&#160;</td></tr>
2563<tr class="memitem:adf59f87645d301e9b56dd70aed350e54"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adf59f87645d301e9b56dd70aed350e54">BOOST_AUTO_TEST_CASE</a> (QuantizeBatchNorm)</td></tr>
2564<tr class="separator:adf59f87645d301e9b56dd70aed350e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
2565<tr class="memitem:ae91bc23bf56bb5f9c2e0ddb1fc7be75e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae91bc23bf56bb5f9c2e0ddb1fc7be75e">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthToSpace)</td></tr>
2566<tr class="separator:ae91bc23bf56bb5f9c2e0ddb1fc7be75e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2567<tr class="memitem:aa6281ed3090b74167170c8f692688de5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa6281ed3090b74167170c8f692688de5">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeEmptyNetwork)</td></tr>
2568<tr class="separator:aa6281ed3090b74167170c8f692688de5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2569<tr class="memitem:ad432424d97021ae6c81e38130b1ec5d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad432424d97021ae6c81e38130b1ec5d6">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeNoInputLayers)</td></tr>
2570<tr class="separator:ad432424d97021ae6c81e38130b1ec5d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2571<tr class="memitem:a6e97e093453fc053a5c82386927a0d6c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6e97e093453fc053a5c82386927a0d6c">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeInputLayers)</td></tr>
2572<tr class="separator:a6e97e093453fc053a5c82386927a0d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2573<tr class="memitem:aad4b8cb9a4d882a48bc21510f0d1a938"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aad4b8cb9a4d882a48bc21510f0d1a938">CreateNetworkWithFullyConnectedLayer</a> (const bool biasEnabled, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;inputShape, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;outputShape)</td></tr>
2574<tr class="separator:aad4b8cb9a4d882a48bc21510f0d1a938"><td class="memSeparator" colspan="2">&#160;</td></tr>
2575<tr class="memitem:a245661fc96c9c4a9b898e1d98c8c6962"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a> (const bool biasEnabled)</td></tr>
2576<tr class="separator:a245661fc96c9c4a9b898e1d98c8c6962"><td class="memSeparator" colspan="2">&#160;</td></tr>
2577<tr class="memitem:a881ab05533f917737509402730668e4a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a881ab05533f917737509402730668e4a">BOOST_AUTO_TEST_CASE</a> (QuantizeFullyConnected)</td></tr>
2578<tr class="separator:a881ab05533f917737509402730668e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2579<tr class="memitem:a69dd8c7608ff0935a247f3aa07f98212"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a69dd8c7608ff0935a247f3aa07f98212">BOOST_AUTO_TEST_CASE</a> (QuantizeFullyConnectedBiasEnabled)</td></tr>
2580<tr class="separator:a69dd8c7608ff0935a247f3aa07f98212"><td class="memSeparator" colspan="2">&#160;</td></tr>
2581<tr class="memitem:a14cfd39cfc30682fa821ade3dd298426"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a> (bool useBiases)</td></tr>
2582<tr class="separator:a14cfd39cfc30682fa821ade3dd298426"><td class="memSeparator" colspan="2">&#160;</td></tr>
2583<tr class="memitem:aa117e0112fdc02a7a011cfb39dc596ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa117e0112fdc02a7a011cfb39dc596ab">BOOST_AUTO_TEST_CASE</a> (QuantizeConvolution2d)</td></tr>
2584<tr class="separator:aa117e0112fdc02a7a011cfb39dc596ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
2585<tr class="memitem:a9827adb2cf787460578999e0484568fa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9827adb2cf787460578999e0484568fa">BOOST_AUTO_TEST_CASE</a> (QuantizeConvolution2dWithBiases)</td></tr>
2586<tr class="separator:a9827adb2cf787460578999e0484568fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2587<tr class="memitem:a5abbe8a9ee003c1379a921dbe2745b81"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a> (bool useBiases)</td></tr>
2588<tr class="separator:a5abbe8a9ee003c1379a921dbe2745b81"><td class="memSeparator" colspan="2">&#160;</td></tr>
2589<tr class="memitem:a1db5d836b83fc71602a7993616de5b42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1db5d836b83fc71602a7993616de5b42">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthwiseConvolution2d)</td></tr>
2590<tr class="separator:a1db5d836b83fc71602a7993616de5b42"><td class="memSeparator" colspan="2">&#160;</td></tr>
2591<tr class="memitem:a891abdb9079715cbcf85792e2b450652"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a891abdb9079715cbcf85792e2b450652">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthwiseConvolution2dWithBiases)</td></tr>
2592<tr class="separator:a891abdb9079715cbcf85792e2b450652"><td class="memSeparator" colspan="2">&#160;</td></tr>
2593<tr class="memitem:abd033569519fec65077ea983f6c75a9d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abd033569519fec65077ea983f6c75a9d">BOOST_AUTO_TEST_CASE</a> (QuantizeInstanceNormalization)</td></tr>
2594<tr class="separator:abd033569519fec65077ea983f6c75a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2595<tr class="memitem:a46d045b35ad6b8c2ffe0c04684f97779"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46d045b35ad6b8c2ffe0c04684f97779">BOOST_AUTO_TEST_CASE</a> (QuantizeLogSoftmax)</td></tr>
2596<tr class="separator:a46d045b35ad6b8c2ffe0c04684f97779"><td class="memSeparator" colspan="2">&#160;</td></tr>
2597<tr class="memitem:a9c91b774c3089c55df77cc3a42da72de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9c91b774c3089c55df77cc3a42da72de">CreateNetworkWithSoftmaxLayer</a> (const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape)</td></tr>
2598<tr class="separator:a9c91b774c3089c55df77cc3a42da72de"><td class="memSeparator" colspan="2">&#160;</td></tr>
2599<tr class="memitem:a7e94e9ab356805c498f5fc2fba87e4e6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7e94e9ab356805c498f5fc2fba87e4e6">BOOST_AUTO_TEST_CASE</a> (QuantizeSoftmax)</td></tr>
2600<tr class="separator:a7e94e9ab356805c498f5fc2fba87e4e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2601<tr class="memitem:a4734542212b5811d0511ea6b16f35168"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4734542212b5811d0511ea6b16f35168">BOOST_AUTO_TEST_CASE</a> (QuantizeStandIn)</td></tr>
2602<tr class="separator:a4734542212b5811d0511ea6b16f35168"><td class="memSeparator" colspan="2">&#160;</td></tr>
2603<tr class="memitem:a120c131df35d78b3a56cb0f07decaf35"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a> (<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *network, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
2604<tr class="separator:a120c131df35d78b3a56cb0f07decaf35"><td class="memSeparator" colspan="2">&#160;</td></tr>
2605<tr class="memitem:a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a> (<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *network, <a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *activation, <a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *layerUnderTest, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
2606<tr class="separator:a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2607<tr class="memitem:add22da50dd35a100548dde4c57ae89d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#add22da50dd35a100548dde4c57ae89d1">BOOST_AUTO_TEST_CASE</a> (QuantizePermute)</td></tr>
2608<tr class="separator:add22da50dd35a100548dde4c57ae89d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2609<tr class="memitem:a9a6bc66017eb7c132fd6e13ff0dcb540"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9a6bc66017eb7c132fd6e13ff0dcb540">BOOST_AUTO_TEST_CASE</a> (QuantizeSpaceToBatch)</td></tr>
2610<tr class="separator:a9a6bc66017eb7c132fd6e13ff0dcb540"><td class="memSeparator" colspan="2">&#160;</td></tr>
2611<tr class="memitem:aa78ce2bbe65cae8f3d60839467dbfc83"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa78ce2bbe65cae8f3d60839467dbfc83">BOOST_AUTO_TEST_CASE</a> (QuantizeSpaceToDepth)</td></tr>
2612<tr class="separator:aa78ce2bbe65cae8f3d60839467dbfc83"><td class="memSeparator" colspan="2">&#160;</td></tr>
2613<tr class="memitem:aaa86b6903e41d2d2828e00b32f872375"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aaa86b6903e41d2d2828e00b32f872375">BOOST_AUTO_TEST_CASE</a> (QuantizePooling2d)</td></tr>
2614<tr class="separator:aaa86b6903e41d2d2828e00b32f872375"><td class="memSeparator" colspan="2">&#160;</td></tr>
2615<tr class="memitem:a369051e180246c66b20c93de5fecee8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a369051e180246c66b20c93de5fecee8c">BOOST_AUTO_TEST_CASE</a> (<a class="el" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>)</td></tr>
2616<tr class="separator:a369051e180246c66b20c93de5fecee8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2617<tr class="memitem:ae3af95ea62252012cf93a98167afef64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae3af95ea62252012cf93a98167afef64">BOOST_AUTO_TEST_CASE</a> (QuantizeArgMinMax)</td></tr>
2618<tr class="separator:ae3af95ea62252012cf93a98167afef64"><td class="memSeparator" colspan="2">&#160;</td></tr>
2619<tr class="memitem:ab83f837cdd5bfcff537dae72a96d6fc8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab83f837cdd5bfcff537dae72a96d6fc8">BOOST_AUTO_TEST_CASE</a> (QuantizeComparison)</td></tr>
2620<tr class="separator:ab83f837cdd5bfcff537dae72a96d6fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2621<tr class="memitem:add47ebcd4a59304a25c71996aea2b38b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#add47ebcd4a59304a25c71996aea2b38b">BOOST_AUTO_TEST_CASE</a> (QuantizeConcat)</td></tr>
2622<tr class="separator:add47ebcd4a59304a25c71996aea2b38b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2623<tr class="memitem:a9258afcd4c6d8443c9130d8c9bf26442"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9258afcd4c6d8443c9130d8c9bf26442">BOOST_AUTO_TEST_CASE</a> (QuantizeReshape)</td></tr>
2624<tr class="separator:a9258afcd4c6d8443c9130d8c9bf26442"><td class="memSeparator" colspan="2">&#160;</td></tr>
2625<tr class="memitem:a23a4f3c387a2a3a035e97764e34277c6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a23a4f3c387a2a3a035e97764e34277c6">BOOST_AUTO_TEST_CASE</a> (QuantizeSplitter)</td></tr>
2626<tr class="separator:a23a4f3c387a2a3a035e97764e34277c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2627<tr class="memitem:a102f37a09de1b0d4d78740a3c12902bf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a102f37a09de1b0d4d78740a3c12902bf">BOOST_AUTO_TEST_CASE</a> (QuantizeResize)</td></tr>
2628<tr class="separator:a102f37a09de1b0d4d78740a3c12902bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2629<tr class="memitem:a5f9c6094ae666c8e14907307d0481fac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f9c6094ae666c8e14907307d0481fac">BOOST_AUTO_TEST_CASE</a> (QuantizeStridedSlice)</td></tr>
2630<tr class="separator:a5f9c6094ae666c8e14907307d0481fac"><td class="memSeparator" colspan="2">&#160;</td></tr>
2631<tr class="memitem:aec7cf8e3927ee7d24f8b19d206ce3e84"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aec7cf8e3927ee7d24f8b19d206ce3e84">BOOST_AUTO_TEST_CASE</a> (QuantizeBatchToSpace)</td></tr>
2632<tr class="separator:aec7cf8e3927ee7d24f8b19d206ce3e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
2633<tr class="memitem:a733ef16d4eaaf8cce338320fa042f526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a733ef16d4eaaf8cce338320fa042f526">BOOST_AUTO_TEST_CASE</a> (QuantizePrelu)</td></tr>
2634<tr class="separator:a733ef16d4eaaf8cce338320fa042f526"><td class="memSeparator" colspan="2">&#160;</td></tr>
2635<tr class="memitem:afa7a0a639e2772ff2ced67d77be810c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a> (bool useBiases)</td></tr>
2636<tr class="separator:afa7a0a639e2772ff2ced67d77be810c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2637<tr class="memitem:a5e66fe270ca921faeecd26735192d08b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5e66fe270ca921faeecd26735192d08b">BOOST_AUTO_TEST_CASE</a> (QuantizeTransposeConvolution2d)</td></tr>
2638<tr class="separator:a5e66fe270ca921faeecd26735192d08b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2639<tr class="memitem:aec82007c45313f59d24b304e35b3db6c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aec82007c45313f59d24b304e35b3db6c">BOOST_AUTO_TEST_CASE</a> (QuantizeTransposeConvolution2dWithBiases)</td></tr>
2640<tr class="separator:aec82007c45313f59d24b304e35b3db6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2641<tr class="memitem:a77cba79eef903eb3d758b4edbcc626ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a77cba79eef903eb3d758b4edbcc626ef">BOOST_AUTO_TEST_CASE</a> (QuantizeStack)</td></tr>
2642<tr class="separator:a77cba79eef903eb3d758b4edbcc626ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
2643<tr class="memitem:a46f313720b601ca97a9c2a5158814bff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46f313720b601ca97a9c2a5158814bff">BOOST_AUTO_TEST_CASE</a> (QuantizeSlice)</td></tr>
2644<tr class="separator:a46f313720b601ca97a9c2a5158814bff"><td class="memSeparator" colspan="2">&#160;</td></tr>
2645<tr class="memitem:a52cbff9d344ba4a1fe01d4da2c1f7ba2"><td class="memItemLeft" align="right" valign="top">std::vector&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a> (float value)</td></tr>
2646<tr class="separator:a52cbff9d344ba4a1fe01d4da2c1f7ba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
2647<tr class="memitem:a728153b62fa66e6ed1243e09144bfe8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a728153b62fa66e6ed1243e09144bfe8c">BOOST_AUTO_TEST_CASE</a> (QuantizeInf)</td></tr>
2648<tr class="separator:a728153b62fa66e6ed1243e09144bfe8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2649<tr class="memitem:a898305dc4cdb78a5fbed481250f6cd35"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a898305dc4cdb78a5fbed481250f6cd35">BOOST_AUTO_TEST_CASE</a> (QuantizeNegativeInf)</td></tr>
2650<tr class="separator:a898305dc4cdb78a5fbed481250f6cd35"><td class="memSeparator" colspan="2">&#160;</td></tr>
2651<tr class="memitem:abe34cf42d7c8515ecd15d11f4aeb399c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a> (const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;dataType)</td></tr>
2652<tr class="separator:abe34cf42d7c8515ecd15d11f4aeb399c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2653<tr class="memitem:a94eb3bdf0e1c8c748c2e29dce048ace4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a94eb3bdf0e1c8c748c2e29dce048ace4">BOOST_AUTO_TEST_CASE</a> (PreserveTypeFloat32)</td></tr>
2654<tr class="separator:a94eb3bdf0e1c8c748c2e29dce048ace4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2655<tr class="memitem:ab242670b85e047e79bb297cdb192cc93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab242670b85e047e79bb297cdb192cc93">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQAsymmU8)</td></tr>
2656<tr class="separator:ab242670b85e047e79bb297cdb192cc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
2657<tr class="memitem:a061891029598224370aae4cd18b78406"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a061891029598224370aae4cd18b78406">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQsymm8)</td></tr>
2658<tr class="separator:a061891029598224370aae4cd18b78406"><td class="memSeparator" colspan="2">&#160;</td></tr>
2659<tr class="memitem:a4d4386cbb19dbc551e423992ecdd0d61"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4d4386cbb19dbc551e423992ecdd0d61">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQsymm16)</td></tr>
2660<tr class="separator:a4d4386cbb19dbc551e423992ecdd0d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
2661<tr class="memitem:a8c09fbb75d2c2dea48926a540fc5cce9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c09fbb75d2c2dea48926a540fc5cce9">BOOST_AUTO_TEST_CASE</a> (TestConnectionPreservationAfterDynamicQuant)</td></tr>
2662<tr class="separator:a8c09fbb75d2c2dea48926a540fc5cce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2663<tr class="memitem:a01fa2d4db2c1b4ee5269a31e514f37ec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a01fa2d4db2c1b4ee5269a31e514f37ec">RuntimeLoadedNetworksReserve</a> (<a class="el" href="classarmnn_1_1_runtime.html">armnn::Runtime</a> *runtime)</td></tr>
2664<tr class="separator:a01fa2d4db2c1b4ee5269a31e514f37ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
2665<tr class="memitem:abe311824d11bad4e6f93c8f94a721052"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abe311824d11bad4e6f93c8f94a721052">boost_test_print_type</a> (std::ostream &amp;ostr, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;right)</td></tr>
2666<tr class="separator:abe311824d11bad4e6f93c8f94a721052"><td class="memSeparator" colspan="2">&#160;</td></tr>
2667<tr class="memitem:af676ec7e9534bd6e6ac3072a2c0403f4"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af676ec7e9534bd6e6ac3072a2c0403f4">boost_test_print_type</a> (std::ostream &amp;ostr, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape)</td></tr>
2668<tr class="separator:af676ec7e9534bd6e6ac3072a2c0403f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2669<tr class="memitem:ad3d9cbf26cb5894fd6d9169dbe743417"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad3d9cbf26cb5894fd6d9169dbe743417">BOOST_AUTO_TEST_CASE</a> (CheckInputLayerVisitorBindingIdAndName)</td></tr>
2670<tr class="separator:ad3d9cbf26cb5894fd6d9169dbe743417"><td class="memSeparator" colspan="2">&#160;</td></tr>
2671<tr class="memitem:ac7ce83f024515592cffac13ae5220f1e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac7ce83f024515592cffac13ae5220f1e">BOOST_AUTO_TEST_CASE</a> (CheckInputLayerVisitorBindingIdAndNameNull)</td></tr>
2672<tr class="separator:ac7ce83f024515592cffac13ae5220f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2673<tr class="memitem:ac28b0a4861e6eab3e7621a7ed4eb5f62"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac28b0a4861e6eab3e7621a7ed4eb5f62">BOOST_AUTO_TEST_CASE</a> (CheckOutputLayerVisitorBindingIdAndName)</td></tr>
2674<tr class="separator:ac28b0a4861e6eab3e7621a7ed4eb5f62"><td class="memSeparator" colspan="2">&#160;</td></tr>
2675<tr class="memitem:a9a7475b081b431ffa9915aac51c2d338"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9a7475b081b431ffa9915aac51c2d338">BOOST_AUTO_TEST_CASE</a> (CheckOutputLayerVisitorBindingIdAndNameNull)</td></tr>
2676<tr class="separator:a9a7475b081b431ffa9915aac51c2d338"><td class="memSeparator" colspan="2">&#160;</td></tr>
2677<tr class="memitem:a5a38bd982292180692711b0ae296bb34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5a38bd982292180692711b0ae296bb34">CheckLayerBindingId</a> (<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> visitorId, <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> id)</td></tr>
2678<tr class="separator:a5a38bd982292180692711b0ae296bb34"><td class="memSeparator" colspan="2">&#160;</td></tr>
2679<tr class="memitem:a5e783a951642781b9e7b55db06a514b7"><td class="memItemLeft" align="right" valign="top">arm_compute::NormalizationLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5e783a951642781b9e7b55db06a514b7">CreateAclNormalizationLayerInfoForL2Normalization</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensorInfo, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout)</td></tr>
2680<tr class="separator:a5e783a951642781b9e7b55db06a514b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2681<tr class="memitem:afdba36f125621d775d471f0daf613df2"><td class="memItemLeft" align="right" valign="top">arm_compute::ActivationLayerInfo::ActivationFunction&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afdba36f125621d775d471f0daf613df2">ConvertActivationFunctionToAclActivationFunction</a> (<a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> armnnFunction)</td></tr>
2682<tr class="separator:afdba36f125621d775d471f0daf613df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
2683<tr class="memitem:ad701d0d29baa4266ab4d33b090aa661c"><td class="memItemLeft" align="right" valign="top">arm_compute::ActivationLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a> (const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;actDesc)</td></tr>
2684<tr class="separator:ad701d0d29baa4266ab4d33b090aa661c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2685<tr class="memitem:ad256fcf8c7f4d5a240fa47f0b56d50af"><td class="memItemLeft" align="right" valign="top">arm_compute::PoolingType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad256fcf8c7f4d5a240fa47f0b56d50af">ConvertPoolingAlgorithmToAclPoolingType</a> (<a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> poolingAlgorithm)</td></tr>
2686<tr class="separator:ad256fcf8c7f4d5a240fa47f0b56d50af"><td class="memSeparator" colspan="2">&#160;</td></tr>
2687<tr class="memitem:a8f3bfacadfd6d2146d6ccd299dabc7aa"><td class="memItemLeft" align="right" valign="top">arm_compute::DimensionRoundingType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8f3bfacadfd6d2146d6ccd299dabc7aa">ConvertOutputShapeRoundingToAclDimensionRoundingType</a> (<a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> rounding)</td></tr>
2688<tr class="separator:a8f3bfacadfd6d2146d6ccd299dabc7aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2689<tr class="memitem:aa5baabb8e3a4aa6cbdcab419d743e747"><td class="memItemLeft" align="right" valign="top">arm_compute::NormType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa5baabb8e3a4aa6cbdcab419d743e747">ConvertNormalizationAlgorithmChannelToAclNormType</a> (<a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> channelType)</td></tr>
2690<tr class="separator:aa5baabb8e3a4aa6cbdcab419d743e747"><td class="memSeparator" colspan="2">&#160;</td></tr>
2691<tr class="memitem:abccab9266ab13dbd806445af31ddbba7"><td class="memItemLeft" align="right" valign="top">arm_compute::FullyConnectedLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a> (const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;fullyConnectedDesc)</td></tr>
2692<tr class="separator:abccab9266ab13dbd806445af31ddbba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2693<tr class="memitem:ae9bdcb8ac91731109dc423d6ed476204"><td class="memItemLeft" align="right" valign="top">arm_compute::InterpolationPolicy&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a> (<a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> resizeMethod)</td></tr>
2694<tr class="separator:ae9bdcb8ac91731109dc423d6ed476204"><td class="memSeparator" colspan="2">&#160;</td></tr>
2695<tr class="memitem:aa70ebe7b7898fe69ce24db803caa373e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a> (const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;softmaxDesc, const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensor)</td></tr>
2696<tr class="separator:aa70ebe7b7898fe69ce24db803caa373e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2697<tr class="memitem:a8cbabc875597b3bed0ccdc0adb289fde"><td class="memItemLeft" align="right" valign="top">std::set&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8cbabc875597b3bed0ccdc0adb289fde">ComputeSplitAxis</a> (const <a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a> &amp;desc, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;input)</td></tr>
2698<tr class="separator:a8cbabc875597b3bed0ccdc0adb289fde"><td class="memSeparator" colspan="2">&#160;</td></tr>
2699<tr class="memitem:a36e8f52330a21eeab3cc7c4e030f3583"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a36e8f52330a21eeab3cc7c4e030f3583">GetUnpaddedTensorStrides</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;tensorInfo)</td></tr>
2700<tr class="separator:a36e8f52330a21eeab3cc7c4e030f3583"><td class="memSeparator" colspan="2">&#160;</td></tr>
2701<tr class="memitem:a83c4a275acf59f62b8387f389d0929d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a83c4a275acf59f62b8387f389d0929d5">GetBiasTypeFromWeightsType</a> (<a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt; weightsType)</td></tr>
2702<tr class="separator:a83c4a275acf59f62b8387f389d0929d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2703<tr class="memitem:acea2d8c53b441e24b6d60b090fda37c9"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
2704<tr class="memitem:acea2d8c53b441e24b6d60b090fda37c9"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acea2d8c53b441e24b6d60b090fda37c9">CheckSupportRule</a> (F rule, <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, const char *reason)</td></tr>
2705<tr class="separator:acea2d8c53b441e24b6d60b090fda37c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2706<tr class="memitem:a5980f7b42f4df041efebdc6ae242f686"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2707<tr class="memitem:a5980f7b42f4df041efebdc6ae242f686"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5980f7b42f4df041efebdc6ae242f686">AllTypesAreEqualImpl</a> (T)</td></tr>
2708<tr class="separator:a5980f7b42f4df041efebdc6ae242f686"><td class="memSeparator" colspan="2">&#160;</td></tr>
2709<tr class="memitem:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Rest&gt; </td></tr>
2710<tr class="memitem:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2a0bcfb4df0a03357b4cbb8d9e89a3da">AllTypesAreEqualImpl</a> (T t1, T t2, Rest... rest)</td></tr>
2711<tr class="separator:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memSeparator" colspan="2">&#160;</td></tr>
2712<tr class="memitem:a17955517b0d148f7ffdbffe8b46e41e0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a17955517b0d148f7ffdbffe8b46e41e0">MockBackendId</a> ()</td></tr>
2713<tr class="separator:a17955517b0d148f7ffdbffe8b46e41e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2714<tr class="memitem:a872803f5667392efc3c8e5607bd453ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a872803f5667392efc3c8e5607bd453ad">GetBiasDataType</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> inputDataType)</td></tr>
2715<tr class="separator:a872803f5667392efc3c8e5607bd453ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
2716<tr class="memitem:a2a9ac8ebb69307ad4ec894ffa0523dbf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2a9ac8ebb69307ad4ec894ffa0523dbf">PermuteTensor</a> (const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *tensor, const <a class="el" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a> &amp;permutationVector, void *permuteBuffer)</td></tr>
2717<tr class="separator:a2a9ac8ebb69307ad4ec894ffa0523dbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2718<tr class="memitem:a3170fdd696155a247ecd81d445c0e2e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a> (<a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weightInfo, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
2719<tr class="separator:a3170fdd696155a247ecd81d445c0e2e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2720<tr class="memitem:a52b301fd3adce20b51c4482cb52f1a38"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
2721<tr class="memitem:a52b301fd3adce20b51c4482cb52f1a38"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a52b301fd3adce20b51c4482cb52f1a38">ReorderWeightChannelsForAcl</a> (const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;weightHandle, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, void *permuteBuffer)</td></tr>
2722<tr class="separator:a52b301fd3adce20b51c4482cb52f1a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
2723<tr class="memitem:a1e8288eac7e909fdb58b6113d816763a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weightInfo, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
2724<tr class="separator:a1e8288eac7e909fdb58b6113d816763a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2725<tr class="memitem:a51e8b95a429e11678ffa8b9fdc88351b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a51e8b95a429e11678ffa8b9fdc88351b">ConvertWeightTensorFromArmnnToAcl</a> (const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *weightTensor, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, void *permuteBuffer)</td></tr>
2726<tr class="separator:a51e8b95a429e11678ffa8b9fdc88351b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2727<tr class="memitem:ad69ffa576a596b9eb20ab6a41420c541"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a> (int32_t mask, int32_t numDim)</td></tr>
2728<tr class="separator:ad69ffa576a596b9eb20ab6a41420c541"><td class="memSeparator" colspan="2">&#160;</td></tr>
2729<tr class="memitem:a92c91193007aa49f4732d6dba5397f8d"><td class="memTemplParams" colspan="2">template&lt;typename CopyFunc &gt; </td></tr>
2730<tr class="memitem:a92c91193007aa49f4732d6dba5397f8d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a92c91193007aa49f4732d6dba5397f8d">CopyTensorContentsGeneric</a> (const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *srcTensor, <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *dstTensor, CopyFunc copy)</td></tr>
2731<tr class="separator:a92c91193007aa49f4732d6dba5397f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2732<tr class="memitem:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memTemplParams" colspan="2">template&lt;typename SrcTensorHandleType , typename DstTensorHandleType , typename DescriptorType &gt; </td></tr>
2733<tr class="memitem:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afb5b53a8b0c01d4f27830bef0f25ca09">GatherTensorHandlePairs</a> (const DescriptorType &amp;descriptor, std::vector&lt; std::pair&lt; SrcTensorHandleType *, DstTensorHandleType *&gt;&gt; &amp;tensorHandlePairs)</td></tr>
2734<tr class="separator:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memSeparator" colspan="2">&#160;</td></tr>
2735<tr class="memitem:a27ecdfeeea12de313f2b97d309a35d9d"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a27ecdfeeea12de313f2b97d309a35d9d">LowerString</a> (std::string value)</td></tr>
2736<tr class="separator:a27ecdfeeea12de313f2b97d309a35d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2737<tr class="memitem:a3ca05ac77af0a0444ff34c1319094f6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3ca05ac77af0a0444ff34c1319094f6d">ParseTuningLevel</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;value, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> defaultValue)</td></tr>
2738<tr class="separator:a3ca05ac77af0a0444ff34c1319094f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2739<tr class="memitem:af464d406b22309a891ed0aa3008a7953"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af464d406b22309a891ed0aa3008a7953">ParseBoolean</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;value, bool defaultValue)</td></tr>
2740<tr class="separator:af464d406b22309a891ed0aa3008a7953"><td class="memSeparator" colspan="2">&#160;</td></tr>
2741<tr class="memitem:a4e9a59f936f3d2050a17597d22825f53"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4e9a59f936f3d2050a17597d22825f53">ParseFile</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;value, std::string defaultValue)</td></tr>
2742<tr class="separator:a4e9a59f936f3d2050a17597d22825f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
2743<tr class="memitem:af457790132251cde6545072d879c7684"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
2744<tr class="memitem:af457790132251cde6545072d879c7684"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af457790132251cde6545072d879c7684">ParseOptions</a> (const std::vector&lt; <a class="el" href="structarmnn_1_1_backend_options.html">BackendOptions</a> &gt; &amp;<a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>, <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> backend, F f)</td></tr>
2745<tr class="separator:af457790132251cde6545072d879c7684"><td class="memSeparator" colspan="2">&#160;</td></tr>
2746<tr class="memitem:ab562537b5c1ef1e6cde9db9f5fa322bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab562537b5c1ef1e6cde9db9f5fa322bd">ConfigureTuner</a> (arm_compute::CLTuner &amp;tuner, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> level)</td></tr>
2747<tr class="separator:ab562537b5c1ef1e6cde9db9f5fa322bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2748<tr class="memitem:adfe10e7086e3e3b98927cf84aee03dd0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adfe10e7086e3e3b98927cf84aee03dd0">ClBackendId</a> ()</td></tr>
2749<tr class="separator:adfe10e7086e3e3b98927cf84aee03dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2750<tr class="memitem:ac86fc56b9a27576bfe930a7012a402d5"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac86fc56b9a27576bfe930a7012a402d5">ClTensorHandleFactoryId</a> ()</td></tr>
2751<tr class="separator:ac86fc56b9a27576bfe930a7012a402d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2752<tr class="memitem:a1391582cd6e145b67c98f3410667968e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1391582cd6e145b67c98f3410667968e">ClAbsWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2753<tr class="separator:a1391582cd6e145b67c98f3410667968e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2754<tr class="memitem:a42ef3cee193102dc7755193579209cca"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a42ef3cee193102dc7755193579209cca">ClActivationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor)</td></tr>
2755<tr class="separator:a42ef3cee193102dc7755193579209cca"><td class="memSeparator" colspan="2">&#160;</td></tr>
2756<tr class="memitem:aefc82adf365ff14b0095dafdd2df6afc"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aefc82adf365ff14b0095dafdd2df6afc">ClAdditionValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2757<tr class="separator:aefc82adf365ff14b0095dafdd2df6afc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2758<tr class="memitem:ab80423b306d8e0436b9a316922911d4d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab80423b306d8e0436b9a316922911d4d">ClArgMinMaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;descriptor)</td></tr>
2759<tr class="separator:ab80423b306d8e0436b9a316922911d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2760<tr class="memitem:ad6cb42ca5150bb96c151e4a4e6557d70"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad6cb42ca5150bb96c151e4a4e6557d70">ClBatchNormalizationValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;desc)</td></tr>
2761<tr class="separator:ad6cb42ca5150bb96c151e4a4e6557d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
2762<tr class="memitem:a67957983877fb2c720a2ad7f88c45a3c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a67957983877fb2c720a2ad7f88c45a3c">ClBatchToSpaceNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;desc)</td></tr>
2763<tr class="separator:a67957983877fb2c720a2ad7f88c45a3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2764<tr class="memitem:a7782f0809076f14363eacb4a38964b9f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7782f0809076f14363eacb4a38964b9f">ClConcatWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor)</td></tr>
2765<tr class="separator:a7782f0809076f14363eacb4a38964b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2766<tr class="memitem:a46efae0191388fd33db4e95c5d79e2be"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46efae0191388fd33db4e95c5d79e2be">ClConvertFp16ToFp32WorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2767<tr class="separator:a46efae0191388fd33db4e95c5d79e2be"><td class="memSeparator" colspan="2">&#160;</td></tr>
2768<tr class="memitem:a37f6946bfb7a9c7d64881b7a2e13945f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a37f6946bfb7a9c7d64881b7a2e13945f">ClConvertFp32ToFp16WorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2769<tr class="separator:a37f6946bfb7a9c7d64881b7a2e13945f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2770<tr class="memitem:acd1146eb56f1473a0bf4561bcc1d1529"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acd1146eb56f1473a0bf4561bcc1d1529">ClConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
2771<tr class="separator:acd1146eb56f1473a0bf4561bcc1d1529"><td class="memSeparator" colspan="2">&#160;</td></tr>
2772<tr class="memitem:a5634af98b603236c6748adb5ac92e766"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5634af98b603236c6748adb5ac92e766">ClDepthToSpaceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;desc)</td></tr>
2773<tr class="separator:a5634af98b603236c6748adb5ac92e766"><td class="memSeparator" colspan="2">&#160;</td></tr>
2774<tr class="memitem:a4ec5dfcb3e419ddce1fcb3b799f312e1"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4ec5dfcb3e419ddce1fcb3b799f312e1">ClDepthwiseConvolutionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
2775<tr class="separator:a4ec5dfcb3e419ddce1fcb3b799f312e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2776<tr class="memitem:a75045734c29d7d6635342c05adbc151b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a75045734c29d7d6635342c05adbc151b">ClDequantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2777<tr class="separator:a75045734c29d7d6635342c05adbc151b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2778<tr class="memitem:a6a0edac987d58b405636df2eb2ee525d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a0edac987d58b405636df2eb2ee525d">ClDivisionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2779<tr class="separator:a6a0edac987d58b405636df2eb2ee525d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2780<tr class="memitem:a8874961260f35da85229554f92e16ca9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8874961260f35da85229554f92e16ca9">ClFloorWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2781<tr class="separator:a8874961260f35da85229554f92e16ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2782<tr class="memitem:a00ef2c55913f952924a3e23556655285"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a00ef2c55913f952924a3e23556655285">ClFullyConnectedWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;descriptor)</td></tr>
2783<tr class="separator:a00ef2c55913f952924a3e23556655285"><td class="memSeparator" colspan="2">&#160;</td></tr>
2784<tr class="memitem:acf69869c2242e5e3741c4f9252099393"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acf69869c2242e5e3741c4f9252099393">ClGreaterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2785<tr class="separator:acf69869c2242e5e3741c4f9252099393"><td class="memSeparator" colspan="2">&#160;</td></tr>
2786<tr class="memitem:a79d362f0c6e04d51807e0d81b5b05f3a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a79d362f0c6e04d51807e0d81b5b05f3a">ClInstanceNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;descriptor)</td></tr>
2787<tr class="separator:a79d362f0c6e04d51807e0d81b5b05f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2788<tr class="memitem:aef334cdb24000c330f4d2e5f1b384784"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aef334cdb24000c330f4d2e5f1b384784">ClL2NormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;descriptor)</td></tr>
2789<tr class="separator:aef334cdb24000c330f4d2e5f1b384784"><td class="memSeparator" colspan="2">&#160;</td></tr>
2790<tr class="memitem:a90ab88fe4c7aa9466c4653404a6b2213"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a90ab88fe4c7aa9466c4653404a6b2213">ClLstmFloatWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
2791<tr class="separator:a90ab88fe4c7aa9466c4653404a6b2213"><td class="memSeparator" colspan="2">&#160;</td></tr>
2792<tr class="memitem:a553706c6338ffc52b0d916859f642587"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a553706c6338ffc52b0d916859f642587">ClMaximumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2793<tr class="separator:a553706c6338ffc52b0d916859f642587"><td class="memSeparator" colspan="2">&#160;</td></tr>
2794<tr class="memitem:aa1fff3c5bdebee27ad33aacc6d110d32"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa1fff3c5bdebee27ad33aacc6d110d32">ClMeanValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;desc)</td></tr>
2795<tr class="separator:aa1fff3c5bdebee27ad33aacc6d110d32"><td class="memSeparator" colspan="2">&#160;</td></tr>
2796<tr class="memitem:a8c04c8e796a4fbec706df42ed9c27e4e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c04c8e796a4fbec706df42ed9c27e4e">ClMinimumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2797<tr class="separator:a8c04c8e796a4fbec706df42ed9c27e4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2798<tr class="memitem:a674a280a55c3760374a05ee24e9e3e74"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a674a280a55c3760374a05ee24e9e3e74">ClMultiplicationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2799<tr class="separator:a674a280a55c3760374a05ee24e9e3e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
2800<tr class="memitem:a144c2e243a255715f309999077ed1792"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a144c2e243a255715f309999077ed1792">ClNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;descriptor)</td></tr>
2801<tr class="separator:a144c2e243a255715f309999077ed1792"><td class="memSeparator" colspan="2">&#160;</td></tr>
2802<tr class="memitem:adcf7b7d939bac1cfaeb333c7b3175bb8"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adcf7b7d939bac1cfaeb333c7b3175bb8">ClPadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;descriptor)</td></tr>
2803<tr class="separator:adcf7b7d939bac1cfaeb333c7b3175bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2804<tr class="memitem:a26c25df9e2271333ab4d4ef71db41dca"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a26c25df9e2271333ab4d4ef71db41dca">ClPermuteWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;descriptor)</td></tr>
2805<tr class="separator:a26c25df9e2271333ab4d4ef71db41dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
2806<tr class="memitem:a8a21bb33f7f054ce7b48a8c7df9e6d4a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8a21bb33f7f054ce7b48a8c7df9e6d4a">ClPooling2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;descriptor)</td></tr>
2807<tr class="separator:a8a21bb33f7f054ce7b48a8c7df9e6d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2808<tr class="memitem:ae58d1f4437a779274037bc86efac9e26"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae58d1f4437a779274037bc86efac9e26">ClPreluWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2809<tr class="separator:ae58d1f4437a779274037bc86efac9e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
2810<tr class="memitem:a5fb7fe07abfb2373103d842b47a24726"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5fb7fe07abfb2373103d842b47a24726">ClQuantizedLstmWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousCellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;previousOutputIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
2811<tr class="separator:a5fb7fe07abfb2373103d842b47a24726"><td class="memSeparator" colspan="2">&#160;</td></tr>
2812<tr class="memitem:a9c1b478e30a1e8a4ecac874cf15f13d4"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9c1b478e30a1e8a4ecac874cf15f13d4">ClQuantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2813<tr class="separator:a9c1b478e30a1e8a4ecac874cf15f13d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2814<tr class="memitem:af5bb7a834a74983cbbc249785d0c392b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af5bb7a834a74983cbbc249785d0c392b">ClReshapeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2815<tr class="separator:af5bb7a834a74983cbbc249785d0c392b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2816<tr class="memitem:a95b187d3c6b7b46f4fbdc60be69fc02c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a95b187d3c6b7b46f4fbdc60be69fc02c">ClResizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;descriptor)</td></tr>
2817<tr class="separator:a95b187d3c6b7b46f4fbdc60be69fc02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2818<tr class="memitem:a3f6f9f0d3567ae04b49ea88727845900"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3f6f9f0d3567ae04b49ea88727845900">ClRsqrtWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2819<tr class="separator:a3f6f9f0d3567ae04b49ea88727845900"><td class="memSeparator" colspan="2">&#160;</td></tr>
2820<tr class="memitem:a6d85d2806d0a90140832ad8113c1d350"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6d85d2806d0a90140832ad8113c1d350">ClSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;descriptor)</td></tr>
2821<tr class="separator:a6d85d2806d0a90140832ad8113c1d350"><td class="memSeparator" colspan="2">&#160;</td></tr>
2822<tr class="memitem:abc6f7e5fe77e5aed3f7842755dd34073"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abc6f7e5fe77e5aed3f7842755dd34073">ClSoftmaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor)</td></tr>
2823<tr class="separator:abc6f7e5fe77e5aed3f7842755dd34073"><td class="memSeparator" colspan="2">&#160;</td></tr>
2824<tr class="memitem:a534b28fd4b345bbc938d055ff5b8970f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a534b28fd4b345bbc938d055ff5b8970f">ClSpaceToBatchNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;descriptor)</td></tr>
2825<tr class="separator:a534b28fd4b345bbc938d055ff5b8970f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2826<tr class="memitem:a5f81bc4e5533cfe99932865bd102735c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5f81bc4e5533cfe99932865bd102735c">ClSpaceToDepthWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;desc)</td></tr>
2827<tr class="separator:a5f81bc4e5533cfe99932865bd102735c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2828<tr class="memitem:a3ac8a60f837b19b20987e4fd238ce0cd"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3ac8a60f837b19b20987e4fd238ce0cd">ClSplitterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;outputs, unsigned int splitAxis)</td></tr>
2829<tr class="separator:a3ac8a60f837b19b20987e4fd238ce0cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2830<tr class="memitem:a8c9fec997dbb5db4cdb433c36d075782"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8c9fec997dbb5db4cdb433c36d075782">ClStackWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;descriptor)</td></tr>
2831<tr class="separator:a8c9fec997dbb5db4cdb433c36d075782"><td class="memSeparator" colspan="2">&#160;</td></tr>
2832<tr class="memitem:a157e0508f6d6d08e3ca4cf6c661242e6"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a157e0508f6d6d08e3ca4cf6c661242e6">ClStridedSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;descriptor)</td></tr>
2833<tr class="separator:a157e0508f6d6d08e3ca4cf6c661242e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2834<tr class="memitem:a3bbbf958387c788549b0d8481232875f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3bbbf958387c788549b0d8481232875f">ClSubtractionValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2835<tr class="separator:a3bbbf958387c788549b0d8481232875f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2836<tr class="memitem:a719ea81939d6a25f8636b52c59165d66"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a719ea81939d6a25f8636b52c59165d66">ClTransposeConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
2837<tr class="separator:a719ea81939d6a25f8636b52c59165d66"><td class="memSeparator" colspan="2">&#160;</td></tr>
2838<tr class="memitem:a73447f827b995cf90d4029151514b4ba"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2839<tr class="memitem:a73447f827b995cf90d4029151514b4ba"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a> (arm_compute::CLTensor &amp;dstTensor, const T *srcData)</td></tr>
2840<tr class="separator:a73447f827b995cf90d4029151514b4ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
2841<tr class="memitem:a6d4bdf4368a1422943f8f2b1740ec491"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6d4bdf4368a1422943f8f2b1740ec491">SetClStridedSliceData</a> (const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</td></tr>
2842<tr class="separator:a6d4bdf4368a1422943f8f2b1740ec491"><td class="memSeparator" colspan="2">&#160;</td></tr>
2843<tr class="memitem:a460e01ad4cd0bfa6bde4eccaf0e77220"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a460e01ad4cd0bfa6bde4eccaf0e77220">SetClSliceData</a> (const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</td></tr>
2844<tr class="separator:a460e01ad4cd0bfa6bde4eccaf0e77220"><td class="memSeparator" colspan="2">&#160;</td></tr>
2845<tr class="memitem:a46747c3d0b99968be0b37d74bc9687dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46747c3d0b99968be0b37d74bc9687dd">InitializeArmComputeClTensorData</a> (arm_compute::CLTensor &amp;clTensor, const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *handle)</td></tr>
2846<tr class="separator:a46747c3d0b99968be0b37d74bc9687dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2847<tr class="memitem:a2192b5ff59aacdb27f8b0238323915dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_runtime_exception.html">RuntimeException</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2192b5ff59aacdb27f8b0238323915dc">WrapClError</a> (const <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a> &amp;clError, const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;location)</td></tr>
2848<tr class="separator:a2192b5ff59aacdb27f8b0238323915dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2849<tr class="memitem:aff5bee79757341daf750c7dd7c123a15"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aff5bee79757341daf750c7dd7c123a15">RunClFunction</a> (arm_compute::IFunction &amp;function, const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;location)</td></tr>
2850<tr class="separator:aff5bee79757341daf750c7dd7c123a15"><td class="memSeparator" colspan="2">&#160;</td></tr>
2851<tr class="memitem:a3a34a305e5187f3a3c67030d3bebbdb0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3a34a305e5187f3a3c67030d3bebbdb0">NeonBackendId</a> ()</td></tr>
2852<tr class="separator:a3a34a305e5187f3a3c67030d3bebbdb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2853<tr class="memitem:aad5d4888304a57fb22c4608dc5d94dc1"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aad5d4888304a57fb22c4608dc5d94dc1">NeonTensorHandleFactoryId</a> ()</td></tr>
2854<tr class="separator:aad5d4888304a57fb22c4608dc5d94dc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2855<tr class="memitem:afc773aec6f845adc0cc547ce475dfe3f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afc773aec6f845adc0cc547ce475dfe3f">NeonAbsWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2856<tr class="separator:afc773aec6f845adc0cc547ce475dfe3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2857<tr class="memitem:a46495807633a01d826851e1cb498f071"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a46495807633a01d826851e1cb498f071">NeonActivationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;descriptor)</td></tr>
2858<tr class="separator:a46495807633a01d826851e1cb498f071"><td class="memSeparator" colspan="2">&#160;</td></tr>
2859<tr class="memitem:afc541536011ccfb06853c45bfaba2dfd"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#afc541536011ccfb06853c45bfaba2dfd">NeonAdditionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2860<tr class="separator:afc541536011ccfb06853c45bfaba2dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2861<tr class="memitem:a61d1f39297fec6e3062e4047dc5f236e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a61d1f39297fec6e3062e4047dc5f236e">NeonArgMinMaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;descriptor)</td></tr>
2862<tr class="separator:a61d1f39297fec6e3062e4047dc5f236e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2863<tr class="memitem:a6c856ceba1828fe201b2b6c032d70371"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6c856ceba1828fe201b2b6c032d70371">NeonBatchNormalizationValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;descriptor)</td></tr>
2864<tr class="separator:a6c856ceba1828fe201b2b6c032d70371"><td class="memSeparator" colspan="2">&#160;</td></tr>
2865<tr class="memitem:a00623eeb8f77dac6dbbc1395b5270dbb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a00623eeb8f77dac6dbbc1395b5270dbb">NeonBatchToSpaceNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;desc)</td></tr>
2866<tr class="separator:a00623eeb8f77dac6dbbc1395b5270dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2867<tr class="memitem:a8a219633e750d6daffcef3b641fa11f3"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8a219633e750d6daffcef3b641fa11f3">NeonConcatWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;descriptor)</td></tr>
2868<tr class="separator:a8a219633e750d6daffcef3b641fa11f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2869<tr class="memitem:af64bb043263ba7d09c98fd88da60726d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af64bb043263ba7d09c98fd88da60726d">NeonConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
2870<tr class="separator:af64bb043263ba7d09c98fd88da60726d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2871<tr class="memitem:a116d88067bf98ce9858ab73e68f605f9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a116d88067bf98ce9858ab73e68f605f9">NeonDepthToSpaceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;descriptor)</td></tr>
2872<tr class="separator:a116d88067bf98ce9858ab73e68f605f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2873<tr class="memitem:a168ebb908e1ee4bac24cb7992510de73"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a168ebb908e1ee4bac24cb7992510de73">NeonDepthwiseConvolutionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
2874<tr class="separator:a168ebb908e1ee4bac24cb7992510de73"><td class="memSeparator" colspan="2">&#160;</td></tr>
2875<tr class="memitem:acefede7cc57c71ea4cfe1c888bb413e0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acefede7cc57c71ea4cfe1c888bb413e0">NeonDequantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2876<tr class="separator:acefede7cc57c71ea4cfe1c888bb413e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2877<tr class="memitem:ae0ae21bef03ed19f252c72c660e571a4"><td class="memItemLeft" align="right" valign="top">arm_compute::DetectionPostProcessLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae0ae21bef03ed19f252c72c660e571a4">MakeInfo</a> (const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;desc)</td></tr>
2878<tr class="separator:ae0ae21bef03ed19f252c72c660e571a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2879<tr class="memitem:a304243ccb52986da06388dc57deae88f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a304243ccb52986da06388dc57deae88f">NeonDetectionPostProcessValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionBoxes, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionClasses, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionScores, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;numDetections, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;desc)</td></tr>
2880<tr class="separator:a304243ccb52986da06388dc57deae88f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2881<tr class="memitem:a3a62359fc5ebfe9628871c0ba79fb37c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3a62359fc5ebfe9628871c0ba79fb37c">NeonDivisionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2882<tr class="separator:a3a62359fc5ebfe9628871c0ba79fb37c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2883<tr class="memitem:a0b7897a2a04016aa7fa24e2a1d10e944"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0b7897a2a04016aa7fa24e2a1d10e944">NeonFullyConnectedWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;descriptor)</td></tr>
2884<tr class="separator:a0b7897a2a04016aa7fa24e2a1d10e944"><td class="memSeparator" colspan="2">&#160;</td></tr>
2885<tr class="memitem:ad536149438b0481b7278ad741e18fb5a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad536149438b0481b7278ad741e18fb5a">NeonGreaterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2886<tr class="separator:ad536149438b0481b7278ad741e18fb5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2887<tr class="memitem:aea722abe239545030f4c6fe4e083816f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aea722abe239545030f4c6fe4e083816f">NeonInstanceNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;descriptor)</td></tr>
2888<tr class="separator:aea722abe239545030f4c6fe4e083816f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2889<tr class="memitem:ae838df3960d2b5d18d73ed2a07aee917"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae838df3960d2b5d18d73ed2a07aee917">NeonL2NormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;descriptor)</td></tr>
2890<tr class="separator:ae838df3960d2b5d18d73ed2a07aee917"><td class="memSeparator" colspan="2">&#160;</td></tr>
2891<tr class="memitem:a9e06cc2a2ac8b88fc72972695a17910f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a9e06cc2a2ac8b88fc72972695a17910f">NeonLstmFloatWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
2892<tr class="separator:a9e06cc2a2ac8b88fc72972695a17910f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2893<tr class="memitem:a8d2ea79addd8ef64be2ca0dad3408f00"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8d2ea79addd8ef64be2ca0dad3408f00">NeonMaximumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2894<tr class="separator:a8d2ea79addd8ef64be2ca0dad3408f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
2895<tr class="memitem:ab81dd6d40850f8fea025ee7ce51f86d0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab81dd6d40850f8fea025ee7ce51f86d0">NeonMeanWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;desc)</td></tr>
2896<tr class="separator:ab81dd6d40850f8fea025ee7ce51f86d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2897<tr class="memitem:ab81159ebfa638af1b91fe1e8c5de1955"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab81159ebfa638af1b91fe1e8c5de1955">NeonMinimumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2898<tr class="separator:ab81159ebfa638af1b91fe1e8c5de1955"><td class="memSeparator" colspan="2">&#160;</td></tr>
2899<tr class="memitem:a38bdbed2a1e28ab15cac0cc0f42c3fa6"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a38bdbed2a1e28ab15cac0cc0f42c3fa6">NeonMultiplicationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2900<tr class="separator:a38bdbed2a1e28ab15cac0cc0f42c3fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2901<tr class="memitem:a2ec6297db90d1d4c258c13d2d72b13d9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2ec6297db90d1d4c258c13d2d72b13d9">NeonNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;descriptor)</td></tr>
2902<tr class="separator:a2ec6297db90d1d4c258c13d2d72b13d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2903<tr class="memitem:a39209c0c078e83227222eb885317c2c5"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a39209c0c078e83227222eb885317c2c5">NeonPadWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;descriptor)</td></tr>
2904<tr class="separator:a39209c0c078e83227222eb885317c2c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2905<tr class="memitem:a70650f6b1d3b8511fcdb989ca769cdbb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a70650f6b1d3b8511fcdb989ca769cdbb">NeonPermuteWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;descriptor)</td></tr>
2906<tr class="separator:a70650f6b1d3b8511fcdb989ca769cdbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2907<tr class="memitem:a1f07655db8ad7f2738bb0d3d9e2316cc"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1f07655db8ad7f2738bb0d3d9e2316cc">NeonPooling2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;descriptor)</td></tr>
2908<tr class="separator:a1f07655db8ad7f2738bb0d3d9e2316cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2909<tr class="memitem:a188adc104b16db3dc23ed2c5ff06cbb8"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a188adc104b16db3dc23ed2c5ff06cbb8">NeonPreluWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2910<tr class="separator:a188adc104b16db3dc23ed2c5ff06cbb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2911<tr class="memitem:ae83632e641892ad2de78f316376f6bd0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae83632e641892ad2de78f316376f6bd0">NeonQuantizedLstmWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
2912<tr class="separator:ae83632e641892ad2de78f316376f6bd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2913<tr class="memitem:a4d1e35c8bbe48e99dd522ac0f75f77d7"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4d1e35c8bbe48e99dd522ac0f75f77d7">NeonQuantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2914<tr class="separator:a4d1e35c8bbe48e99dd522ac0f75f77d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2915<tr class="memitem:a430021076042c8157a926a3bb3a37152"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a430021076042c8157a926a3bb3a37152">NeonReshapeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2916<tr class="separator:a430021076042c8157a926a3bb3a37152"><td class="memSeparator" colspan="2">&#160;</td></tr>
2917<tr class="memitem:a552d65f4e0a6c9e7c7796e77590063e9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a552d65f4e0a6c9e7c7796e77590063e9">NeonResizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;descriptor)</td></tr>
2918<tr class="separator:a552d65f4e0a6c9e7c7796e77590063e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2919<tr class="memitem:aa7d1b5e38aa8cb731519ff12e2a73350"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa7d1b5e38aa8cb731519ff12e2a73350">NeonRsqrtWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2920<tr class="separator:aa7d1b5e38aa8cb731519ff12e2a73350"><td class="memSeparator" colspan="2">&#160;</td></tr>
2921<tr class="memitem:a0a223c0997e3f7faa373ed55f954252b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a0a223c0997e3f7faa373ed55f954252b">NeonSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;descriptor)</td></tr>
2922<tr class="separator:a0a223c0997e3f7faa373ed55f954252b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2923<tr class="memitem:a4077a9771ba9c551f4ce61863f65e798"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4077a9771ba9c551f4ce61863f65e798">NeonSoftmaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;descriptor)</td></tr>
2924<tr class="separator:a4077a9771ba9c551f4ce61863f65e798"><td class="memSeparator" colspan="2">&#160;</td></tr>
2925<tr class="memitem:ab29257da888af2c4971db1344d8a526c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab29257da888af2c4971db1344d8a526c">NeonSpaceToBatchNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;descriptor)</td></tr>
2926<tr class="separator:ab29257da888af2c4971db1344d8a526c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2927<tr class="memitem:af6d2d40482240def4614deb694933d1e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af6d2d40482240def4614deb694933d1e">NeonSpaceToDepthWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;descriptor)</td></tr>
2928<tr class="separator:af6d2d40482240def4614deb694933d1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2929<tr class="memitem:aab5ea316b3decb05430323d847e3a773"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aab5ea316b3decb05430323d847e3a773">NeonSplitterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;outputs, unsigned int splitAxis)</td></tr>
2930<tr class="separator:aab5ea316b3decb05430323d847e3a773"><td class="memSeparator" colspan="2">&#160;</td></tr>
2931<tr class="memitem:a65c83c74bdbd66cdd547d331998952eb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a65c83c74bdbd66cdd547d331998952eb">NeonStackWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;descriptor)</td></tr>
2932<tr class="separator:a65c83c74bdbd66cdd547d331998952eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2933<tr class="memitem:ac71d08bf1257807c112b4d019802acc3"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac71d08bf1257807c112b4d019802acc3">NeonStridedSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;descriptor)</td></tr>
2934<tr class="separator:ac71d08bf1257807c112b4d019802acc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2935<tr class="memitem:a73c15f02c46f64c1adf0fafb4c7c2cac"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a73c15f02c46f64c1adf0fafb4c7c2cac">NeonSubtractionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output)</td></tr>
2936<tr class="separator:a73c15f02c46f64c1adf0fafb4c7c2cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
2937<tr class="memitem:abc73c3c9a09f91c22c64d7c166e9be4d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abc73c3c9a09f91c22c64d7c166e9be4d">NeonTransposeConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;biases)</td></tr>
2938<tr class="separator:abc73c3c9a09f91c22c64d7c166e9be4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2939<tr class="memitem:a1351e01f9fb983937caf79e353142b41"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2940<tr class="memitem:a1351e01f9fb983937caf79e353142b41"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a> (arm_compute::Tensor &amp;dstTensor, const T *srcData)</td></tr>
2941<tr class="separator:a1351e01f9fb983937caf79e353142b41"><td class="memSeparator" colspan="2">&#160;</td></tr>
2942<tr class="memitem:ad9aa8d49d42ada3f757290033af39857"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad9aa8d49d42ada3f757290033af39857">InitializeArmComputeTensorData</a> (arm_compute::Tensor &amp;tensor, const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *handle)</td></tr>
2943<tr class="separator:ad9aa8d49d42ada3f757290033af39857"><td class="memSeparator" colspan="2">&#160;</td></tr>
2944<tr class="memitem:a01d1e745f360ccd0b655214645bcef32"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a01d1e745f360ccd0b655214645bcef32">SetNeonStridedSliceData</a> (const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</td></tr>
2945<tr class="separator:a01d1e745f360ccd0b655214645bcef32"><td class="memSeparator" colspan="2">&#160;</td></tr>
2946<tr class="memitem:ab40e30cea5a328a3c35aa32f9b7db1c1"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab40e30cea5a328a3c35aa32f9b7db1c1">SetNeonSliceData</a> (const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</td></tr>
2947<tr class="separator:ab40e30cea5a328a3c35aa32f9b7db1c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2948<tr class="memitem:ae7d50846b2769f81521af24d063bc093"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae7d50846b2769f81521af24d063bc093">RefBackendId</a> ()</td></tr>
2949<tr class="separator:ae7d50846b2769f81521af24d063bc093"><td class="memSeparator" colspan="2">&#160;</td></tr>
2950<tr class="memitem:a5baedac4819656984488bc1fe5fe1505"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5baedac4819656984488bc1fe5fe1505">RefTensorHandleFactoryId</a> ()</td></tr>
2951<tr class="separator:a5baedac4819656984488bc1fe5fe1505"><td class="memSeparator" colspan="2">&#160;</td></tr>
2952<tr class="memitem:a6a2e058d934e9d784eab57ee7121d69c"><td class="memTemplParams" colspan="2">template&lt;DataType ArmnnType&gt; </td></tr>
2953<tr class="memitem:a6a2e058d934e9d784eab57ee7121d69c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6a2e058d934e9d784eab57ee7121d69c">IsDataType</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
2954<tr class="separator:a6a2e058d934e9d784eab57ee7121d69c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2955<tr class="memitem:a87b99791ccf8793961db67ea19eb6fa4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a87b99791ccf8793961db67ea19eb6fa4">IsSigned32</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
2956<tr class="separator:a87b99791ccf8793961db67ea19eb6fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2957<tr class="memitem:ad78d822be14a8d585cd038cf0e73cd7e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad78d822be14a8d585cd038cf0e73cd7e">IsFloat16</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
2958<tr class="separator:ad78d822be14a8d585cd038cf0e73cd7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2959<tr class="memitem:abcd0d843d5736b78740ae73249b6b977"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abcd0d843d5736b78740ae73249b6b977">IsQSymmS16</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
2960<tr class="separator:abcd0d843d5736b78740ae73249b6b977"><td class="memSeparator" colspan="2">&#160;</td></tr>
2961<tr class="memitem:a09a7cd515c3b495e61b2a5116bf6a335"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09a7cd515c3b495e61b2a5116bf6a335">IsQSymmS8</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
2962<tr class="separator:a09a7cd515c3b495e61b2a5116bf6a335"><td class="memSeparator" colspan="2">&#160;</td></tr>
2963<tr class="memitem:a47d136a5519331dee24f5e01b206ae7c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a47d136a5519331dee24f5e01b206ae7c">IsQAsymmS8</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
2964<tr class="separator:a47d136a5519331dee24f5e01b206ae7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2965<tr class="memitem:a37c36bbf668cd8a0d7dcd731c9b591d7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a37c36bbf668cd8a0d7dcd731c9b591d7">IsQAsymmU8</a> (const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;info)</td></tr>
2966<tr class="separator:a37c36bbf668cd8a0d7dcd731c9b591d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2967<tr class="memitem:ad05c0670c947d35d39b3b0217e9975cf"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptorType &gt; </td></tr>
2968<tr class="memitem:ad05c0670c947d35d39b3b0217e9975cf"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad05c0670c947d35d39b3b0217e9975cf">IsOperationQueueDescriptor</a> (const QueueDescriptorType &amp;)</td></tr>
2969<tr class="separator:ad05c0670c947d35d39b3b0217e9975cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2970<tr class="memitem:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2971<tr class="memitem:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a93e7b76d19b33076b2a4eae44014d5ea">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a> &amp;)</td></tr>
2972<tr class="separator:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
2973<tr class="memitem:a05323af66b9f762e269a27562a2bbdd0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2974<tr class="memitem:a05323af66b9f762e269a27562a2bbdd0"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a05323af66b9f762e269a27562a2bbdd0">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_constant_queue_descriptor.html">ConstantQueueDescriptor</a> &amp;)</td></tr>
2975<tr class="separator:a05323af66b9f762e269a27562a2bbdd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2976<tr class="memitem:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2977<tr class="memitem:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a91332212b6a2cc9c0ea32af03c600b4f">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_permute_queue_descriptor.html">PermuteQueueDescriptor</a> &amp;)</td></tr>
2978<tr class="separator:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2979<tr class="memitem:a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">Activation</a> (float in, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> function, float a, float b)</td></tr>
2980<tr class="separator:a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><td class="memSeparator" colspan="2">&#160;</td></tr>
2981<tr class="memitem:ad10d72a6f8859949bbe6134c638ce171"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad10d72a6f8859949bbe6134c638ce171">Activation</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;tensorInfo, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> function, float a, float b)</td></tr>
2982<tr class="separator:ad10d72a6f8859949bbe6134c638ce171"><td class="memSeparator" colspan="2">&#160;</td></tr>
2983<tr class="memitem:a374120de442fe42c26536bb4f1e2a5a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">ArgMinMax</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, int32_t *out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputTensorInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputTensorInfo, <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> function, int axis)</td></tr>
2984<tr class="separator:a374120de442fe42c26536bb4f1e2a5a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2985<tr class="memitem:adc251e65d99405496d503811589e9a20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adc251e65d99405496d503811589e9a20">BatchNormImpl</a> (const <a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.html">BatchNormalizationQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;meanDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;varianceDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;betaDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;gammaDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
2986<tr class="separator:adc251e65d99405496d503811589e9a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
2987<tr class="memitem:ac70a495c61526a0500b33b23db86ca27"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">Offset</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape, unsigned int batch, unsigned int height, unsigned int width, unsigned int channels, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;dataLayout)</td></tr>
2988<tr class="separator:ac70a495c61526a0500b33b23db86ca27"><td class="memSeparator" colspan="2">&#160;</td></tr>
2989<tr class="memitem:a8746512fab5ec10c2c57800c66311ba7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">BatchToSpaceNd</a> (const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;dataLayout, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputTensorInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
2990<tr class="separator:a8746512fab5ec10c2c57800c66311ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2991<tr class="memitem:a1deafe1b2777bcaadefe2371b3ebbb27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1deafe1b2777bcaadefe2371b3ebbb27">Concatenate</a> (const <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a> &amp;data)</td></tr>
2992<tr class="separator:a1deafe1b2777bcaadefe2371b3ebbb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
2993<tr class="memitem:af98115cd07776d3fa8424434d2a7a897"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af98115cd07776d3fa8424434d2a7a897">Convolve</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rInputShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rInputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rOutputShape, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rFilterShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rFilterDecoder, bool biasEnabled, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *pBiasDecoder, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, unsigned int paddingTop, unsigned int paddingLeft, unsigned int xStride, unsigned int yStride, unsigned int xDilation, unsigned int yDilation, bool depthwise)</td></tr>
2994<tr class="separator:af98115cd07776d3fa8424434d2a7a897"><td class="memSeparator" colspan="2">&#160;</td></tr>
2995<tr class="memitem:a5aae369ef847a00062925cea8e9be9c4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2996<tr class="memitem:a5aae369ef847a00062925cea8e9be9c4"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">Debug</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const T *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
2997<tr class="separator:a5aae369ef847a00062925cea8e9be9c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2998<tr class="memitem:a3b0ab9518e3fd6a0447c174df57a313c"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3b0ab9518e3fd6a0447c174df57a313c">Debug&lt; Half &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
2999<tr class="separator:a3b0ab9518e3fd6a0447c174df57a313c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3000<tr class="memitem:a26abbe393a88835dd569523bec69719b"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a26abbe393a88835dd569523bec69719b">Debug&lt; float &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const float *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3001<tr class="separator:a26abbe393a88835dd569523bec69719b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3002<tr class="memitem:a1121718a486db835afa99328650e7e89"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1121718a486db835afa99328650e7e89">Debug&lt; uint8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const uint8_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3003<tr class="separator:a1121718a486db835afa99328650e7e89"><td class="memSeparator" colspan="2">&#160;</td></tr>
3004<tr class="memitem:ac2167b3a09fab7c9b58af461bd990c3b"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac2167b3a09fab7c9b58af461bd990c3b">Debug&lt; int8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const int8_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3005<tr class="separator:ac2167b3a09fab7c9b58af461bd990c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3006<tr class="memitem:acc771f233bb7884932260ba353118b46"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acc771f233bb7884932260ba353118b46">Debug&lt; int16_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const int16_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3007<tr class="separator:acc771f233bb7884932260ba353118b46"><td class="memSeparator" colspan="2">&#160;</td></tr>
3008<tr class="memitem:a7c1cb9cf0678f74b1dcfff310d1475fd"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7c1cb9cf0678f74b1dcfff310d1475fd">Debug&lt; int32_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const int32_t *inputData, <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3009<tr class="separator:a7c1cb9cf0678f74b1dcfff310d1475fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
3010<tr class="memitem:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3011<tr class="memitem:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1545cb162c5a64d75d9c0c05e8ea387c">MakeDecoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, const void *data=nullptr)</td></tr>
3012<tr class="separator:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3013<tr class="memitem:adb59a379c467b6d48874e946183b4d21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3014<tr class="memitem:adb59a379c467b6d48874e946183b4d21"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adb59a379c467b6d48874e946183b4d21">MakeDecoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, const void *data)</td></tr>
3015<tr class="separator:adb59a379c467b6d48874e946183b4d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
3016<tr class="memitem:ab023d9a7687e35c0f108458a094c1f56"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">DepthToSpace</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
3017<tr class="separator:ab023d9a7687e35c0f108458a094c1f56"><td class="memSeparator" colspan="2">&#160;</td></tr>
3018<tr class="memitem:acae7e910f899ae67340c9ce29e406a86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acae7e910f899ae67340c9ce29e406a86">Dequantize</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo)</td></tr>
3019<tr class="separator:acae7e910f899ae67340c9ce29e406a86"><td class="memSeparator" colspan="2">&#160;</td></tr>
3020<tr class="memitem:ae8ed5c640761fb6744aec0ee16388417"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a> (unsigned int k)</td></tr>
3021<tr class="separator:ae8ed5c640761fb6744aec0ee16388417"><td class="memSeparator" colspan="2">&#160;</td></tr>
3022<tr class="memitem:a2748f45e58b1c612d473043f711d1434"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a> (unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</td></tr>
3023<tr class="separator:a2748f45e58b1c612d473043f711d1434"><td class="memSeparator" colspan="2">&#160;</td></tr>
3024<tr class="memitem:abf6aad7bc221f8ad22b4d99cd020373b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abf6aad7bc221f8ad22b4d99cd020373b">IntersectionOverUnion</a> (const float *boxI, const float *boxJ)</td></tr>
3025<tr class="separator:abf6aad7bc221f8ad22b4d99cd020373b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3026<tr class="memitem:ac8c641d4a69c9a85c487cfbc7ea4d73c"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a> (unsigned int numBoxes, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>, float nmsScoreThreshold, unsigned int maxDetection, float nmsIouThreshold)</td></tr>
3027<tr class="separator:ac8c641d4a69c9a85c487cfbc7ea4d73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3028<tr class="memitem:ae8dcbb74cf0c855724f12833a55a5684"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a> (unsigned int numOutput, unsigned int numSelected, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; unsigned int &gt; &amp;outputIndices, const std::vector&lt; unsigned int &gt; &amp;selectedBoxes, const std::vector&lt; unsigned int &gt; &amp;selectedClasses, const std::vector&lt; float &gt; &amp;selectedScores, float *detectionBoxes, float *detectionScores, float *detectionClasses, float *numDetections)</td></tr>
3029<tr class="separator:ae8dcbb74cf0c855724f12833a55a5684"><td class="memSeparator" colspan="2">&#160;</td></tr>
3030<tr class="memitem:ae76ce23fa9fc18e56448d52b37dd3f32"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">DetectionPostProcess</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;boxEncodingsInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#abfa50e55ee160bfc64d8c3bb3dc40cc4">scoresInfo</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#afe48c20bc9f2e0b86d00806b5e17f2a4">anchorsInfo</a>, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionBoxesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionClassesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;detectionScoresInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;numDetectionsInfo, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;desc, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</td></tr>
3031<tr class="separator:ae76ce23fa9fc18e56448d52b37dd3f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
3032<tr class="memitem:a56867cc5245724ab56953604b1eec9ee"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3033<tr class="memitem:a56867cc5245724ab56953604b1eec9ee"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a56867cc5245724ab56953604b1eec9ee">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, void *data=nullptr)</td></tr>
3034<tr class="separator:a56867cc5245724ab56953604b1eec9ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
3035<tr class="memitem:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3036<tr class="memitem:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a363da7c8d642ea382e3bd2f1c6283d52">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, void *data)</td></tr>
3037<tr class="separator:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
3038<tr class="memitem:a6fcd01a9cdee158d3022ad089c27c078"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3039<tr class="memitem:a6fcd01a9cdee158d3022ad089c27c078"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; bool &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6fcd01a9cdee158d3022ad089c27c078">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info, void *data)</td></tr>
3040<tr class="separator:a6fcd01a9cdee158d3022ad089c27c078"><td class="memSeparator" colspan="2">&#160;</td></tr>
3041<tr class="memitem:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">FullyConnected</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rInputShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rInputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;rOutputShape, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rWeightDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rBiasDecoder, bool biasEnabled, unsigned int K, bool transposeWeights)</td></tr>
3042<tr class="memdesc:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a matrix multiplication and optionally adds a bias. <a href="#ad34d1d5b1ca8f52dc296ecf52ba20c8a">More...</a><br /></td></tr>
3043<tr class="separator:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3044<tr class="memitem:a66004b2326f8ccb1faa71d5efa186633"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">Gather</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;paramsInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;indicesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;params, const int32_t *indices, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
3045<tr class="separator:a66004b2326f8ccb1faa71d5efa186633"><td class="memSeparator" colspan="2">&#160;</td></tr>
3046<tr class="memitem:ac3d98d09064176b259e8a9038b06699d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac3d98d09064176b259e8a9038b06699d">InstanceNorm</a> (const <a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.html">InstanceNormalizationQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
3047<tr class="separator:ac3d98d09064176b259e8a9038b06699d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3048<tr class="memitem:ac52e04c0e349e25bcdaa72c27395ef8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">LogSoftmax</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;input, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> &amp;descriptor)</td></tr>
3049<tr class="separator:ac52e04c0e349e25bcdaa72c27395ef8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3050<tr class="memitem:a869f740e9c2fcb8642350c6e3d0b3742"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a869f740e9c2fcb8642350c6e3d0b3742">NextIndex</a> (const unsigned int numDims, const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;dims, std::vector&lt; unsigned int &gt; &amp;current)</td></tr>
3051<tr class="separator:a869f740e9c2fcb8642350c6e3d0b3742"><td class="memSeparator" colspan="2">&#160;</td></tr>
3052<tr class="memitem:ae86f1ca23eaa764da9e589cc8e39a969"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a> (const unsigned int numDims, const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;dims, std::vector&lt; unsigned int &gt; &amp;index, const unsigned int numAxis, const std::vector&lt; unsigned int &gt; &amp;axis)</td></tr>
3053<tr class="separator:ae86f1ca23eaa764da9e589cc8e39a969"><td class="memSeparator" colspan="2">&#160;</td></tr>
3054<tr class="memitem:a165ae372a7f67cad64ef3395d30122ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">Mean</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;input, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
3055<tr class="separator:a165ae372a7f67cad64ef3395d30122ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
3056<tr class="memitem:a28e115f5d28500324b53fae9e6c00b77"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3057<tr class="memitem:a28e115f5d28500324b53fae9e6c00b77"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">Pad</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</td></tr>
3058<tr class="separator:a28e115f5d28500324b53fae9e6c00b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
3059<tr class="memitem:a09fc687543b371ddab280203dc989bd9"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09fc687543b371ddab280203dc989bd9">Pad&lt; float &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const float *inputData, float *outData, const float padValue)</td></tr>
3060<tr class="separator:a09fc687543b371ddab280203dc989bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
3061<tr class="memitem:a1b165f49b29968defb57e2d9b8628b9f"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1b165f49b29968defb57e2d9b8628b9f">Pad&lt; Half &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *inputData, <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *outData, const float padValue)</td></tr>
3062<tr class="separator:a1b165f49b29968defb57e2d9b8628b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3063<tr class="memitem:a7e27cbebab8cde65c84d7a00efa025cd"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a7e27cbebab8cde65c84d7a00efa025cd">Pad&lt; uint8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const uint8_t *inputData, uint8_t *outData, const float padValue)</td></tr>
3064<tr class="separator:a7e27cbebab8cde65c84d7a00efa025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
3065<tr class="memitem:a68b05cecb5ebbbc3b8d1fd94a66df4af"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a68b05cecb5ebbbc3b8d1fd94a66df4af">Pad&lt; int16_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const int16_t *inputData, int16_t *outData, const float padValue)</td></tr>
3066<tr class="separator:a68b05cecb5ebbbc3b8d1fd94a66df4af"><td class="memSeparator" colspan="2">&#160;</td></tr>
3067<tr class="memitem:ae2e93e304cf516841c521e3eaee025cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">Pooling2d</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;rInputDecoder, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;params)</td></tr>
3068<tr class="memdesc:ae2e93e304cf516841c521e3eaee025cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the Pooling2d operation. <a href="#ae2e93e304cf516841c521e3eaee025cd">More...</a><br /></td></tr>
3069<tr class="separator:ae2e93e304cf516841c521e3eaee025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
3070<tr class="memitem:aa1ca65b3ba7f7c760eb3d5563c12864e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa1ca65b3ba7f7c760eb3d5563c12864e">PreluImpl</a> (const <a class="el" href="structarmnn_1_1_prelu_queue_descriptor.html">PreluQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;alphaData, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
3071<tr class="separator:aa1ca65b3ba7f7c760eb3d5563c12864e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3072<tr class="memitem:ab3c0b7e1a78b1b98c24934221f36a7c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">FakeQuantization</a> (const float *inputData, float *outputData, uint32_t numElements, float min, float max)</td></tr>
3073<tr class="separator:ab3c0b7e1a78b1b98c24934221f36a7c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
3074<tr class="memitem:a93d269806f34407695dc10f510001c30"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a93d269806f34407695dc10f510001c30">GetTensorInfo</a> (const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *tensorHandle)</td></tr>
3075<tr class="memdesc:a93d269806f34407695dc10f510001c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">float32 helpers <a href="#a93d269806f34407695dc10f510001c30">More...</a><br /></td></tr>
3076<tr class="separator:a93d269806f34407695dc10f510001c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
3077<tr class="memitem:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
3078<tr class="memitem:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2187ea15b1ae8c323a0cc5c211fc43d9">GetInputTensorData</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3079<tr class="separator:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
3080<tr class="memitem:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
3081<tr class="memitem:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a2c0b2e5bd1b03aec10473a201f57f859">GetOutputTensorData</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3082<tr class="separator:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memSeparator" colspan="2">&#160;</td></tr>
3083<tr class="memitem:a691846a9eee59b0cd5b22fb5f674e007"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3084<tr class="memitem:a691846a9eee59b0cd5b22fb5f674e007"><td class="memTemplItemLeft" align="right" valign="top">const float *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a691846a9eee59b0cd5b22fb5f674e007">GetInputTensorDataFloat</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3085<tr class="separator:a691846a9eee59b0cd5b22fb5f674e007"><td class="memSeparator" colspan="2">&#160;</td></tr>
3086<tr class="memitem:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3087<tr class="memitem:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memTemplItemLeft" align="right" valign="top">float *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab5f0afc1e37fd100843ecd55d8f284c1">GetOutputTensorDataFloat</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3088<tr class="separator:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
3089<tr class="memitem:a084b0ce273bef78aa314bd97fc574b84"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3090<tr class="memitem:a084b0ce273bef78aa314bd97fc574b84"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a084b0ce273bef78aa314bd97fc574b84">GetInputTensorDataHalf</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3091<tr class="separator:a084b0ce273bef78aa314bd97fc574b84"><td class="memSeparator" colspan="2">&#160;</td></tr>
3092<tr class="memitem:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3093<tr class="memitem:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ab98e77207c3d676b0b9ffa67357dbc6a">GetOutputTensorDataHalf</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3094<tr class="separator:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3095<tr class="memitem:a4144d7535639c617fca0d095379493f0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3096<tr class="memitem:a4144d7535639c617fca0d095379493f0"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4144d7535639c617fca0d095379493f0">Dequantize</a> (const T *quant, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
3097<tr class="memdesc:a4144d7535639c617fca0d095379493f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">u8 helpers <a href="#a4144d7535639c617fca0d095379493f0">More...</a><br /></td></tr>
3098<tr class="separator:a4144d7535639c617fca0d095379493f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3099<tr class="memitem:a1204727d8ce3ee1e60daf08079eb892e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3100<tr class="memitem:a1204727d8ce3ee1e60daf08079eb892e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1204727d8ce3ee1e60daf08079eb892e">Dequantize</a> (const T *inputData, float *outputData, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
3101<tr class="separator:a1204727d8ce3ee1e60daf08079eb892e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3102<tr class="memitem:abbbe4a59b72fba606f21e7c24dcbd8c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abbbe4a59b72fba606f21e7c24dcbd8c0">Quantize</a> (uint8_t *quant, const float *dequant, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;info)</td></tr>
3103<tr class="separator:abbbe4a59b72fba606f21e7c24dcbd8c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3104<tr class="memitem:a25dc224be48103343302b5a6fd588fe7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">Resize</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout, <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">armnn::ResizeMethod</a> resizeMethod, bool alignCorners)</td></tr>
3105<tr class="separator:a25dc224be48103343302b5a6fd588fe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
3106<tr class="memitem:a044ea0cc993d4d1fbe4ec877b17b8d39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">Slice</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
3107<tr class="separator:a044ea0cc993d4d1fbe4ec877b17b8d39"><td class="memSeparator" colspan="2">&#160;</td></tr>
3108<tr class="memitem:aa999ff2585ad75b95954a9323f63c32b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">Softmax</a> (<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;in, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputTensorInfo, float beta, int axis)</td></tr>
3109<tr class="memdesc:aa999ff2585ad75b95954a9323f63c32b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo. <a href="#aa999ff2585ad75b95954a9323f63c32b">More...</a><br /></td></tr>
3110<tr class="separator:aa999ff2585ad75b95954a9323f63c32b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3111<tr class="memitem:adafb0fd0a3f6435c2bdf41f971761ecf"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;dataLayout)</td></tr>
3112<tr class="separator:adafb0fd0a3f6435c2bdf41f971761ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
3113<tr class="memitem:a4a180e425d4c19b2cdea4ce5760180e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">SpaceToBatchNd</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;params, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
3114<tr class="separator:a4a180e425d4c19b2cdea4ce5760180e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
3115<tr class="memitem:a5e1dc69443b64ad16b669388a6023f7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">SpaceToDepth</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;params, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
3116<tr class="separator:a5e1dc69443b64ad16b669388a6023f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3117<tr class="memitem:ac4d30f99e7fa46fe375e925a6ad537be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#ac4d30f99e7fa46fe375e925a6ad537be">Split</a> (const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;data)</td></tr>
3118<tr class="separator:ac4d30f99e7fa46fe375e925a6ad537be"><td class="memSeparator" colspan="2">&#160;</td></tr>
3119<tr class="memitem:a427c3d26d05b518b1ace407035f5920e"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
3120<tr class="memitem:a427c3d26d05b518b1ace407035f5920e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">Splitter</a> (const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;data)</td></tr>
3121<tr class="separator:a427c3d26d05b518b1ace407035f5920e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3122<tr class="memitem:a6ef2dcac2ec0683d52df1b051404e7d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">Stack</a> (const <a class="el" href="structarmnn_1_1_stack_queue_descriptor.html">StackQueueDescriptor</a> &amp;data, std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt;&gt;&gt; &amp;inputs, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
3123<tr class="separator:a6ef2dcac2ec0683d52df1b051404e7d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
3124<tr class="memitem:a86d7a7168ac00b75b4971f9aad623698"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">StridedSlice</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;inputInfo, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
3125<tr class="separator:a86d7a7168ac00b75b4971f9aad623698"><td class="memSeparator" colspan="2">&#160;</td></tr>
3126<tr class="memitem:affec174d91f234497dfbceba5e251dee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#affec174d91f234497dfbceba5e251dee">TransposeConvolution2dImpl</a> (const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;inputShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;inputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;outputShape, <a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;outputEncoder, const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;weightsShape, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;weightsDecoder, <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *biasesDecoder)</td></tr>
3127<tr class="separator:affec174d91f234497dfbceba5e251dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
3128<tr class="memitem:af487cc4568faf50403f12ed1c7a70a2d"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#af487cc4568faf50403f12ed1c7a70a2d">GetInputTensorData</a> (unsigned int idx, const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;data)</td></tr>
3129<tr class="separator:af487cc4568faf50403f12ed1c7a70a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3130<tr class="memitem:a932b4856d89c58865e1f39ec5ab6b841"><td class="memItemLeft" align="right" valign="top">float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a932b4856d89c58865e1f39ec5ab6b841">GetOutputTensorData</a> (unsigned int idx, const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;data)</td></tr>
3131<tr class="separator:a932b4856d89c58865e1f39ec5ab6b841"><td class="memSeparator" colspan="2">&#160;</td></tr>
3132<tr class="memitem:a40c8a268a9dc9dc910e348534d479f7a"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a40c8a268a9dc9dc910e348534d479f7a">SampleDynamicBackendId</a> ()</td></tr>
3133<tr class="separator:a40c8a268a9dc9dc910e348534d479f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3134<tr class="memitem:a8022a6869bffa6233fec784a471c1680"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a8022a6869bffa6233fec784a471c1680">operator&gt;&gt;</a> (std::istream &amp;in, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> &amp;compute)</td></tr>
3135<tr class="separator:a8022a6869bffa6233fec784a471c1680"><td class="memSeparator" colspan="2">&#160;</td></tr>
3136<tr class="memitem:a3c51506c471a4513dcc3364514d75f39"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a3c51506c471a4513dcc3364514d75f39">operator&gt;&gt;</a> (std::istream &amp;in, <a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;backend)</td></tr>
3137<tr class="separator:a3c51506c471a4513dcc3364514d75f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
3138</table><table class="memberdecls">
3139<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
3140Variables</h2></td></tr>
3141<tr class="memitem:abdcd184ed3bd648bb31d385040cafd5d"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> = 5U</td></tr>
3142<tr class="separator:abdcd184ed3bd648bb31d385040cafd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3143<tr class="memitem:a602ddc6408c3347ba4c1eba623003984"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a602ddc6408c3347ba4c1eba623003984">LOWEST_CAPTURE_PERIOD</a> = 10000u</td></tr>
3144<tr class="separator:a602ddc6408c3347ba4c1eba623003984"><td class="memSeparator" colspan="2">&#160;</td></tr>
3145<tr class="memitem:a43ecd194778b7653578044060ba8695e"><td class="memItemLeft" align="right" valign="top">constexpr std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a43ecd194778b7653578044060ba8695e">g_ProfilingEventCountHint</a> = 1024</td></tr>
3146<tr class="separator:a43ecd194778b7653578044060ba8695e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3147<tr class="memitem:a41794552ff67b0dad16de60f9b8e7d7c"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a41794552ff67b0dad16de60f9b8e7d7c">g_WriteProfilingEventSequence</a> = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td></tr>
3148<tr class="separator:a41794552ff67b0dad16de60f9b8e7d7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3149<tr class="memitem:aacc0d11e271ebbfcff9d613dd17604aa"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#aacc0d11e271ebbfcff9d613dd17604aa">g_AggregateProfilingEventsByInference</a> = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td></tr>
3150<tr class="separator:aacc0d11e271ebbfcff9d613dd17604aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
3151<tr class="memitem:a6ce7e56eb10e440463f09eee8f213adc"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a6ce7e56eb10e440463f09eee8f213adc">g_WriteReportToStdOutOnProfilerDestruction</a> = <a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a></td></tr>
3152<tr class="separator:a6ce7e56eb10e440463f09eee8f213adc"><td class="memSeparator" colspan="2">&#160;</td></tr>
3153<tr class="memitem:a680b729be51e88d93f2cbbdfeb5eaf4d"><td class="memItemLeft" align="right" valign="top">thread_local <a class="el" href="classarmnn_1_1_profiler.html">Profiler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a680b729be51e88d93f2cbbdfeb5eaf4d">tl_Profiler</a> = nullptr</td></tr>
3154<tr class="separator:a680b729be51e88d93f2cbbdfeb5eaf4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3155<tr class="memitem:a19994153bdbd7710f0af3973403bc4cc"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a> = 255.0f</td></tr>
3156<tr class="separator:a19994153bdbd7710f0af3973403bc4cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
3157<tr class="memitem:a09bdfaa922d72ce0d9ec014dfa8f8c95"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a> = 255.0f</td></tr>
3158<tr class="separator:a09bdfaa922d72ce0d9ec014dfa8f8c95"><td class="memSeparator" colspan="2">&#160;</td></tr>
3159<tr class="memitem:acd7f8820d124166a38c95bc8ad38811b"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a> = 127.0f</td></tr>
3160<tr class="separator:acd7f8820d124166a38c95bc8ad38811b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3161<tr class="memitem:a1465480794787d2278d3f0d2e6d887b4"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a> = 32767.0f</td></tr>
3162<tr class="separator:a1465480794787d2278d3f0d2e6d887b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
3163<tr class="memitem:a1a9a6dea47de10df8e3c76dd45df56fb"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.html#a1a9a6dea47de10df8e3c76dd45df56fb">g_TestTolerance</a> = 0.000001f</td></tr>
3164<tr class="separator:a1a9a6dea47de10df8e3c76dd45df56fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
3165</table>
3166<h2 class="groupheader">Typedef Documentation</h2>
3167<a id="a1854d9cda81304325664363c1fd0fb27"></a>
3168<h2 class="memtitle"><span class="permalink"><a href="#a1854d9cda81304325664363c1fd0fb27">&#9670;&nbsp;</a></span>BackendIdSet</h2>
3169
3170<div class="memitem">
3171<div class="memproto">
3172 <table class="memname">
3173 <tr>
3174 <td class="memname">using <a class="el" href="namespacearmnn.html#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> = std::unordered_set&lt;<a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>&gt;</td>
3175 </tr>
3176 </table>
3177</div><div class="memdoc">
3178
3179<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00191">191</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
3180
3181</div>
3182</div>
3183<a id="ac858d91eedb7b4dba1bcd0aa760ab510"></a>
3184<h2 class="memtitle"><span class="permalink"><a href="#ac858d91eedb7b4dba1bcd0aa760ab510">&#9670;&nbsp;</a></span>BackendIdVector</h2>
3185
3186<div class="memitem">
3187<div class="memproto">
3188 <table class="memname">
3189 <tr>
3190 <td class="memname">using <a class="el" href="namespacearmnn.html#ac858d91eedb7b4dba1bcd0aa760ab510">BackendIdVector</a> = std::vector&lt;<a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>&gt;</td>
3191 </tr>
3192 </table>
3193</div><div class="memdoc">
3194
3195<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00190">190</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
3196
3197</div>
3198</div>
3199<a id="a9173495a61a0092b5f38b855f02c3585"></a>
3200<h2 class="memtitle"><span class="permalink"><a href="#a9173495a61a0092b5f38b855f02c3585">&#9670;&nbsp;</a></span>BackendsMap</h2>
3201
3202<div class="memitem">
3203<div class="memproto">
3204 <table class="memname">
3205 <tr>
3206 <td class="memname">using <a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> = std::map&lt;<a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, std::unique_ptr&lt;class <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a>&gt; &gt;</td>
3207 </tr>
3208 </table>
3209</div><div class="memdoc">
3210
3211<p class="definition">Definition at line <a class="el" href="_network_8hpp_source.html#l00292">292</a> of file <a class="el" href="_network_8hpp_source.html">Network.hpp</a>.</p>
3212
3213</div>
3214</div>
3215<a id="a20d2055c37fedf3f39db9facf2c8c697"></a>
3216<h2 class="memtitle"><span class="permalink"><a href="#a20d2055c37fedf3f39db9facf2c8c697">&#9670;&nbsp;</a></span>BaseFloat32ComparisonWorkload</h2>
3217
3218<div class="memitem">
3219<div class="memproto">
3220 <table class="memname">
3221 <tr>
3222 <td class="memname">using <a class="el" href="namespacearmnn.html#a20d2055c37fedf3f39db9facf2c8c697">BaseFloat32ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
3223 </tr>
3224 </table>
3225</div><div class="memdoc">
3226
3227<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00172">172</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3228
3229</div>
3230</div>
3231<a id="a9cbc0957cf0637cc3fd9702086117cc0"></a>
3232<h2 class="memtitle"><span class="permalink"><a href="#a9cbc0957cf0637cc3fd9702086117cc0">&#9670;&nbsp;</a></span>BaseUint8ComparisonWorkload</h2>
3233
3234<div class="memitem">
3235<div class="memproto">
3236 <table class="memname">
3237 <tr>
3238 <td class="memname">using <a class="el" href="namespacearmnn.html#a9cbc0957cf0637cc3fd9702086117cc0">BaseUint8ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
3239 </tr>
3240 </table>
3241</div><div class="memdoc">
3242
3243<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00177">177</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3244
3245</div>
3246</div>
3247<a id="a280670a263dc4fd40491f6d0a2737f44"></a>
3248<h2 class="memtitle"><span class="permalink"><a href="#a280670a263dc4fd40491f6d0a2737f44">&#9670;&nbsp;</a></span>BindingPointInfo</h2>
3249
3250<div class="memitem">
3251<div class="memproto">
3252 <table class="memname">
3253 <tr>
3254 <td class="memname">using <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">BindingPointInfo</a> = std::pair&lt;<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a>, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&gt;</td>
3255 </tr>
3256 </table>
3257</div><div class="memdoc">
3258
3259<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.html#l00146">146</a> of file <a class="el" href="_tensor_8hpp_source.html">Tensor.hpp</a>.</p>
3260
3261</div>
3262</div>
3263<a id="ab539ef5a0c152536da71c8fcc065efb5"></a>
3264<h2 class="memtitle"><span class="permalink"><a href="#ab539ef5a0c152536da71c8fcc065efb5">&#9670;&nbsp;</a></span>BooleanWorkload</h2>
3265
3266<div class="memitem">
3267<div class="memproto">
3268 <table class="memname">
3269 <tr>
3270 <td class="memname">using <a class="el" href="namespacearmnn.html#ab539ef5a0c152536da71c8fcc065efb5">BooleanWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
3271 </tr>
3272 </table>
3273</div><div class="memdoc">
3274
3275<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00167">167</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3276
3277</div>
3278</div>
3279<a id="a77e1ccec3acbb3dadba3fd4939508b32"></a>
3280<h2 class="memtitle"><span class="permalink"><a href="#a77e1ccec3acbb3dadba3fd4939508b32">&#9670;&nbsp;</a></span>ClGreaterFloat32Workload</h2>
3281
3282<div class="memitem">
3283<div class="memproto">
3284 <table class="memname">
3285 <tr>
3286 <td class="memname">using <a class="el" href="namespacearmnn.html#a77e1ccec3acbb3dadba3fd4939508b32">ClGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
3287 </tr>
3288 </table>
3289</div><div class="memdoc">
3290
3291<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8hpp_source.html#l00031">31</a> of file <a class="el" href="_cl_greater_workload_8hpp_source.html">ClGreaterWorkload.hpp</a>.</p>
3292
3293</div>
3294</div>
3295<a id="a569ba573145851e753623be817b98e9b"></a>
3296<h2 class="memtitle"><span class="permalink"><a href="#a569ba573145851e753623be817b98e9b">&#9670;&nbsp;</a></span>ClGreaterUint8Workload</h2>
3297
3298<div class="memitem">
3299<div class="memproto">
3300 <table class="memname">
3301 <tr>
3302 <td class="memname">using <a class="el" href="namespacearmnn.html#a569ba573145851e753623be817b98e9b">ClGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.html">ClGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
3303 </tr>
3304 </table>
3305</div><div class="memdoc">
3306
3307<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8hpp_source.html#l00032">32</a> of file <a class="el" href="_cl_greater_workload_8hpp_source.html">ClGreaterWorkload.hpp</a>.</p>
3308
3309</div>
3310</div>
3311<a id="a689de00cadd81b4e35b7448e4fbbc034"></a>
3312<h2 class="memtitle"><span class="permalink"><a href="#a689de00cadd81b4e35b7448e4fbbc034">&#9670;&nbsp;</a></span>CompiledBlobDeleter</h2>
3313
3314<div class="memitem">
3315<div class="memproto">
3316 <table class="memname">
3317 <tr>
3318 <td class="memname">using <a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> = std::function&lt;void(const void*)&gt;</td>
3319 </tr>
3320 </table>
3321</div><div class="memdoc">
3322
3323<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.html#l00017">17</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.html">ISubgraphViewConverter.hpp</a>.</p>
3324
3325</div>
3326</div>
3327<a id="a7b4ac337ed307e0739e628d5b9883856"></a>
3328<h2 class="memtitle"><span class="permalink"><a href="#a7b4ac337ed307e0739e628d5b9883856">&#9670;&nbsp;</a></span>CompiledBlobPtr</h2>
3329
3330<div class="memitem">
3331<div class="memproto">
3332 <table class="memname">
3333 <tr>
3334 <td class="memname">using <a class="el" href="namespacearmnn.html#a7b4ac337ed307e0739e628d5b9883856">CompiledBlobPtr</a> = std::unique_ptr&lt;void, <a class="el" href="namespacearmnn.html#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a>&gt;</td>
3335 </tr>
3336 </table>
3337</div><div class="memdoc">
3338
3339<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.html#l00018">18</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.html">ISubgraphViewConverter.hpp</a>.</p>
3340
3341</div>
3342</div>
3343<a id="a7863c179ff92feec660c48ab7b95ae55"></a>
3344<h2 class="memtitle"><span class="permalink"><a href="#a7863c179ff92feec660c48ab7b95ae55">&#9670;&nbsp;</a></span>ConcatDescriptor</h2>
3345
3346<div class="memitem">
3347<div class="memproto">
3348 <table class="memname">
3349 <tr>
3350 <td class="memname">using <a class="el" href="namespacearmnn.html#a7863c179ff92feec660c48ab7b95ae55">ConcatDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td>
3351 </tr>
3352 </table>
3353</div><div class="memdoc">
3354
3355<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.html#l00045">45</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.html">DescriptorsFwd.hpp</a>.</p>
3356
3357</div>
3358</div>
3359<a id="ac6e86c1def7f674d3c4cb7f577874aa6"></a>
3360<h2 class="memtitle"><span class="permalink"><a href="#ac6e86c1def7f674d3c4cb7f577874aa6">&#9670;&nbsp;</a></span>Coordinates</h2>
3361
3362<div class="memitem">
3363<div class="memproto">
3364 <table class="memname">
3365 <tr>
3366 <td class="memname">using <a class="el" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">Coordinates</a> = std::array&lt;unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>&gt;</td>
3367 </tr>
3368 </table>
3369</div><div class="memdoc">
3370
3371<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.html#l00079">79</a> of file <a class="el" href="_internal_types_8hpp_source.html">InternalTypes.hpp</a>.</p>
3372
3373</div>
3374</div>
3375<a id="a15f3ad9b5e4e3d46b0a6dda246a7bc28"></a>
3376<h2 class="memtitle"><span class="permalink"><a href="#a15f3ad9b5e4e3d46b0a6dda246a7bc28">&#9670;&nbsp;</a></span>DebugCallbackFunction</h2>
3377
3378<div class="memitem">
3379<div class="memproto">
3380 <table class="memname">
3381 <tr>
3382 <td class="memname">using <a class="el" href="namespacearmnn.html#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a> = std::function&lt;void(<a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, unsigned int slotIndex, <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a>* tensorHandle)&gt;</td>
3383 </tr>
3384 </table>
3385</div><div class="memdoc">
3386<p>Define the type of callback for the Debug layer to call </p><dl class="params"><dt>Parameters</dt><dd>
3387 <table class="params">
3388 <tr><td class="paramname">guid</td><td>- guid of layer connected to the input of the Debug layer </td></tr>
3389 <tr><td class="paramname">slotIndex</td><td>- index of the output slot connected to the input of the Debug layer </td></tr>
3390 <tr><td class="paramname">tensorHandle</td><td>- TensorHandle for the input tensor to the Debug layer </td></tr>
3391 </table>
3392 </dd>
3393</dl>
3394
3395<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00241">241</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
3396
3397</div>
3398</div>
3399<a id="a3647f60510bc8ddaced01c51b0ee8714"></a>
3400<h2 class="memtitle"><span class="permalink"><a href="#a3647f60510bc8ddaced01c51b0ee8714">&#9670;&nbsp;</a></span>DepthToSpaceDescriptor</h2>
3401
3402<div class="memitem">
3403<div class="memproto">
3404 <table class="memname">
3405 <tr>
3406 <td class="memname">typedef <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a></td>
3407 </tr>
3408 </table>
3409</div><div class="memdoc">
3410
3411<p>A DepthToSpaceDescriptor for the <a class="el" href="classarmnn_1_1_depth_to_space_layer.html" title="This layer represents a DepthToSpace operation. ">DepthToSpaceLayer</a>. </p>
3412
3413<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00834">834</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
3414
3415</div>
3416</div>
3417<a id="a293695a94110c1a0eb77e29c22dce79a"></a>
3418<h2 class="memtitle"><span class="permalink"><a href="#a293695a94110c1a0eb77e29c22dce79a">&#9670;&nbsp;</a></span>Dimensions</h2>
3419
3420<div class="memitem">
3421<div class="memproto">
3422 <table class="memname">
3423 <tr>
3424 <td class="memname">using <a class="el" href="namespacearmnn.html#a293695a94110c1a0eb77e29c22dce79a">Dimensions</a> = std::array&lt;unsigned int, <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>&gt;</td>
3425 </tr>
3426 </table>
3427</div><div class="memdoc">
3428
3429<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.html#l00080">80</a> of file <a class="el" href="_internal_types_8hpp_source.html">InternalTypes.hpp</a>.</p>
3430
3431</div>
3432</div>
3433<a id="a754d43dc24a0fe36ecb3044d8f13a413"></a>
3434<h2 class="memtitle"><span class="permalink"><a href="#a754d43dc24a0fe36ecb3044d8f13a413">&#9670;&nbsp;</a></span>DynamicBackendPtr</h2>
3435
3436<div class="memitem">
3437<div class="memproto">
3438 <table class="memname">
3439 <tr>
3440 <td class="memname">using <a class="el" href="namespacearmnn.html#a754d43dc24a0fe36ecb3044d8f13a413">DynamicBackendPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_dynamic_backend.html">DynamicBackend</a>&gt;</td>
3441 </tr>
3442 </table>
3443</div><div class="memdoc">
3444
3445<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_dynamic_backend_8hpp_source.html#l00052">52</a> of file <a class="el" href="include_2armnn_2backends_2_dynamic_backend_8hpp_source.html">DynamicBackend.hpp</a>.</p>
3446
3447</div>
3448</div>
3449<a id="a947e07902b1b5d98b57eeae34053146b"></a>
3450<h2 class="memtitle"><span class="permalink"><a href="#a947e07902b1b5d98b57eeae34053146b">&#9670;&nbsp;</a></span>FactoryId</h2>
3451
3452<div class="memitem">
3453<div class="memproto">
3454 <table class="memname">
3455 <tr>
3456 <td class="memname">typedef <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> <a class="el" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">FactoryId</a></td>
3457 </tr>
3458 </table>
3459</div><div class="memdoc">
3460
3461<p class="definition">Definition at line <a class="el" href="_cl_tensor_handle_factory_8cpp_source.html#l00020">20</a> of file <a class="el" href="_cl_tensor_handle_factory_8cpp_source.html">ClTensorHandleFactory.cpp</a>.</p>
3462
3463</div>
3464</div>
3465<a id="a827d59b5a779a8089017802172817f3c"></a>
3466<h2 class="memtitle"><span class="permalink"><a href="#a827d59b5a779a8089017802172817f3c">&#9670;&nbsp;</a></span>Float16ToFloat32Workload</h2>
3467
3468<div class="memitem">
3469<div class="memproto">
3470 <table class="memname">
3471 <tr>
3472 <td class="memname">using <a class="el" href="namespacearmnn.html#a827d59b5a779a8089017802172817f3c">Float16ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
3473 </tr>
3474 </table>
3475</div><div class="memdoc">
3476
3477<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00182">182</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3478
3479</div>
3480</div>
3481<a id="a6486138451112140f98516c0bee18615"></a>
3482<h2 class="memtitle"><span class="permalink"><a href="#a6486138451112140f98516c0bee18615">&#9670;&nbsp;</a></span>Float32ToFloat16Workload</h2>
3483
3484<div class="memitem">
3485<div class="memproto">
3486 <table class="memname">
3487 <tr>
3488 <td class="memname">using <a class="el" href="namespacearmnn.html#a6486138451112140f98516c0bee18615">Float32ToFloat16Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>&gt;</td>
3489 </tr>
3490 </table>
3491</div><div class="memdoc">
3492
3493<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00187">187</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3494
3495</div>
3496</div>
3497<a id="a0493144f15b35804a133c9aa0b63fcc9"></a>
3498<h2 class="memtitle"><span class="permalink"><a href="#a0493144f15b35804a133c9aa0b63fcc9">&#9670;&nbsp;</a></span>Float32Workload</h2>
3499
3500<div class="memitem">
3501<div class="memproto">
3502 <table class="memname">
3503 <tr>
3504 <td class="memname">using <a class="el" href="namespacearmnn.html#a0493144f15b35804a133c9aa0b63fcc9">Float32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
3505 </tr>
3506 </table>
3507</div><div class="memdoc">
3508
3509<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00158">158</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3510
3511</div>
3512</div>
3513<a id="abaedcfd0ae08790c03bfe8ba7586dd84"></a>
3514<h2 class="memtitle"><span class="permalink"><a href="#abaedcfd0ae08790c03bfe8ba7586dd84">&#9670;&nbsp;</a></span>FloatWorkload</h2>
3515
3516<div class="memitem">
3517<div class="memproto">
3518 <table class="memname">
3519 <tr>
3520 <td class="memname">using <a class="el" href="namespacearmnn.html#abaedcfd0ae08790c03bfe8ba7586dd84">FloatWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
3521 </tr>
3522 </table>
3523</div><div class="memdoc">
3524
3525<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00155">155</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3526
3527</div>
3528</div>
3529<a id="a0f38fa92b2468d5378258a2b074c1a31"></a>
3530<h2 class="memtitle"><span class="permalink"><a href="#a0f38fa92b2468d5378258a2b074c1a31">&#9670;&nbsp;</a></span>Half</h2>
3531
3532<div class="memitem">
3533<div class="memproto">
3534 <table class="memname">
3535 <tr>
3536 <td class="memname">using <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> = half_float::half</td>
3537 </tr>
3538 </table>
3539</div><div class="memdoc">
3540
3541<p class="definition">Definition at line <a class="el" href="_half_8hpp_source.html#l00016">16</a> of file <a class="el" href="_half_8hpp_source.html">Half.hpp</a>.</p>
3542
3543</div>
3544</div>
3545<a id="a65a0ad0a7b807e70295481a7b9cb93ac"></a>
3546<h2 class="memtitle"><span class="permalink"><a href="#a65a0ad0a7b807e70295481a7b9cb93ac">&#9670;&nbsp;</a></span>IBackendContextUniquePtr</h2>
3547
3548<div class="memitem">
3549<div class="memproto">
3550 <table class="memname">
3551 <tr>
3552 <td class="memname">using <a class="el" href="namespacearmnn.html#a65a0ad0a7b807e70295481a7b9cb93ac">IBackendContextUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend_context.html">IBackendContext</a>&gt;</td>
3553 </tr>
3554 </table>
3555</div><div class="memdoc">
3556
3557<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_backend_context_8hpp_source.html#l00030">30</a> of file <a class="el" href="include_2armnn_2backends_2_i_backend_context_8hpp_source.html">IBackendContext.hpp</a>.</p>
3558
3559</div>
3560</div>
3561<a id="ade0af9dacaa52cafdd701bef2e901c77"></a>
3562<h2 class="memtitle"><span class="permalink"><a href="#ade0af9dacaa52cafdd701bef2e901c77">&#9670;&nbsp;</a></span>IBackendInternalUniquePtr</h2>
3563
3564<div class="memitem">
3565<div class="memproto">
3566 <table class="memname">
3567 <tr>
3568 <td class="memname">typedef std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_internal.html">IBackendInternal</a> &gt; <a class="el" href="namespacearmnn.html#ade0af9dacaa52cafdd701bef2e901c77">IBackendInternalUniquePtr</a></td>
3569 </tr>
3570 </table>
3571</div><div class="memdoc">
3572
3573<p class="definition">Definition at line <a class="el" href="_backend_registry_8hpp_source.html#l00018">18</a> of file <a class="el" href="_backend_registry_8hpp_source.html">BackendRegistry.hpp</a>.</p>
3574
3575</div>
3576</div>
3577<a id="ae18caa7ee6287aa7f8c2a5ce6bc92382"></a>
3578<h2 class="memtitle"><span class="permalink"><a href="#ae18caa7ee6287aa7f8c2a5ce6bc92382">&#9670;&nbsp;</a></span>IBackendSharedPtr</h2>
3579
3580<div class="memitem">
3581<div class="memproto">
3582 <table class="memname">
3583 <tr>
3584 <td class="memname">using <a class="el" href="namespacearmnn.html#ae18caa7ee6287aa7f8c2a5ce6bc92382">IBackendSharedPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>&gt;</td>
3585 </tr>
3586 </table>
3587</div><div class="memdoc">
3588
3589<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00154">154</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
3590
3591</div>
3592</div>
3593<a id="a5a665483e56a688e9f8180accdf72d80"></a>
3594<h2 class="memtitle"><span class="permalink"><a href="#a5a665483e56a688e9f8180accdf72d80">&#9670;&nbsp;</a></span>IBackendUniquePtr</h2>
3595
3596<div class="memitem">
3597<div class="memproto">
3598 <table class="memname">
3599 <tr>
3600 <td class="memname">using <a class="el" href="namespacearmnn.html#a5a665483e56a688e9f8180accdf72d80">IBackendUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>, void(*)(<a class="el" href="classarmnn_1_1_i_backend.html">IBackend</a>* backend)&gt;</td>
3601 </tr>
3602 </table>
3603</div><div class="memdoc">
3604
3605<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00155">155</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
3606
3607</div>
3608</div>
3609<a id="a2d3a708a26ac6d77bf8f15506e89a25a"></a>
3610<h2 class="memtitle"><span class="permalink"><a href="#a2d3a708a26ac6d77bf8f15506e89a25a">&#9670;&nbsp;</a></span>IGpuAccTunedParametersPtr</h2>
3611
3612<div class="memitem">
3613<div class="memproto">
3614 <table class="memname">
3615 <tr>
3616 <td class="memname">using <a class="el" href="namespacearmnn.html#a2d3a708a26ac6d77bf8f15506e89a25a">IGpuAccTunedParametersPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.html">IGpuAccTunedParameters</a>&gt;</td>
3617 </tr>
3618 </table>
3619</div><div class="memdoc">
3620
3621<p>The following API is replaced by the backend options API. </p>
3622
3623<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.html#l00166">166</a> of file <a class="el" href="_i_runtime_8hpp_source.html">IRuntime.hpp</a>.</p>
3624
3625</div>
3626</div>
3627<a id="a11fa919c11fe46aad613b2e960fcfe90"></a>
3628<h2 class="memtitle"><span class="permalink"><a href="#a11fa919c11fe46aad613b2e960fcfe90">&#9670;&nbsp;</a></span>ILayerSupportSharedPtr</h2>
3629
3630<div class="memitem">
3631<div class="memproto">
3632 <table class="memname">
3633 <tr>
3634 <td class="memname">using <a class="el" href="namespacearmnn.html#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a>&gt;</td>
3635 </tr>
3636 </table>
3637</div><div class="memdoc">
3638
3639<p class="definition">Definition at line <a class="el" href="_i_layer_support_8hpp_source.html#l00374">374</a> of file <a class="el" href="_i_layer_support_8hpp_source.html">ILayerSupport.hpp</a>.</p>
3640
3641</div>
3642</div>
3643<a id="a12bff6d51d63dac1375c89bc8415dc46"></a>
3644<h2 class="memtitle"><span class="permalink"><a href="#a12bff6d51d63dac1375c89bc8415dc46">&#9670;&nbsp;</a></span>IMemoryManagerUniquePtr</h2>
3645
3646<div class="memitem">
3647<div class="memproto">
3648 <table class="memname">
3649 <tr>
3650 <td class="memname">using <a class="el" href="namespacearmnn.html#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_memory_manager.html">IMemoryManager</a>&gt;</td>
3651 </tr>
3652 </table>
3653</div><div class="memdoc">
3654
3655<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_memory_manager_8hpp_source.html#l00024">24</a> of file <a class="el" href="include_2armnn_2backends_2_i_memory_manager_8hpp_source.html">IMemoryManager.hpp</a>.</p>
3656
3657</div>
3658</div>
3659<a id="ace74f6f9feb95a964a49d79458232703"></a>
3660<h2 class="memtitle"><span class="permalink"><a href="#ace74f6f9feb95a964a49d79458232703">&#9670;&nbsp;</a></span>INetworkPtr</h2>
3661
3662<div class="memitem">
3663<div class="memproto">
3664 <table class="memname">
3665 <tr>
3666 <td class="memname">using <a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network.html">INetwork</a>* network)&gt;</td>
3667 </tr>
3668 </table>
3669</div><div class="memdoc">
3670
3671<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.html#l00085">85</a> of file <a class="el" href="_i_network_8hpp_source.html">INetwork.hpp</a>.</p>
3672
3673</div>
3674</div>
3675<a id="a41119e261eec9343888d2ceab1e4999a"></a>
3676<h2 class="memtitle"><span class="permalink"><a href="#a41119e261eec9343888d2ceab1e4999a">&#9670;&nbsp;</a></span>INetworkQuantizerPtr</h2>
3677
3678<div class="memitem">
3679<div class="memproto">
3680 <table class="memname">
3681 <tr>
3682 <td class="memname">using <a class="el" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> = std::unique_ptr&lt;class <a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network_quantizer.html">INetworkQuantizer</a>* quantizer)&gt;</td>
3683 </tr>
3684 </table>
3685</div><div class="memdoc">
3686
3687<p class="definition">Definition at line <a class="el" href="_i_network_quantizer_8hpp_source.html#l00029">29</a> of file <a class="el" href="_i_network_quantizer_8hpp_source.html">INetworkQuantizer.hpp</a>.</p>
3688
3689</div>
3690</div>
3691<a id="a2231ac018fe2c465f2d42fef597d67e7"></a>
3692<h2 class="memtitle"><span class="permalink"><a href="#a2231ac018fe2c465f2d42fef597d67e7">&#9670;&nbsp;</a></span>InputQueueDescriptor</h2>
3693
3694<div class="memitem">
3695<div class="memproto">
3696 <table class="memname">
3697 <tr>
3698 <td class="memname">using <a class="el" href="namespacearmnn.html#a2231ac018fe2c465f2d42fef597d67e7">InputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td>
3699 </tr>
3700 </table>
3701</div><div class="memdoc">
3702
3703<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00063">63</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
3704
3705</div>
3706</div>
3707<a id="aa01bce88f89975a5a031db4cc8861527"></a>
3708<h2 class="memtitle"><span class="permalink"><a href="#aa01bce88f89975a5a031db4cc8861527">&#9670;&nbsp;</a></span>InputTensors</h2>
3709
3710<div class="memitem">
3711<div class="memproto">
3712 <table class="memname">
3713 <tr>
3714 <td class="memname">using <a class="el" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> = std::vector&lt;std::pair&lt;<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a>&gt; &gt;</td>
3715 </tr>
3716 </table>
3717</div><div class="memdoc">
3718
3719<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.html#l00225">225</a> of file <a class="el" href="_tensor_8hpp_source.html">Tensor.hpp</a>.</p>
3720
3721</div>
3722</div>
3723<a id="a86e4b37c7c48cf5fbc5e99ccc6fd50b7"></a>
3724<h2 class="memtitle"><span class="permalink"><a href="#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">&#9670;&nbsp;</a></span>instead</h2>
3725
3726<div class="memitem">
3727<div class="memproto">
3728 <table class="memname">
3729 <tr>
3730 <td class="memname">using <a class="el" href="namespacearmnn.html#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">instead</a> = <a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a></td>
3731 </tr>
3732 </table>
3733</div><div class="memdoc">
3734
3735<p class="definition">Definition at line <a class="el" href="_subgraph_view_8hpp_source.html#l00102">102</a> of file <a class="el" href="_subgraph_view_8hpp_source.html">SubgraphView.hpp</a>.</p>
3736
3737</div>
3738</div>
3739<a id="a3e4b88b993c90b274e0bd268c35d798e"></a>
3740<h2 class="memtitle"><span class="permalink"><a href="#a3e4b88b993c90b274e0bd268c35d798e">&#9670;&nbsp;</a></span>Int32Workload</h2>
3741
3742<div class="memitem">
3743<div class="memproto">
3744 <table class="memname">
3745 <tr>
3746 <td class="memname">using <a class="el" href="namespacearmnn.html#a3e4b88b993c90b274e0bd268c35d798e">Int32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>&gt;</td>
3747 </tr>
3748 </table>
3749</div><div class="memdoc">
3750
3751<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00164">164</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
3752
3753</div>
3754</div>
3755<a id="a674efcf6cbdb9e831d653ff0e821fb38"></a>
3756<h2 class="memtitle"><span class="permalink"><a href="#a674efcf6cbdb9e831d653ff0e821fb38">&#9670;&nbsp;</a></span>IOptimizedNetworkPtr</h2>
3757
3758<div class="memitem">
3759<div class="memproto">
3760 <table class="memname">
3761 <tr>
3762 <td class="memname">using <a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_optimized_network.html">IOptimizedNetwork</a>* network)&gt;</td>
3763 </tr>
3764 </table>
3765</div><div class="memdoc">
3766
3767<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.html#l00544">544</a> of file <a class="el" href="_i_network_8hpp_source.html">INetwork.hpp</a>.</p>
3768
3769</div>
3770</div>
3771<a id="a150468a02bd7b2d2d061c4aaaee939f0"></a>
3772<h2 class="memtitle"><span class="permalink"><a href="#a150468a02bd7b2d2d061c4aaaee939f0">&#9670;&nbsp;</a></span>IRuntimePtr</h2>
3773
3774<div class="memitem">
3775<div class="memproto">
3776 <table class="memname">
3777 <tr>
3778 <td class="memname">using <a class="el" href="namespacearmnn.html#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a>, void(*)(<a class="el" href="classarmnn_1_1_i_runtime.html">IRuntime</a>* runtime)&gt;</td>
3779 </tr>
3780 </table>
3781</div><div class="memdoc">
3782
3783<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.html#l00024">24</a> of file <a class="el" href="_i_runtime_8hpp_source.html">IRuntime.hpp</a>.</p>
3784
3785</div>
3786</div>
3787<a id="ab8cf8f9fb6792e654c2d8d8382f6f01b"></a>
3788<h2 class="memtitle"><span class="permalink"><a href="#ab8cf8f9fb6792e654c2d8d8382f6f01b">&#9670;&nbsp;</a></span>LayerBindingId</h2>
3789
3790<div class="memitem">
3791<div class="memproto">
3792 <table class="memname">
3793 <tr>
3794 <td class="memname">using <a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> = int</td>
3795 </tr>
3796 </table>
3797</div><div class="memdoc">
3798
3799<p>Type of identifiers for bindable layers (inputs, outputs). </p>
3800
3801<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00168">168</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
3802
3803</div>
3804</div>
3805<a id="afad4088a9a058114ee5f87246f87bf49"></a>
3806<h2 class="memtitle"><span class="permalink"><a href="#afad4088a9a058114ee5f87246f87bf49">&#9670;&nbsp;</a></span>LayerGuid</h2>
3807
3808<div class="memitem">
3809<div class="memproto">
3810 <table class="memname">
3811 <tr>
3812 <td class="memname">using <a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> = <a class="el" href="classarmnn_1_1profiling_1_1_profiling_guid.html">profiling::ProfilingGuid</a></td>
3813 </tr>
3814 </table>
3815</div><div class="memdoc">
3816
3817<p>Define LayerGuid type. </p>
3818
3819<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00233">233</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
3820
3821</div>
3822</div>
3823<a id="a419086ecb4dc9d0f9e5d8933c87e2ea2"></a>
3824<h2 class="memtitle"><span class="permalink"><a href="#a419086ecb4dc9d0f9e5d8933c87e2ea2">&#9670;&nbsp;</a></span>LayerPriority</h2>
3825
3826<div class="memitem">
3827<div class="memproto">
3828 <table class="memname">
3829 <tr>
3830 <td class="memname">using <a class="el" href="namespacearmnn.html#a419086ecb4dc9d0f9e5d8933c87e2ea2">LayerPriority</a> = unsigned int</td>
3831 </tr>
3832 </table>
3833</div><div class="memdoc">
3834
3835<p class="definition">Definition at line <a class="el" href="_layer_8hpp_source.html#l00207">207</a> of file <a class="el" href="_layer_8hpp_source.html">Layer.hpp</a>.</p>
3836
3837</div>
3838</div>
3839<a id="a6b5db6cc9aad8ec0ac7b14f859aacdab"></a>
3840<h2 class="memtitle"><span class="permalink"><a href="#a6b5db6cc9aad8ec0ac7b14f859aacdab">&#9670;&nbsp;</a></span>LayerTypeOf</h2>
3841
3842<div class="memitem">
3843<div class="memproto">
3844 <table class="memname">
3845 <tr>
3846 <td class="memname">using <a class="el" href="namespacearmnn.html#a6b5db6cc9aad8ec0ac7b14f859aacdab">LayerTypeOf</a> = typename <a class="el" href="structarmnn_1_1_layer_type_of_impl.html">LayerTypeOfImpl</a>&lt;Type&gt;::Type</td>
3847 </tr>
3848 </table>
3849</div><div class="memdoc">
3850
3851<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00073">73</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
3852
3853</div>
3854</div>
3855<a id="ac14705405cbcdd580df613de6766fe65"></a>
3856<h2 class="memtitle"><span class="permalink"><a href="#ac14705405cbcdd580df613de6766fe65">&#9670;&nbsp;</a></span>LogSoftmaxDescriptor</h2>
3857
3858<div class="memitem">
3859<div class="memproto">
3860 <table class="memname">
3861 <tr>
3862 <td class="memname">typedef <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> <a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a></td>
3863 </tr>
3864 </table>
3865</div><div class="memdoc">
3866
3867<p>A LogSoftmaxDescriptor for the <a class="el" href="classarmnn_1_1_log_softmax_layer.html" title="This layer represents a log softmax operation. ">LogSoftmaxLayer</a>. </p>
3868
3869<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00142">142</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
3870
3871</div>
3872</div>
3873<a id="a5b05f3b7208ec7cea3338e30057c0bac"></a>
3874<h2 class="memtitle"><span class="permalink"><a href="#a5b05f3b7208ec7cea3338e30057c0bac">&#9670;&nbsp;</a></span>MemorySourceFlags</h2>
3875
3876<div class="memitem">
3877<div class="memproto">
3878 <table class="memname">
3879 <tr>
3880 <td class="memname">using <a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> = unsigned int</td>
3881 </tr>
3882 </table>
3883</div><div class="memdoc">
3884
3885<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00021">21</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
3886
3887</div>
3888</div>
3889<a id="a003d213dd28b0b8c0f26fbf268ccb975"></a>
3890<h2 class="memtitle"><span class="permalink"><a href="#a003d213dd28b0b8c0f26fbf268ccb975">&#9670;&nbsp;</a></span>MergerDescriptor</h2>
3891
3892<div class="memitem">
3893<div class="memproto">
3894 <table class="memname">
3895 <tr>
3896 <td class="memname">using <a class="el" href="namespacearmnn.html#a003d213dd28b0b8c0f26fbf268ccb975">MergerDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a></td>
3897 </tr>
3898 </table>
3899</div><div class="memdoc">
3900
3901<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.html#l00049">49</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.html">DescriptorsFwd.hpp</a>.</p>
3902
3903</div>
3904</div>
3905<a id="a308ba160745ba35e1de8d698d0139eb4"></a>
3906<h2 class="memtitle"><span class="permalink"><a href="#a308ba160745ba35e1de8d698d0139eb4">&#9670;&nbsp;</a></span>MergerQueueDescriptor</h2>
3907
3908<div class="memitem">
3909<div class="memproto">
3910 <table class="memname">
3911 <tr>
3912 <td class="memname">using <a class="el" href="namespacearmnn.html#a308ba160745ba35e1de8d698d0139eb4">MergerQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a></td>
3913 </tr>
3914 </table>
3915</div><div class="memdoc">
3916
3917<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00121">121</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
3918
3919</div>
3920</div>
3921<a id="a997e96288bdb106c922202e3f33d5d7b"></a>
3922<h2 class="memtitle"><span class="permalink"><a href="#a997e96288bdb106c922202e3f33d5d7b">&#9670;&nbsp;</a></span>MinMaxRange</h2>
3923
3924<div class="memitem">
3925<div class="memproto">
3926 <table class="memname">
3927 <tr>
3928 <td class="memname">using <a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> = std::pair&lt;float, float&gt;</td>
3929 </tr>
3930 </table>
3931</div><div class="memdoc">
3932
3933<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00029">29</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
3934
3935</div>
3936</div>
3937<a id="a061aafb62b3769f55369845c3990ec7a"></a>
3938<h2 class="memtitle"><span class="permalink"><a href="#a061aafb62b3769f55369845c3990ec7a">&#9670;&nbsp;</a></span>MinMaxRangeMap</h2>
3939
3940<div class="memitem">
3941<div class="memproto">
3942 <table class="memname">
3943 <tr>
3944 <td class="memname">using <a class="el" href="namespacearmnn.html#a061aafb62b3769f55369845c3990ec7a">MinMaxRangeMap</a> = std::unordered_map&lt;<a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>, <a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a>&gt;</td>
3945 </tr>
3946 </table>
3947</div><div class="memdoc">
3948
3949<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00031">31</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
3950
3951</div>
3952</div>
3953<a id="ac757baefa4b72b54c38f713f86418f8a"></a>
3954<h2 class="memtitle"><span class="permalink"><a href="#ac757baefa4b72b54c38f713f86418f8a">&#9670;&nbsp;</a></span>MinMaxRanges</h2>
3955
3956<div class="memitem">
3957<div class="memproto">
3958 <table class="memname">
3959 <tr>
3960 <td class="memname">using <a class="el" href="namespacearmnn.html#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> = std::vector&lt;<a class="el" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a>&gt;</td>
3961 </tr>
3962 </table>
3963</div><div class="memdoc">
3964
3965<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00030">30</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
3966
3967</div>
3968</div>
3969<a id="a18b8b3bd9e39c84e36ab560978ab64c7"></a>
3970<h2 class="memtitle"><span class="permalink"><a href="#a18b8b3bd9e39c84e36ab560978ab64c7">&#9670;&nbsp;</a></span>NeonGreaterFloat32Workload</h2>
3971
3972<div class="memitem">
3973<div class="memproto">
3974 <table class="memname">
3975 <tr>
3976 <td class="memname">using <a class="el" href="namespacearmnn.html#a18b8b3bd9e39c84e36ab560978ab64c7">NeonGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
3977 </tr>
3978 </table>
3979</div><div class="memdoc">
3980
3981<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8hpp_source.html#l00033">33</a> of file <a class="el" href="_neon_greater_workload_8hpp_source.html">NeonGreaterWorkload.hpp</a>.</p>
3982
3983</div>
3984</div>
3985<a id="a9b0bb8592cd6e6cb693d305825fae448"></a>
3986<h2 class="memtitle"><span class="permalink"><a href="#a9b0bb8592cd6e6cb693d305825fae448">&#9670;&nbsp;</a></span>NeonGreaterUint8Workload</h2>
3987
3988<div class="memitem">
3989<div class="memproto">
3990 <table class="memname">
3991 <tr>
3992 <td class="memname">using <a class="el" href="namespacearmnn.html#a9b0bb8592cd6e6cb693d305825fae448">NeonGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.html">NeonGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
3993 </tr>
3994 </table>
3995</div><div class="memdoc">
3996
3997<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8hpp_source.html#l00034">34</a> of file <a class="el" href="_neon_greater_workload_8hpp_source.html">NeonGreaterWorkload.hpp</a>.</p>
3998
3999</div>
4000</div>
4001<a id="a83015160d8c67d5d77735eb0d4033d9a"></a>
4002<h2 class="memtitle"><span class="permalink"><a href="#a83015160d8c67d5d77735eb0d4033d9a">&#9670;&nbsp;</a></span>NetworkId</h2>
4003
4004<div class="memitem">
4005<div class="memproto">
4006 <table class="memname">
4007 <tr>
4008 <td class="memname">using <a class="el" href="namespacearmnn.html#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> = int</td>
4009 </tr>
4010 </table>
4011</div><div class="memdoc">
4012
4013<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.html#l00019">19</a> of file <a class="el" href="_i_runtime_8hpp_source.html">IRuntime.hpp</a>.</p>
4014
4015</div>
4016</div>
4017<a id="a9b8e5a95f8c061bbbcdb036915dcb61a"></a>
4018<h2 class="memtitle"><span class="permalink"><a href="#a9b8e5a95f8c061bbbcdb036915dcb61a">&#9670;&nbsp;</a></span>OffsetScalePair</h2>
4019
4020<div class="memitem">
4021<div class="memproto">
4022 <table class="memname">
4023 <tr>
4024 <td class="memname">using <a class="el" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> = std::pair&lt;float, int&gt;</td>
4025 </tr>
4026 </table>
4027</div><div class="memdoc">
4028
4029<p class="definition">Definition at line <a class="el" href="_network_quantization_scheme_8hpp_source.html#l00016">16</a> of file <a class="el" href="_network_quantization_scheme_8hpp_source.html">NetworkQuantizationScheme.hpp</a>.</p>
4030
4031</div>
4032</div>
4033<a id="a37a1a6b381ccc76df203fee023234996"></a>
4034<h2 class="memtitle"><span class="permalink"><a href="#a37a1a6b381ccc76df203fee023234996">&#9670;&nbsp;</a></span>OutputQueueDescriptor</h2>
4035
4036<div class="memitem">
4037<div class="memproto">
4038 <table class="memname">
4039 <tr>
4040 <td class="memname">using <a class="el" href="namespacearmnn.html#a37a1a6b381ccc76df203fee023234996">OutputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a></td>
4041 </tr>
4042 </table>
4043</div><div class="memdoc">
4044
4045<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00064">64</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
4046
4047</div>
4048</div>
4049<a id="a8f091a512915d1cb29a4ebf13dfc53ea"></a>
4050<h2 class="memtitle"><span class="permalink"><a href="#a8f091a512915d1cb29a4ebf13dfc53ea">&#9670;&nbsp;</a></span>OutputTensors</h2>
4051
4052<div class="memitem">
4053<div class="memproto">
4054 <table class="memname">
4055 <tr>
4056 <td class="memname">using <a class="el" href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a> = std::vector&lt;std::pair&lt;<a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_tensor.html">Tensor</a>&gt; &gt;</td>
4057 </tr>
4058 </table>
4059</div><div class="memdoc">
4060
4061<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.html#l00226">226</a> of file <a class="el" href="_tensor_8hpp_source.html">Tensor.hpp</a>.</p>
4062
4063</div>
4064</div>
4065<a id="a8c42c6647e31ebe525aeba878d133e45"></a>
4066<h2 class="memtitle"><span class="permalink"><a href="#a8c42c6647e31ebe525aeba878d133e45">&#9670;&nbsp;</a></span>ParameterStringifyFunction</h2>
4067
4068<div class="memitem">
4069<div class="memproto">
4070 <table class="memname">
4071 <tr>
4072 <td class="memname">using <a class="el" href="namespacearmnn.html#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> = std::function&lt;void(const std::string&amp; name, const std::string&amp; value)&gt;</td>
4073 </tr>
4074 </table>
4075</div><div class="memdoc">
4076
4077<p class="definition">Definition at line <a class="el" href="_serialize_layer_parameters_8hpp_source.html#l00014">14</a> of file <a class="el" href="_serialize_layer_parameters_8hpp_source.html">SerializeLayerParameters.hpp</a>.</p>
4078
4079</div>
4080</div>
4081<a id="ae73bf7cb78cc552c5511431b0d583f14"></a>
4082<h2 class="memtitle"><span class="permalink"><a href="#ae73bf7cb78cc552c5511431b0d583f14">&#9670;&nbsp;</a></span>PreCompiledObjectDeleter</h2>
4083
4084<div class="memitem">
4085<div class="memproto">
4086 <table class="memname">
4087 <tr>
4088 <td class="memname">using <a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> = std::function&lt;void(const void*)&gt;</td>
4089 </tr>
4090 </table>
4091</div><div class="memdoc">
4092
4093<p class="definition">Definition at line <a class="el" href="_pre_compiled_layer_8hpp_source.html#l00019">19</a> of file <a class="el" href="_pre_compiled_layer_8hpp_source.html">PreCompiledLayer.hpp</a>.</p>
4094
4095</div>
4096</div>
4097<a id="ae3bff3986cb5a50637c9b3238d821f54"></a>
4098<h2 class="memtitle"><span class="permalink"><a href="#ae3bff3986cb5a50637c9b3238d821f54">&#9670;&nbsp;</a></span>PreCompiledObjectPtr</h2>
4099
4100<div class="memitem">
4101<div class="memproto">
4102 <table class="memname">
4103 <tr>
4104 <td class="memname">using <a class="el" href="namespacearmnn.html#ae3bff3986cb5a50637c9b3238d821f54">PreCompiledObjectPtr</a> = std::unique_ptr&lt;void, <a class="el" href="namespacearmnn.html#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a>&gt;</td>
4105 </tr>
4106 </table>
4107</div><div class="memdoc">
4108
4109<p class="definition">Definition at line <a class="el" href="_pre_compiled_layer_8hpp_source.html#l00020">20</a> of file <a class="el" href="_pre_compiled_layer_8hpp_source.html">PreCompiledLayer.hpp</a>.</p>
4110
4111</div>
4112</div>
4113<a id="a7a9d365fbb868d53e67c4cdfdbf9cf7e"></a>
4114<h2 class="memtitle"><span class="permalink"><a href="#a7a9d365fbb868d53e67c4cdfdbf9cf7e">&#9670;&nbsp;</a></span>RefAdditionWorkload</h2>
4115
4116<div class="memitem">
4117<div class="memproto">
4118 <table class="memname">
4119 <tr>
4120 <td class="memname">using <a class="el" href="namespacearmnn.html#a7a9d365fbb868d53e67c4cdfdbf9cf7e">RefAdditionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::plus&lt;float&gt;, <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a5b84f797c82a1ad494549330af517ad5">StringMapping::RefAdditionWorkload_Execute</a>&gt;</td>
4121 </tr>
4122 </table>
4123</div><div class="memdoc">
4124
4125<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00041">41</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
4126
4127</div>
4128</div>
4129<a id="ac8d7aa6e66fb59a839833b160f619228"></a>
4130<h2 class="memtitle"><span class="permalink"><a href="#ac8d7aa6e66fb59a839833b160f619228">&#9670;&nbsp;</a></span>RefDebugFloat16Workload</h2>
4131
4132<div class="memitem">
4133<div class="memproto">
4134 <table class="memname">
4135 <tr>
4136 <td class="memname">using <a class="el" href="namespacearmnn.html#ac8d7aa6e66fb59a839833b160f619228">RefDebugFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
4137 </tr>
4138 </table>
4139</div><div class="memdoc">
4140
4141<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00040">40</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
4142
4143</div>
4144</div>
4145<a id="ad194629946077375dcce05b2449334c8"></a>
4146<h2 class="memtitle"><span class="permalink"><a href="#ad194629946077375dcce05b2449334c8">&#9670;&nbsp;</a></span>RefDebugFloat32Workload</h2>
4147
4148<div class="memitem">
4149<div class="memproto">
4150 <table class="memname">
4151 <tr>
4152 <td class="memname">using <a class="el" href="namespacearmnn.html#ad194629946077375dcce05b2449334c8">RefDebugFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4153 </tr>
4154 </table>
4155</div><div class="memdoc">
4156
4157<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00041">41</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
4158
4159</div>
4160</div>
4161<a id="a44ab486f2a7728d75bbf52ffa1025ab5"></a>
4162<h2 class="memtitle"><span class="permalink"><a href="#a44ab486f2a7728d75bbf52ffa1025ab5">&#9670;&nbsp;</a></span>RefDebugQAsymmS8Workload</h2>
4163
4164<div class="memitem">
4165<div class="memproto">
4166 <table class="memname">
4167 <tr>
4168 <td class="memname">using <a class="el" href="namespacearmnn.html#a44ab486f2a7728d75bbf52ffa1025ab5">RefDebugQAsymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a>&gt;</td>
4169 </tr>
4170 </table>
4171</div><div class="memdoc">
4172
4173<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00043">43</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
4174
4175</div>
4176</div>
4177<a id="a0c1df21c99a094d2f078ca90047a73ff"></a>
4178<h2 class="memtitle"><span class="permalink"><a href="#a0c1df21c99a094d2f078ca90047a73ff">&#9670;&nbsp;</a></span>RefDebugQAsymmU8Workload</h2>
4179
4180<div class="memitem">
4181<div class="memproto">
4182 <table class="memname">
4183 <tr>
4184 <td class="memname">using <a class="el" href="namespacearmnn.html#a0c1df21c99a094d2f078ca90047a73ff">RefDebugQAsymmU8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4185 </tr>
4186 </table>
4187</div><div class="memdoc">
4188
4189<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00042">42</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
4190
4191</div>
4192</div>
4193<a id="ae6d1d064ec7d33b2cc5bcc8afafbe193"></a>
4194<h2 class="memtitle"><span class="permalink"><a href="#ae6d1d064ec7d33b2cc5bcc8afafbe193">&#9670;&nbsp;</a></span>RefDebugQSymmS16Workload</h2>
4195
4196<div class="memitem">
4197<div class="memproto">
4198 <table class="memname">
4199 <tr>
4200 <td class="memname">using <a class="el" href="namespacearmnn.html#ae6d1d064ec7d33b2cc5bcc8afafbe193">RefDebugQSymmS16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
4201 </tr>
4202 </table>
4203</div><div class="memdoc">
4204
4205<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00044">44</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
4206
4207</div>
4208</div>
4209<a id="ad607a96fafba334ba5bde946947dd0af"></a>
4210<h2 class="memtitle"><span class="permalink"><a href="#ad607a96fafba334ba5bde946947dd0af">&#9670;&nbsp;</a></span>RefDebugQSymmS8Workload</h2>
4211
4212<div class="memitem">
4213<div class="memproto">
4214 <table class="memname">
4215 <tr>
4216 <td class="memname">using <a class="el" href="namespacearmnn.html#ad607a96fafba334ba5bde946947dd0af">RefDebugQSymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a>&gt;</td>
4217 </tr>
4218 </table>
4219</div><div class="memdoc">
4220
4221<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00045">45</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
4222
4223</div>
4224</div>
4225<a id="a2b2b0a60cbb51bf3eb9bd2899aee2c86"></a>
4226<h2 class="memtitle"><span class="permalink"><a href="#a2b2b0a60cbb51bf3eb9bd2899aee2c86">&#9670;&nbsp;</a></span>RefDebugSigned32Workload</h2>
4227
4228<div class="memitem">
4229<div class="memproto">
4230 <table class="memname">
4231 <tr>
4232 <td class="memname">using <a class="el" href="namespacearmnn.html#a2b2b0a60cbb51bf3eb9bd2899aee2c86">RefDebugSigned32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.html">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a>&gt;</td>
4233 </tr>
4234 </table>
4235</div><div class="memdoc">
4236
4237<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.html#l00046">46</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.html">RefDebugWorkload.hpp</a>.</p>
4238
4239</div>
4240</div>
4241<a id="a5c3a2aa3adc87d79164914b63f27dc25"></a>
4242<h2 class="memtitle"><span class="permalink"><a href="#a5c3a2aa3adc87d79164914b63f27dc25">&#9670;&nbsp;</a></span>RefDivisionWorkload</h2>
4243
4244<div class="memitem">
4245<div class="memproto">
4246 <table class="memname">
4247 <tr>
4248 <td class="memname">using <a class="el" href="namespacearmnn.html#a5c3a2aa3adc87d79164914b63f27dc25">RefDivisionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::divides&lt;float&gt;, <a class="el" href="structarmnn_1_1_division_queue_descriptor.html">DivisionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a69485fd6282ca5ed7d50589f8f759645">StringMapping::RefDivisionWorkload_Execute</a>&gt;</td>
4249 </tr>
4250 </table>
4251</div><div class="memdoc">
4252
4253<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00056">56</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
4254
4255</div>
4256</div>
4257<a id="a044df856403d0af13189f49bcfb209dd"></a>
4258<h2 class="memtitle"><span class="permalink"><a href="#a044df856403d0af13189f49bcfb209dd">&#9670;&nbsp;</a></span>RefMaximumWorkload</h2>
4259
4260<div class="memitem">
4261<div class="memproto">
4262 <table class="memname">
4263 <tr>
4264 <td class="memname">using <a class="el" href="namespacearmnn.html#a044df856403d0af13189f49bcfb209dd">RefMaximumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;<a class="el" href="structarmnn_1_1maximum.html">armnn::maximum</a>&lt;float&gt;, <a class="el" href="structarmnn_1_1_maximum_queue_descriptor.html">MaximumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11aea93564675347f60a80cf699c177a80e">StringMapping::RefMaximumWorkload_Execute</a>&gt;</td>
4265 </tr>
4266 </table>
4267</div><div class="memdoc">
4268
4269<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00061">61</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
4270
4271</div>
4272</div>
4273<a id="aa8c69a3741eafef59e51564511403fb8"></a>
4274<h2 class="memtitle"><span class="permalink"><a href="#aa8c69a3741eafef59e51564511403fb8">&#9670;&nbsp;</a></span>RefMinimumWorkload</h2>
4275
4276<div class="memitem">
4277<div class="memproto">
4278 <table class="memname">
4279 <tr>
4280 <td class="memname">using <a class="el" href="namespacearmnn.html#aa8c69a3741eafef59e51564511403fb8">RefMinimumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;<a class="el" href="structarmnn_1_1minimum.html">armnn::minimum</a>&lt;float&gt;, <a class="el" href="structarmnn_1_1_minimum_queue_descriptor.html">MinimumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a9bddcf9777d5ca3ab5e40b3a93559625">StringMapping::RefMinimumWorkload_Execute</a>&gt;</td>
4281 </tr>
4282 </table>
4283</div><div class="memdoc">
4284
4285<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00066">66</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
4286
4287</div>
4288</div>
4289<a id="aabff736a576814611f65ce1a14600a17"></a>
4290<h2 class="memtitle"><span class="permalink"><a href="#aabff736a576814611f65ce1a14600a17">&#9670;&nbsp;</a></span>RefMultiplicationWorkload</h2>
4291
4292<div class="memitem">
4293<div class="memproto">
4294 <table class="memname">
4295 <tr>
4296 <td class="memname">using <a class="el" href="namespacearmnn.html#aabff736a576814611f65ce1a14600a17">RefMultiplicationWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::multiplies&lt;float&gt;, <a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.html">MultiplicationQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11ab3eb648f0f29bf56db68d80624b9bb6c">StringMapping::RefMultiplicationWorkload_Execute</a>&gt;</td>
4297 </tr>
4298 </table>
4299</div><div class="memdoc">
4300
4301<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00051">51</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
4302
4303</div>
4304</div>
4305<a id="a9e2582f828ee36a6bce3e1abdd660bc5"></a>
4306<h2 class="memtitle"><span class="permalink"><a href="#a9e2582f828ee36a6bce3e1abdd660bc5">&#9670;&nbsp;</a></span>RefPadFloat16Workload</h2>
4307
4308<div class="memitem">
4309<div class="memproto">
4310 <table class="memname">
4311 <tr>
4312 <td class="memname">using <a class="el" href="namespacearmnn.html#a9e2582f828ee36a6bce3e1abdd660bc5">RefPadFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
4313 </tr>
4314 </table>
4315</div><div class="memdoc">
4316
4317<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00034">34</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
4318
4319</div>
4320</div>
4321<a id="aef8145fff0dca42e42786745414fec96"></a>
4322<h2 class="memtitle"><span class="permalink"><a href="#aef8145fff0dca42e42786745414fec96">&#9670;&nbsp;</a></span>RefPadFloat32Workload</h2>
4323
4324<div class="memitem">
4325<div class="memproto">
4326 <table class="memname">
4327 <tr>
4328 <td class="memname">using <a class="el" href="namespacearmnn.html#aef8145fff0dca42e42786745414fec96">RefPadFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4329 </tr>
4330 </table>
4331</div><div class="memdoc">
4332
4333<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00033">33</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
4334
4335</div>
4336</div>
4337<a id="abc074517cf18f4e0827faca852df7bd9"></a>
4338<h2 class="memtitle"><span class="permalink"><a href="#abc074517cf18f4e0827faca852df7bd9">&#9670;&nbsp;</a></span>RefPadQAsymm8Workload</h2>
4339
4340<div class="memitem">
4341<div class="memproto">
4342 <table class="memname">
4343 <tr>
4344 <td class="memname">using <a class="el" href="namespacearmnn.html#abc074517cf18f4e0827faca852df7bd9">RefPadQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4345 </tr>
4346 </table>
4347</div><div class="memdoc">
4348
4349<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00035">35</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
4350
4351</div>
4352</div>
4353<a id="acc8fc2b1c708fd1c7af0d04e004e8516"></a>
4354<h2 class="memtitle"><span class="permalink"><a href="#acc8fc2b1c708fd1c7af0d04e004e8516">&#9670;&nbsp;</a></span>RefPadQSymm16Workload</h2>
4355
4356<div class="memitem">
4357<div class="memproto">
4358 <table class="memname">
4359 <tr>
4360 <td class="memname">using <a class="el" href="namespacearmnn.html#acc8fc2b1c708fd1c7af0d04e004e8516">RefPadQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.html">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
4361 </tr>
4362 </table>
4363</div><div class="memdoc">
4364
4365<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.html#l00036">36</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.html">RefPadWorkload.hpp</a>.</p>
4366
4367</div>
4368</div>
4369<a id="ad1c0fb6bfa580b04574ab56971b6cbc6"></a>
4370<h2 class="memtitle"><span class="permalink"><a href="#ad1c0fb6bfa580b04574ab56971b6cbc6">&#9670;&nbsp;</a></span>RefPermuteFloat16Workload</h2>
4371
4372<div class="memitem">
4373<div class="memproto">
4374 <table class="memname">
4375 <tr>
4376 <td class="memname">using <a class="el" href="namespacearmnn.html#ad1c0fb6bfa580b04574ab56971b6cbc6">RefPermuteFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
4377 </tr>
4378 </table>
4379</div><div class="memdoc">
4380
4381<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00030">30</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
4382
4383</div>
4384</div>
4385<a id="a54c3f7c7b9909e828a084f68dc78a031"></a>
4386<h2 class="memtitle"><span class="permalink"><a href="#a54c3f7c7b9909e828a084f68dc78a031">&#9670;&nbsp;</a></span>RefPermuteFloat32Workload</h2>
4387
4388<div class="memitem">
4389<div class="memproto">
4390 <table class="memname">
4391 <tr>
4392 <td class="memname">using <a class="el" href="namespacearmnn.html#a54c3f7c7b9909e828a084f68dc78a031">RefPermuteFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4393 </tr>
4394 </table>
4395</div><div class="memdoc">
4396
4397<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00031">31</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
4398
4399</div>
4400</div>
4401<a id="a50ffe5068ecb2fbf7f73b30ef0d753f8"></a>
4402<h2 class="memtitle"><span class="permalink"><a href="#a50ffe5068ecb2fbf7f73b30ef0d753f8">&#9670;&nbsp;</a></span>RefPermuteQAsymm8Workload</h2>
4403
4404<div class="memitem">
4405<div class="memproto">
4406 <table class="memname">
4407 <tr>
4408 <td class="memname">using <a class="el" href="namespacearmnn.html#a50ffe5068ecb2fbf7f73b30ef0d753f8">RefPermuteQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4409 </tr>
4410 </table>
4411</div><div class="memdoc">
4412
4413<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00032">32</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
4414
4415</div>
4416</div>
4417<a id="a6ffed93fad525ce1d534cec2cdaee6bd"></a>
4418<h2 class="memtitle"><span class="permalink"><a href="#a6ffed93fad525ce1d534cec2cdaee6bd">&#9670;&nbsp;</a></span>RefPermuteQSymm16Workload</h2>
4419
4420<div class="memitem">
4421<div class="memproto">
4422 <table class="memname">
4423 <tr>
4424 <td class="memname">using <a class="el" href="namespacearmnn.html#a6ffed93fad525ce1d534cec2cdaee6bd">RefPermuteQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.html">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
4425 </tr>
4426 </table>
4427</div><div class="memdoc">
4428
4429<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.html#l00033">33</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.html">RefPermuteWorkload.hpp</a>.</p>
4430
4431</div>
4432</div>
4433<a id="a01853f5d02495c04636016c1e3e7c144"></a>
4434<h2 class="memtitle"><span class="permalink"><a href="#a01853f5d02495c04636016c1e3e7c144">&#9670;&nbsp;</a></span>RefSubtractionWorkload</h2>
4435
4436<div class="memitem">
4437<div class="memproto">
4438 <table class="memname">
4439 <tr>
4440 <td class="memname">using <a class="el" href="namespacearmnn.html#a01853f5d02495c04636016c1e3e7c144">RefSubtractionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.html">RefElementwiseWorkload</a>&lt;std::minus&lt;float&gt;, <a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.html">SubtractionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.html#a4e7b349a05a558fa6792c71c11a6bf11a3694ad0341ebb1fe50b78efe13672519">StringMapping::RefSubtractionWorkload_Execute</a>&gt;</td>
4441 </tr>
4442 </table>
4443</div><div class="memdoc">
4444
4445<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.html#l00046">46</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.html">RefElementwiseWorkload.hpp</a>.</p>
4446
4447</div>
4448</div>
4449<a id="a0743ed5e860c316a20b68ca96301b411"></a>
4450<h2 class="memtitle"><span class="permalink"><a href="#a0743ed5e860c316a20b68ca96301b411">&#9670;&nbsp;</a></span>ResolveType</h2>
4451
4452<div class="memitem">
4453<div class="memproto">
4454 <table class="memname">
4455 <tr>
4456 <td class="memname">using <a class="el" href="namespacearmnn.html#a0743ed5e860c316a20b68ca96301b411">ResolveType</a> = typename <a class="el" href="structarmnn_1_1_resolve_type_impl.html">ResolveTypeImpl</a>&lt;DT&gt;::Type</td>
4457 </tr>
4458 </table>
4459</div><div class="memdoc">
4460
4461<p class="definition">Definition at line <a class="el" href="_resolve_type_8hpp_source.html#l00066">66</a> of file <a class="el" href="_resolve_type_8hpp_source.html">ResolveType.hpp</a>.</p>
4462
4463</div>
4464</div>
4465<a id="a60291543fe872b795e71e05bcd835fd1"></a>
4466<h2 class="memtitle"><span class="permalink"><a href="#a60291543fe872b795e71e05bcd835fd1">&#9670;&nbsp;</a></span>SplitterDescriptor</h2>
4467
4468<div class="memitem">
4469<div class="memproto">
4470 <table class="memname">
4471 <tr>
4472 <td class="memname">using <a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a> = <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a></td>
4473 </tr>
4474 </table>
4475</div><div class="memdoc">
4476
4477<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.html#l00050">50</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.html">DescriptorsFwd.hpp</a>.</p>
4478
4479</div>
4480</div>
4481<a id="a02847c99a2acae3b267615479f93ab55"></a>
4482<h2 class="memtitle"><span class="permalink"><a href="#a02847c99a2acae3b267615479f93ab55">&#9670;&nbsp;</a></span>supported</h2>
4483
4484<div class="memitem">
4485<div class="memproto">
4486 <table class="memname">
4487 <tr>
4488 <td class="memname">using <a class="el" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a> = <a class="el" href="classarmnn_1_1_i_subgraph_view_converter.html">ISubgraphViewConverter</a></td>
4489 </tr>
4490 </table>
4491</div><div class="memdoc">
4492
4493<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.html#l00031">31</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.html">ISubgraphViewConverter.hpp</a>.</p>
4494
4495</div>
4496</div>
4497<a id="a9eb69ebdaf4ceb8014e7c8a540266100"></a>
4498<h2 class="memtitle"><span class="permalink"><a href="#a9eb69ebdaf4ceb8014e7c8a540266100">&#9670;&nbsp;</a></span>TContainer</h2>
4499
4500<div class="memitem">
4501<div class="memproto">
4502 <table class="memname">
4503 <tr>
4504 <td class="memname">using <a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt;std::vector&lt;float&gt;, std::vector&lt;int&gt;, std::vector&lt;unsigned char&gt; &gt;</td>
4505 </tr>
4506 </table>
4507</div><div class="memdoc">
4508
4509<p class="definition">Definition at line <a class="el" href="_network_quantizer_8cpp_source.html#l00033">33</a> of file <a class="el" href="_network_quantizer_8cpp_source.html">NetworkQuantizer.cpp</a>.</p>
4510
4511</div>
4512</div>
4513<a id="a6d4fbf927a9d8e68cab1d7965c7dbc44"></a>
4514<h2 class="memtitle"><span class="permalink"><a href="#a6d4fbf927a9d8e68cab1d7965c7dbc44">&#9670;&nbsp;</a></span>Uint8ToFloat32Workload</h2>
4515
4516<div class="memitem">
4517<div class="memproto">
4518 <table class="memname">
4519 <tr>
4520 <td class="memname">using <a class="el" href="namespacearmnn.html#a6d4fbf927a9d8e68cab1d7965c7dbc44">Uint8ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.html">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
4521 </tr>
4522 </table>
4523</div><div class="memdoc">
4524
4525<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00192">192</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
4526
4527</div>
4528</div>
4529<a id="ad4d53881107428c301d43b5aad16bfe0"></a>
4530<h2 class="memtitle"><span class="permalink"><a href="#ad4d53881107428c301d43b5aad16bfe0">&#9670;&nbsp;</a></span>Uint8Workload</h2>
4531
4532<div class="memitem">
4533<div class="memproto">
4534 <table class="memname">
4535 <tr>
4536 <td class="memname">using <a class="el" href="namespacearmnn.html#ad4d53881107428c301d43b5aad16bfe0">Uint8Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.html">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.html">QueueDescriptor</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;</td>
4537 </tr>
4538 </table>
4539</div><div class="memdoc">
4540
4541<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.html#l00161">161</a> of file <a class="el" href="_workload_8hpp_source.html">Workload.hpp</a>.</p>
4542
4543</div>
4544</div>
4545<a id="a15f53f26b8495b51d0bba3d1bc4efc80"></a>
4546<h2 class="memtitle"><span class="permalink"><a href="#a15f53f26b8495b51d0bba3d1bc4efc80">&#9670;&nbsp;</a></span>WorkloadQueue</h2>
4547
4548<div class="memitem">
4549<div class="memproto">
4550 <table class="memname">
4551 <tr>
4552 <td class="memname">using <a class="el" href="namespacearmnn.html#a15f53f26b8495b51d0bba3d1bc4efc80">WorkloadQueue</a> = std::vector&lt; std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_workload.html">IWorkload</a>&gt; &gt;</td>
4553 </tr>
4554 </table>
4555</div><div class="memdoc">
4556
4557<p class="definition">Definition at line <a class="el" href="_execution_frame_8hpp_source.html#l00013">13</a> of file <a class="el" href="_execution_frame_8hpp_source.html">ExecutionFrame.hpp</a>.</p>
4558
4559</div>
4560</div>
4561<h2 class="groupheader">Enumeration Type Documentation</h2>
4562<a id="a56297e0f7b215eea46c818cb7528d9ea"></a>
4563<h2 class="memtitle"><span class="permalink"><a href="#a56297e0f7b215eea46c818cb7528d9ea">&#9670;&nbsp;</a></span>ActivationFunction</h2>
4564
4565<div class="memitem">
4566<div class="memproto">
4567<table class="mlabels">
4568 <tr>
4569 <td class="mlabels-left">
4570 <table class="memname">
4571 <tr>
4572 <td class="memname">enum <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a></td>
4573 </tr>
4574 </table>
4575 </td>
4576 <td class="mlabels-right">
4577<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4578 </tr>
4579</table>
4580</div><div class="memdoc">
4581<table class="fieldtable">
4582<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"></a>Sigmoid&#160;</td><td class="fielddoc"></td></tr>
4583<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"></a>TanH&#160;</td><td class="fielddoc"></td></tr>
4584<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"></a>Linear&#160;</td><td class="fielddoc"></td></tr>
4585<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559"></a>ReLu&#160;</td><td class="fielddoc"></td></tr>
4586<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d"></a>BoundedReLu&#160;</td><td class="fielddoc"><p>min(a, max(b, input)) </p>
4587</td></tr>
4588<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"></a>SoftReLu&#160;</td><td class="fielddoc"></td></tr>
4589<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"></a>LeakyReLu&#160;</td><td class="fielddoc"></td></tr>
4590<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
4591<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
4592<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"></a>Square&#160;</td><td class="fielddoc"></td></tr>
4593</table>
4594
4595<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00054">54</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
4596<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a> = 0,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a> = 1,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a> = 2,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a> = 3,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a> = 4, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a> = 5,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a> = 6,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 7,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 8,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a> = 9</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">armnn::ActivationFunction::Sqrt</a></div></div>
4597<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">armnn::ActivationFunction::LeakyReLu</a></div></div>
4598<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">armnn::ActivationFunction::Square</a></div></div>
4599<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">armnn::ActivationFunction::ReLu</a></div></div>
4600<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
4601<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">armnn::ActivationFunction::Sigmoid</a></div></div>
4602<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">armnn::ActivationFunction::SoftReLu</a></div></div>
4603<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">armnn::ActivationFunction::BoundedReLu</a></div><div class="ttdoc">min(a, max(b, input)) </div></div>
4604<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">armnn::ActivationFunction::TanH</a></div></div>
4605<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">armnn::ActivationFunction::Linear</a></div></div>
4606</div><!-- fragment -->
4607</div>
4608</div>
4609<a id="ae7e8cbf71db6a490789ca6dcaa8deeae"></a>
4610<h2 class="memtitle"><span class="permalink"><a href="#ae7e8cbf71db6a490789ca6dcaa8deeae">&#9670;&nbsp;</a></span>ArgMinMaxFunction</h2>
4611
4612<div class="memitem">
4613<div class="memproto">
4614<table class="mlabels">
4615 <tr>
4616 <td class="mlabels-left">
4617 <table class="memname">
4618 <tr>
4619 <td class="memname">enum <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a></td>
4620 </tr>
4621 </table>
4622 </td>
4623 <td class="mlabels-right">
4624<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4625 </tr>
4626</table>
4627</div><div class="memdoc">
4628<table class="fieldtable">
4629<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"></a>Min&#160;</td><td class="fielddoc"></td></tr>
4630<tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
4631</table>
4632
4633<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00068">68</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
4634<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a> = 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 1</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
4635<div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
4636</div><!-- fragment -->
4637</div>
4638</div>
4639<a id="a4dc0adc6737b5944e7671bee71788407"></a>
4640<h2 class="memtitle"><span class="permalink"><a href="#a4dc0adc6737b5944e7671bee71788407">&#9670;&nbsp;</a></span>BoostLogSeverityMapping</h2>
4641
4642<div class="memitem">
4643<div class="memproto">
4644<table class="mlabels">
4645 <tr>
4646 <td class="mlabels-left">
4647 <table class="memname">
4648 <tr>
4649 <td class="memname">enum <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a></td>
4650 </tr>
4651 </table>
4652 </td>
4653 <td class="mlabels-right">
4654<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4655 </tr>
4656</table>
4657</div><div class="memdoc">
4658<table class="fieldtable">
4659<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"></a>trace&#160;</td><td class="fielddoc"></td></tr>
4660<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"></a>debug&#160;</td><td class="fielddoc"></td></tr>
4661<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"></a>info&#160;</td><td class="fielddoc"></td></tr>
4662<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"></a>warning&#160;</td><td class="fielddoc"></td></tr>
4663<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"></a>error&#160;</td><td class="fielddoc"></td></tr>
4664<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"></a>fatal&#160;</td><td class="fielddoc"></td></tr>
4665</table>
4666
4667<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.html#l00147">147</a> of file <a class="el" href="_logging_8hpp_source.html">Logging.hpp</a>.</p>
4668<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">trace</a>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">fatal</a></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
4669<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">armnn::BoostLogSeverityMapping::debug</a></div></div>
4670<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">armnn::BoostLogSeverityMapping::error</a></div></div>
4671<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">armnn::BoostLogSeverityMapping::trace</a></div></div>
4672<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">armnn::BoostLogSeverityMapping::warning</a></div></div>
4673<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">armnn::BoostLogSeverityMapping::fatal</a></div></div>
4674</div><!-- fragment -->
4675</div>
4676</div>
4677<a id="a2d299363c9fc33334c571fa29ca4f58c"></a>
4678<h2 class="memtitle"><span class="permalink"><a href="#a2d299363c9fc33334c571fa29ca4f58c">&#9670;&nbsp;</a></span>ComparisonOperation</h2>
4679
4680<div class="memitem">
4681<div class="memproto">
4682<table class="mlabels">
4683 <tr>
4684 <td class="mlabels-left">
4685 <table class="memname">
4686 <tr>
4687 <td class="memname">enum <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a></td>
4688 </tr>
4689 </table>
4690 </td>
4691 <td class="mlabels-right">
4692<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4693 </tr>
4694</table>
4695</div><div class="memdoc">
4696<table class="fieldtable">
4697<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"></a>Equal&#160;</td><td class="fielddoc"></td></tr>
4698<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"></a>Greater&#160;</td><td class="fielddoc"></td></tr>
4699<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"></a>GreaterOrEqual&#160;</td><td class="fielddoc"></td></tr>
4700<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"></a>Less&#160;</td><td class="fielddoc"></td></tr>
4701<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"></a>LessOrEqual&#160;</td><td class="fielddoc"></td></tr>
4702<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"></a>NotEqual&#160;</td><td class="fielddoc"></td></tr>
4703</table>
4704
4705<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00074">74</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
4706<div class="fragment"><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; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a> = 0,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a> = 1,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a> = 2,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a> = 3,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a> = 4,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a> = 5</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">armnn::ComparisonOperation::NotEqual</a></div></div>
4707<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">armnn::ComparisonOperation::Greater</a></div></div>
4708<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">armnn::ComparisonOperation::LessOrEqual</a></div></div>
4709<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">armnn::ComparisonOperation::Equal</a></div></div>
4710<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">armnn::ComparisonOperation::Less</a></div></div>
4711<div class="ttc" id="namespacearmnn_html_a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"><div class="ttname"><a href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">armnn::ComparisonOperation::GreaterOrEqual</a></div></div>
4712</div><!-- fragment -->
4713</div>
4714</div>
4715<a id="ae2f04a162585c0a5222a537efd5456ae"></a>
4716<h2 class="memtitle"><span class="permalink"><a href="#ae2f04a162585c0a5222a537efd5456ae">&#9670;&nbsp;</a></span>Compute</h2>
4717
4718<div class="memitem">
4719<div class="memproto">
4720<table class="mlabels">
4721 <tr>
4722 <td class="mlabels-left">
4723 <table class="memname">
4724 <tr>
4725 <td class="memname">enum <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a></td>
4726 </tr>
4727 </table>
4728 </td>
4729 <td class="mlabels-right">
4730<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4731 </tr>
4732</table>
4733</div><div class="memdoc">
4734<table class="fieldtable">
4735<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
4736<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"></a>CpuRef&#160;</td><td class="fielddoc"><p>CPU Execution: Reference C++ kernels. </p>
4737</td></tr>
4738<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"></a>CpuAcc&#160;</td><td class="fielddoc"><p>CPU Execution: NEON: ArmCompute. </p>
4739</td></tr>
4740<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"></a>GpuAcc&#160;</td><td class="fielddoc"><p>GPU Execution: OpenCL: ArmCompute. </p>
4741</td></tr>
4742</table>
4743
4744<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00021">21</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
4745<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a> = 1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a> = 2,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a> = 3</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
4746<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
4747<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
4748<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
4749</div><!-- fragment -->
4750</div>
4751</div>
4752<a id="ad1d5cce2d9e9a5d61c243e5c989112e0"></a>
4753<h2 class="memtitle"><span class="permalink"><a href="#ad1d5cce2d9e9a5d61c243e5c989112e0">&#9670;&nbsp;</a></span>DataLayout</h2>
4754
4755<div class="memitem">
4756<div class="memproto">
4757<table class="mlabels">
4758 <tr>
4759 <td class="mlabels-left">
4760 <table class="memname">
4761 <tr>
4762 <td class="memname">enum <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a></td>
4763 </tr>
4764 </table>
4765 </td>
4766 <td class="mlabels-right">
4767<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4768 </tr>
4769</table>
4770</div><div class="memdoc">
4771<table class="fieldtable">
4772<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"></a>NCHW&#160;</td><td class="fielddoc"></td></tr>
4773<tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"></a>NHWC&#160;</td><td class="fielddoc"></td></tr>
4774</table>
4775
4776<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00048">48</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
4777<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a> = 1,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a> = 2</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
4778<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
4779</div><!-- fragment -->
4780</div>
4781</div>
4782<a id="ad8ed01ff3ff33333d8e19db4d2818bb6"></a>
4783<h2 class="memtitle"><span class="permalink"><a href="#ad8ed01ff3ff33333d8e19db4d2818bb6">&#9670;&nbsp;</a></span>DataType</h2>
4784
4785<div class="memitem">
4786<div class="memproto">
4787<table class="mlabels">
4788 <tr>
4789 <td class="mlabels-left">
4790 <table class="memname">
4791 <tr>
4792 <td class="memname">enum <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a></td>
4793 </tr>
4794 </table>
4795 </td>
4796 <td class="mlabels-right">
4797<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4798 </tr>
4799</table>
4800</div><div class="memdoc">
4801<table class="fieldtable">
4802<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"></a>Float16&#160;</td><td class="fielddoc"></td></tr>
4803<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"></a>Float32&#160;</td><td class="fielddoc"></td></tr>
4804<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"></a>QAsymmU8&#160;</td><td class="fielddoc"></td></tr>
4805<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"></a>Signed32&#160;</td><td class="fielddoc"></td></tr>
4806<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"></a>Boolean&#160;</td><td class="fielddoc"></td></tr>
4807<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"></a>QSymmS16&#160;</td><td class="fielddoc"></td></tr>
4808<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"></a>QuantizedSymm8PerAxis&#160;</td><td class="fielddoc"></td></tr>
4809<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"></a>QSymmS8&#160;</td><td class="fielddoc"></td></tr>
4810<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"></a>QAsymmS8&#160;</td><td class="fielddoc"></td></tr>
4811<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"></a>QuantisedAsymm8&#160;</td><td class="fielddoc"></td></tr>
4812<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"></a>QuantisedSymm16&#160;</td><td class="fielddoc"></td></tr>
4813</table>
4814
4815<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00032">32</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
4816<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a> = 0,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a> = 1,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a> = 2,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a> = 3,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a> = 4,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a> = 5,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a> <a class="code" href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Per Axis property inferred by number of scales in TensorInfo&quot;</span>) = 6,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a> = 7,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a> = 8,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">QuantisedAsymm8</a> <a class="code" href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Use DataType::QAsymmU8 instead.&quot;</span>) = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">QuantisedSymm16</a> <a class="code" href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Use DataType::QSymmS16 instead.&quot;</span>) = <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
4817<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
4818<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">armnn::DataType::QuantisedAsymm8</a></div></div>
4819<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a></div></div>
4820<div class="ttc" id="_deprecated_8hpp_html_a086b9723704bff3477c44f0141652c9c"><div class="ttname"><a href="_deprecated_8hpp.html#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a></div><div class="ttdeci">#define ARMNN_DEPRECATED_ENUM_MSG(message)</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.html#l00050">Deprecated.hpp:50</a></div></div>
4821<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
4822<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
4823<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
4824<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
4825<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">armnn::DataType::QuantisedSymm16</a></div></div>
4826<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
4827<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
4828</div><!-- fragment -->
4829</div>
4830</div>
4831<a id="aff209afc1dc598da399e3e78617ce016"></a>
4832<h2 class="memtitle"><span class="permalink"><a href="#aff209afc1dc598da399e3e78617ce016">&#9670;&nbsp;</a></span>EdgeStrategy</h2>
4833
4834<div class="memitem">
4835<div class="memproto">
4836<table class="mlabels">
4837 <tr>
4838 <td class="mlabels-left">
4839 <table class="memname">
4840 <tr>
4841 <td class="memname">enum <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a></td>
4842 </tr>
4843 </table>
4844 </td>
4845 <td class="mlabels-right">
4846<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4847 </tr>
4848</table>
4849</div><div class="memdoc">
4850<table class="fieldtable">
4851<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
4852<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"></a>DirectCompatibility&#160;</td><td class="fielddoc"><p>No strategy has been defined. Used internally to verify integrity of optimizations. </p>
4853</td></tr>
4854<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189"></a>ExportToTarget&#160;</td><td class="fielddoc"><p>Destination backend can work directly with tensors on source backend. </p>
4855</td></tr>
4856<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"></a>CopyToTarget&#160;</td><td class="fielddoc"><p>Source backends tensor data can be exported to destination backend tensor without copy. </p>
4857<p>Copy contents from source backend tensor to destination backend tensor. </p>
4858</td></tr>
4859</table>
4860
4861<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00064">64</a> of file <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html">ITensorHandleFactory.hpp</a>.</p>
4862<div class="fragment"><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; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>, </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>, </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
4863<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a></div><div class="ttdoc">No strategy has been defined. Used internally to verify integrity of optimizations. </div></div>
4864<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a></div><div class="ttdoc">Source backends tensor data can be exported to destination backend tensor without copy...</div></div>
4865<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189"><div class="ttname"><a href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">armnn::EdgeStrategy::ExportToTarget</a></div><div class="ttdoc">Destination backend can work directly with tensors on source backend. </div></div>
4866</div><!-- fragment -->
4867</div>
4868</div>
4869<a id="a34eaed09302a4d7bfe930c13a7673e0b"></a>
4870<h2 class="memtitle"><span class="permalink"><a href="#a34eaed09302a4d7bfe930c13a7673e0b">&#9670;&nbsp;</a></span>GraphEvent</h2>
4871
4872<div class="memitem">
4873<div class="memproto">
4874<table class="mlabels">
4875 <tr>
4876 <td class="mlabels-left">
4877 <table class="memname">
4878 <tr>
4879 <td class="memname">enum <a class="el" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0b">GraphEvent</a></td>
4880 </tr>
4881 </table>
4882 </td>
4883 <td class="mlabels-right">
4884<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4885 </tr>
4886</table>
4887</div><div class="memdoc">
4888<table class="fieldtable">
4889<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"></a>LayerAdded&#160;</td><td class="fielddoc"></td></tr>
4890<tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"></a>LayerErased&#160;</td><td class="fielddoc"></td></tr>
4891</table>
4892
4893<p class="definition">Definition at line <a class="el" href="_i_graph_observable_8hpp_source.html#l00012">12</a> of file <a class="el" href="_i_graph_observable_8hpp_source.html">IGraphObservable.hpp</a>.</p>
4894<div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">LayerAdded</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">LayerErased</a></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"><div class="ttname"><a href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">armnn::GraphEvent::LayerErased</a></div></div>
4895<div class="ttc" id="namespacearmnn_html_a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"><div class="ttname"><a href="namespacearmnn.html#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">armnn::GraphEvent::LayerAdded</a></div></div>
4896</div><!-- fragment -->
4897</div>
4898</div>
4899<a id="a4e2dd387ba6f0dc5164b4cdf8de3262a"></a>
4900<h2 class="memtitle"><span class="permalink"><a href="#a4e2dd387ba6f0dc5164b4cdf8de3262a">&#9670;&nbsp;</a></span>JsonObjectType</h2>
4901
4902<div class="memitem">
4903<div class="memproto">
4904<table class="mlabels">
4905 <tr>
4906 <td class="mlabels-left">
4907 <table class="memname">
4908 <tr>
4909 <td class="memname">enum <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262a">JsonObjectType</a></td>
4910 </tr>
4911 </table>
4912 </td>
4913 <td class="mlabels-right">
4914<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4915 </tr>
4916</table>
4917</div><div class="memdoc">
4918<table class="fieldtable">
4919<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"></a>Measurement&#160;</td><td class="fielddoc"></td></tr>
4920<tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7"></a>Event&#160;</td><td class="fielddoc"></td></tr>
4921</table>
4922
4923<p class="definition">Definition at line <a class="el" href="_json_printer_8hpp_source.html#l00018">18</a> of file <a class="el" href="_json_printer_8hpp_source.html">JsonPrinter.hpp</a>.</p>
4924<div class="fragment"><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; <a class="code" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="struct_event.html">Event</a></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"><div class="ttname"><a href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">armnn::JsonObjectType::Measurement</a></div></div>
4925<div class="ttc" id="struct_event_html"><div class="ttname"><a href="struct_event.html">Event</a></div><div class="ttdef"><b>Definition:</b> <a href="_timeline_model_8h_source.html#l00035">TimelineModel.h:35</a></div></div>
4926</div><!-- fragment -->
4927</div>
4928</div>
4929<a id="a56943a0946e5f15e5e58054b8e7a04a4"></a>
4930<h2 class="memtitle"><span class="permalink"><a href="#a56943a0946e5f15e5e58054b8e7a04a4">&#9670;&nbsp;</a></span>LayerType</h2>
4931
4932<div class="memitem">
4933<div class="memproto">
4934<table class="mlabels">
4935 <tr>
4936 <td class="mlabels-left">
4937 <table class="memname">
4938 <tr>
4939 <td class="memname">enum <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a></td>
4940 </tr>
4941 </table>
4942 </td>
4943 <td class="mlabels-right">
4944<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4945 </tr>
4946</table>
4947</div><div class="memdoc">
4948<table class="fieldtable">
4949<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"></a>FirstLayer&#160;</td><td class="fielddoc"></td></tr>
4950<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36"></a>Activation&#160;</td><td class="fielddoc"></td></tr>
4951<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"></a>Addition&#160;</td><td class="fielddoc"></td></tr>
4952<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c"></a>ArgMinMax&#160;</td><td class="fielddoc"></td></tr>
4953<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"></a>BatchNormalization&#160;</td><td class="fielddoc"></td></tr>
4954<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2"></a>BatchToSpaceNd&#160;</td><td class="fielddoc"></td></tr>
4955<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"></a>Comparison&#160;</td><td class="fielddoc"></td></tr>
4956<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"></a>Concat&#160;</td><td class="fielddoc"></td></tr>
4957<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"></a>Constant&#160;</td><td class="fielddoc"></td></tr>
4958<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"></a>ConvertFp16ToFp32&#160;</td><td class="fielddoc"></td></tr>
4959<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"></a>ConvertFp32ToFp16&#160;</td><td class="fielddoc"></td></tr>
4960<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"></a>Convolution2d&#160;</td><td class="fielddoc"></td></tr>
4961<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
4962<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d"></a>DepthToSpace&#160;</td><td class="fielddoc"></td></tr>
4963<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"></a>DepthwiseConvolution2d&#160;</td><td class="fielddoc"></td></tr>
4964<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d"></a>Dequantize&#160;</td><td class="fielddoc"></td></tr>
4965<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a"></a>DetectionPostProcess&#160;</td><td class="fielddoc"></td></tr>
4966<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"></a>Division&#160;</td><td class="fielddoc"></td></tr>
4967<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"></a>ElementwiseUnary&#160;</td><td class="fielddoc"></td></tr>
4968<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48"></a>FakeQuantization&#160;</td><td class="fielddoc"></td></tr>
4969<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
4970<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e"></a>FullyConnected&#160;</td><td class="fielddoc"></td></tr>
4971<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53"></a>Gather&#160;</td><td class="fielddoc"></td></tr>
4972<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"></a>Input&#160;</td><td class="fielddoc"></td></tr>
4973<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"></a>InstanceNormalization&#160;</td><td class="fielddoc"></td></tr>
4974<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"></a>L2Normalization&#160;</td><td class="fielddoc"></td></tr>
4975<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488"></a>LogSoftmax&#160;</td><td class="fielddoc"></td></tr>
4976<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"></a>Lstm&#160;</td><td class="fielddoc"></td></tr>
4977<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"></a>Maximum&#160;</td><td class="fielddoc"></td></tr>
4978<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d"></a>Mean&#160;</td><td class="fielddoc"></td></tr>
4979<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"></a>MemCopy&#160;</td><td class="fielddoc"></td></tr>
4980<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"></a>MemImport&#160;</td><td class="fielddoc"></td></tr>
4981<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"></a>Merge&#160;</td><td class="fielddoc"></td></tr>
4982<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"></a>Minimum&#160;</td><td class="fielddoc"></td></tr>
4983<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"></a>Multiplication&#160;</td><td class="fielddoc"></td></tr>
4984<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"></a>Normalization&#160;</td><td class="fielddoc"></td></tr>
4985<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"></a>Output&#160;</td><td class="fielddoc"></td></tr>
4986<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f"></a>Pad&#160;</td><td class="fielddoc"></td></tr>
4987<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"></a>Permute&#160;</td><td class="fielddoc"></td></tr>
4988<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001"></a>Pooling2d&#160;</td><td class="fielddoc"></td></tr>
4989<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"></a>PreCompiled&#160;</td><td class="fielddoc"></td></tr>
4990<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"></a>Prelu&#160;</td><td class="fielddoc"></td></tr>
4991<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb"></a>Quantize&#160;</td><td class="fielddoc"></td></tr>
4992<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"></a>QuantizedLstm&#160;</td><td class="fielddoc"></td></tr>
4993<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"></a>Reshape&#160;</td><td class="fielddoc"></td></tr>
4994<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63"></a>Resize&#160;</td><td class="fielddoc"></td></tr>
4995<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb"></a>Slice&#160;</td><td class="fielddoc"></td></tr>
4996<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"></a>Softmax&#160;</td><td class="fielddoc"></td></tr>
4997<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279"></a>SpaceToBatchNd&#160;</td><td class="fielddoc"></td></tr>
4998<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a"></a>SpaceToDepth&#160;</td><td class="fielddoc"></td></tr>
4999<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf"></a>Splitter&#160;</td><td class="fielddoc"></td></tr>
5000<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca"></a>Stack&#160;</td><td class="fielddoc"></td></tr>
5001<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"></a>StandIn&#160;</td><td class="fielddoc"></td></tr>
5002<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d"></a>StridedSlice&#160;</td><td class="fielddoc"></td></tr>
5003<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"></a>Subtraction&#160;</td><td class="fielddoc"></td></tr>
5004<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"></a>Switch&#160;</td><td class="fielddoc"></td></tr>
5005<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"></a>LastLayer&#160;</td><td class="fielddoc"></td></tr>
5006<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a"></a>TransposeConvolution2d&#160;</td><td class="fielddoc"></td></tr>
5007</table>
5008
5009<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.html#l00014">14</a> of file <a class="el" href="_internal_types_8hpp_source.html">InternalTypes.hpp</a>.</p>
5010<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">Activation</a> = <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">ArgMinMax</a>,</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">BatchToSpaceNd</a>,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">Debug</a>,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">DepthToSpace</a>,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">Dequantize</a>,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">DetectionPostProcess</a>,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">FakeQuantization</a>,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">FullyConnected</a>,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">Gather</a>,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">LogSoftmax</a>,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">Mean</a>,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">Pad</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">Permute</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">Pooling2d</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">Quantize</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">Resize</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">Slice</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">Softmax</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">SpaceToBatchNd</a>,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">SpaceToDepth</a>,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">Splitter</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">Stack</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">StridedSlice</a>,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Last layer goes here.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">LastLayer</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a> = LastLayer</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a8746512fab5ec10c2c57800c66311ba7"><div class="ttname"><a href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">armnn::BatchToSpaceNd</a></div><div class="ttdeci">void BatchToSpaceNd(const DataLayoutIndexed &amp;dataLayout, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, Decoder&lt; float &gt; &amp;inputDecoder, Encoder&lt; float &gt; &amp;outputEncoder)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd.cpp:35</a></div></div>
5011<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">armnn::LayerType::ElementwiseUnary</a></div></div>
5012<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">armnn::LayerType::Addition</a></div></div>
5013<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">armnn::LayerType::Multiplication</a></div></div>
5014<div class="ttc" id="namespacearmnn_html_ae2e93e304cf516841c521e3eaee025cd"><div class="ttname"><a href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">armnn::Pooling2d</a></div><div class="ttdeci">void Pooling2d(Decoder&lt; float &gt; &amp;rInputDecoder, Encoder&lt; float &gt; &amp;rOutputEncoder, const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const Pooling2dDescriptor &amp;params)</div><div class="ttdoc">Computes the Pooling2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pooling2d_8cpp_source.html#l00143">Pooling2d.cpp:143</a></div></div>
5015<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
5016<div class="ttc" id="namespacearmnn_html_ab3c0b7e1a78b1b98c24934221f36a7c3"><div class="ttname"><a href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">armnn::FakeQuantization</a></div><div class="ttdeci">void FakeQuantization(const float *inputData, float *outputData, uint32_t numElements, float min, float max)</div><div class="ttdef"><b>Definition:</b> <a href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00017">RefFakeQuantizationFloat32Workload.cpp:17</a></div></div>
5017<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">armnn::LayerType::Comparison</a></div></div>
5018<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">armnn::LayerType::ConvertFp16ToFp32</a></div></div>
5019<div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
5020<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">armnn::LayerType::Merge</a></div></div>
5021<div class="ttc" id="namespacearmnn_html_ae76ce23fa9fc18e56448d52b37dd3f32"><div class="ttname"><a href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">armnn::DetectionPostProcess</a></div><div class="ttdeci">void DetectionPostProcess(const TensorInfo &amp;boxEncodingsInfo, const TensorInfo &amp;scoresInfo, const TensorInfo &amp;anchorsInfo, const TensorInfo &amp;detectionBoxesInfo, const TensorInfo &amp;detectionClassesInfo, const TensorInfo &amp;detectionScoresInfo, const TensorInfo &amp;numDetectionsInfo, const DetectionPostProcessDescriptor &amp;desc, Decoder&lt; float &gt; &amp;boxEncodings, Decoder&lt; float &gt; &amp;scores, Decoder&lt; float &gt; &amp;anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess.cpp:141</a></div></div>
5022<div class="ttc" id="namespacearmnn_html_ad773a034fb9983e15f3094b4c5c7c30c"><div class="ttname"><a href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">armnn::Quantize</a></div><div class="ttdeci">QuantizedType Quantize(float value, float scale, int32_t offset)</div><div class="ttdoc">Explicit specialization of Quantize for int8_t. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00031">TypesUtils.cpp:31</a></div></div>
5023<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">armnn::LayerType::QuantizedLstm</a></div></div>
5024<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
5025<div class="ttc" id="namespacearmnn_html_a4a180e425d4c19b2cdea4ce5760180e1"><div class="ttname"><a href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">armnn::SpaceToBatchNd</a></div><div class="ttdeci">void SpaceToBatchNd(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToBatchNdDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd.cpp:34</a></div></div>
5026<div class="ttc" id="namespacearmnn_html_a66004b2326f8ccb1faa71d5efa186633"><div class="ttname"><a href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">armnn::Gather</a></div><div class="ttdeci">void Gather(const TensorInfo &amp;paramsInfo, const TensorInfo &amp;indicesInfo, const TensorInfo &amp;outputInfo, Decoder&lt; float &gt; &amp;params, const int32_t *indices, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_gather_8cpp_source.html#l00018">Gather.cpp:18</a></div></div>
5027<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">armnn::LayerType::L2Normalization</a></div></div>
5028<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">armnn::LayerType::StandIn</a></div></div>
5029<div class="ttc" id="namespacearmnn_html_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00047">TypesUtils.cpp:47</a></div></div>
5030<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
5031<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">armnn::LayerType::Maximum</a></div></div>
5032<div class="ttc" id="namespacearmnn_html_aa999ff2585ad75b95954a9323f63c32b"><div class="ttname"><a href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">armnn::Softmax</a></div><div class="ttdeci">void Softmax(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;inputTensorInfo, float beta, int axis)</div><div class="ttdoc">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo...</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_softmax_8cpp_source.html#l00017">Softmax.cpp:17</a></div></div>
5033<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">armnn::LayerType::InstanceNormalization</a></div></div>
5034<div class="ttc" id="namespacearmnn_html_a28e115f5d28500324b53fae9e6c00b77"><div class="ttname"><a href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a></div><div class="ttdeci">void Pad(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad.cpp:22</a></div></div>
5035<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">armnn::LayerType::MemImport</a></div></div>
5036<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">armnn::LayerType::Normalization</a></div></div>
5037<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">armnn::LayerType::Reshape</a></div></div>
5038<div class="ttc" id="namespacearmnn_html_a374120de442fe42c26536bb4f1e2a5a1"><div class="ttname"><a href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">armnn::ArgMinMax</a></div><div class="ttdeci">void ArgMinMax(Decoder&lt; float &gt; &amp;in, int32_t *out, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, ArgMinMaxFunction function, int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_arg_min_max_8cpp_source.html#l00015">ArgMinMax.cpp:15</a></div></div>
5039<div class="ttc" id="namespacearmnn_html_a165ae372a7f67cad64ef3395d30122ce"><div class="ttname"><a href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">armnn::Mean</a></div><div class="ttdeci">void Mean(const armnn::TensorInfo &amp;inputInfo, const armnn::TensorInfo &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean.cpp:71</a></div></div>
5040<div class="ttc" id="namespacearmnn_html_ad34d1d5b1ca8f52dc296ecf52ba20c8a"><div class="ttname"><a href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">armnn::FullyConnected</a></div><div class="ttdeci">void FullyConnected(const TensorShape &amp;rInputShape, Decoder&lt; float &gt; &amp;rInputDecoder, const TensorShape &amp;rOutputShape, Encoder&lt; float &gt; &amp;rOutputEncoder, Decoder&lt; float &gt; &amp;rWeightDecoder, Decoder&lt; float &gt; &amp;rBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)</div><div class="ttdoc">Performs a matrix multiplication and optionally adds a bias. </div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html#l00015">FullyConnected.cpp:15</a></div></div>
5041<div class="ttc" id="namespacearmnn_html_a86d7a7168ac00b75b4971f9aad623698"><div class="ttname"><a href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">armnn::StridedSlice</a></div><div class="ttdeci">void StridedSlice(const TensorInfo &amp;inputInfo, const StridedSliceDescriptor &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html#l00090">StridedSlice.cpp:90</a></div></div>
5042<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">armnn::LayerType::Prelu</a></div></div>
5043<div class="ttc" id="namespacearmnn_html_a044ea0cc993d4d1fbe4ec877b17b8d39"><div class="ttname"><a href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">armnn::Slice</a></div><div class="ttdeci">void Slice(const TensorInfo &amp;inputInfo, const SliceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_slice_8cpp_source.html#l00015">Slice.cpp:15</a></div></div>
5044<div class="ttc" id="namespacearmnn_html_a5e1dc69443b64ad16b669388a6023f7a"><div class="ttname"><a href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">armnn::SpaceToDepth</a></div><div class="ttdeci">void SpaceToDepth(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToDepthDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth.cpp:36</a></div></div>
5045<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">armnn::LayerType::Minimum</a></div></div>
5046<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">armnn::LayerType::ConvertFp32ToFp16</a></div></div>
5047<div class="ttc" id="namespacearmnn_html_a427c3d26d05b518b1ace407035f5920e"><div class="ttname"><a href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">armnn::Splitter</a></div><div class="ttdeci">void Splitter(const SplitterQueueDescriptor &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="_splitter_8hpp_source.html#l00017">Splitter.hpp:17</a></div></div>
5048<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">armnn::LayerType::Convolution2d</a></div></div>
5049<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">armnn::LayerType::BatchNormalization</a></div></div>
5050<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
5051<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">armnn::LayerType::FirstLayer</a></div></div>
5052<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">armnn::LayerType::Lstm</a></div></div>
5053<div class="ttc" id="namespacearmnn_html_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
5054<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">armnn::LayerType::Division</a></div></div>
5055<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">armnn::LayerType::LastLayer</a></div></div>
5056<div class="ttc" id="namespacearmnn_html_a25dc224be48103343302b5a6fd588fe7"><div class="ttname"><a href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">armnn::Resize</a></div><div class="ttdeci">void Resize(Decoder&lt; float &gt; &amp;in, const TensorInfo &amp;inputInfo, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;outputInfo, DataLayoutIndexed dataLayout, armnn::ResizeMethod resizeMethod, bool alignCorners)</div><div class="ttdef"><b>Definition:</b> <a href="_resize_8cpp_source.html#l00035">Resize.cpp:35</a></div></div>
5057<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">armnn::LayerType::DepthwiseConvolution2d</a></div></div>
5058<div class="ttc" id="namespacearmnn_html_a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><div class="ttname"><a href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">armnn::Activation</a></div><div class="ttdeci">float Activation(float in, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.html#l00012">Activation.cpp:12</a></div></div>
5059<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">armnn::LayerType::Subtraction</a></div></div>
5060<div class="ttc" id="namespacearmnn_html_a6ef2dcac2ec0683d52df1b051404e7d6"><div class="ttname"><a href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">armnn::Stack</a></div><div class="ttdeci">void Stack(const StackQueueDescriptor &amp;data, std::vector&lt; std::unique_ptr&lt; Decoder&lt; float &gt;&gt;&gt; &amp;inputs, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">Stack.cpp:12</a></div></div>
5061<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
5062<div class="ttc" id="namespacearmnn_html_ab023d9a7687e35c0f108458a094c1f56"><div class="ttname"><a href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">armnn::DepthToSpace</a></div><div class="ttdeci">void DepthToSpace(const TensorInfo &amp;inputInfo, const DepthToSpaceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace.cpp:18</a></div></div>
5063<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">armnn::LayerType::Concat</a></div></div>
5064<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">armnn::LayerType::Switch</a></div></div>
5065<div class="ttc" id="namespacearmnn_html_ac52e04c0e349e25bcdaa72c27395ef8f"><div class="ttname"><a href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">armnn::LogSoftmax</a></div><div class="ttdeci">void LogSoftmax(Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output, const TensorInfo &amp;inputInfo, const LogSoftmaxDescriptor &amp;descriptor)</div><div class="ttdef"><b>Definition:</b> <a href="_log_softmax_8cpp_source.html#l00030">LogSoftmax.cpp:30</a></div></div>
5066<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">armnn::LayerType::TransposeConvolution2d</a></div></div>
5067<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">armnn::LayerType::PreCompiled</a></div></div>
5068</div><!-- fragment -->
5069</div>
5070</div>
5071<a id="a93a3ba385cad27c4774e5fe64c025d3d"></a>
5072<h2 class="memtitle"><span class="permalink"><a href="#a93a3ba385cad27c4774e5fe64c025d3d">&#9670;&nbsp;</a></span>LogSeverity</h2>
5073
5074<div class="memitem">
5075<div class="memproto">
5076<table class="mlabels">
5077 <tr>
5078 <td class="mlabels-left">
5079 <table class="memname">
5080 <tr>
5081 <td class="memname">enum <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a></td>
5082 </tr>
5083 </table>
5084 </td>
5085 <td class="mlabels-right">
5086<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5087 </tr>
5088</table>
5089</div><div class="memdoc">
5090<table class="fieldtable">
5091<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"></a>Trace&#160;</td><td class="fielddoc"></td></tr>
5092<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
5093<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"></a>Info&#160;</td><td class="fielddoc"></td></tr>
5094<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa"></a>Warning&#160;</td><td class="fielddoc"></td></tr>
5095<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"></a>Error&#160;</td><td class="fielddoc"></td></tr>
5096<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"></a>Fatal&#160;</td><td class="fielddoc"></td></tr>
5097</table>
5098
5099<p class="definition">Definition at line <a class="el" href="_utils_8hpp_source.html#l00012">12</a> of file <a class="el" href="_utils_8hpp_source.html">Utils.hpp</a>.</p>
5100<div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">Debug</a>,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">armnn::LogSeverity::Error</a></div></div>
5101<div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
5102<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">armnn::LogSeverity::Warning</a></div></div>
5103<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">armnn::LogSeverity::Fatal</a></div></div>
5104<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">armnn::LogSeverity::Trace</a></div></div>
5105<div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">armnn::LogSeverity::Info</a></div></div>
5106</div><!-- fragment -->
5107</div>
5108</div>
5109<a id="a0fc99721e27eb20ecd0ea85a3cc8b488"></a>
5110<h2 class="memtitle"><span class="permalink"><a href="#a0fc99721e27eb20ecd0ea85a3cc8b488">&#9670;&nbsp;</a></span>MemorySource</h2>
5111
5112<div class="memitem">
5113<div class="memproto">
5114<table class="mlabels">
5115 <tr>
5116 <td class="mlabels-left">
5117 <table class="memname">
5118 <tr>
5119 <td class="memname">enum <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a></td>
5120 </tr>
5121 </table>
5122 </td>
5123 <td class="mlabels-right">
5124<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5125 </tr>
5126</table>
5127</div><div class="memdoc">
5128<table class="fieldtable">
5129<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
5130<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"></a>Malloc&#160;</td><td class="fielddoc"></td></tr>
5131<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"></a>DmaBuf&#160;</td><td class="fielddoc"></td></tr>
5132<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"></a>DmaBufProtected&#160;</td><td class="fielddoc"></td></tr>
5133</table>
5134
5135<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00013">13</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
5136<div class="fragment"><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; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a> = 1,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">DmaBuf</a> = 2,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">DmaBufProtected</a> = 4</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
5137<div class="ttc" id="namespacearmnn_html_a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"><div class="ttname"><a href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">armnn::MemorySource::DmaBufProtected</a></div></div>
5138<div class="ttc" id="namespacearmnn_html_a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"><div class="ttname"><a href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">armnn::MemorySource::DmaBuf</a></div></div>
5139<div class="ttc" id="namespacearmnn_html_a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"><div class="ttname"><a href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a></div></div>
5140</div><!-- fragment -->
5141</div>
5142</div>
5143<a id="abe18a5033f2ab9c0de82c676b48f5437"></a>
5144<h2 class="memtitle"><span class="permalink"><a href="#abe18a5033f2ab9c0de82c676b48f5437">&#9670;&nbsp;</a></span>NormalizationAlgorithmChannel</h2>
5145
5146<div class="memitem">
5147<div class="memproto">
5148<table class="mlabels">
5149 <tr>
5150 <td class="mlabels-left">
5151 <table class="memname">
5152 <tr>
5153 <td class="memname">enum <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a></td>
5154 </tr>
5155 </table>
5156 </td>
5157 <td class="mlabels-right">
5158<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5159 </tr>
5160</table>
5161</div><div class="memdoc">
5162<table class="fieldtable">
5163<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"></a>Across&#160;</td><td class="fielddoc"></td></tr>
5164<tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b"></a>Within&#160;</td><td class="fielddoc"></td></tr>
5165</table>
5166
5167<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00123">123</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5168<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a> = 0,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a> = 1</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b"><div class="ttname"><a href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">armnn::NormalizationAlgorithmChannel::Within</a></div></div>
5169<div class="ttc" id="namespacearmnn_html_abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"><div class="ttname"><a href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">armnn::NormalizationAlgorithmChannel::Across</a></div></div>
5170</div><!-- fragment -->
5171</div>
5172</div>
5173<a id="ad605d1661fa0d8c7fea651d82fbe11c9"></a>
5174<h2 class="memtitle"><span class="permalink"><a href="#ad605d1661fa0d8c7fea651d82fbe11c9">&#9670;&nbsp;</a></span>NormalizationAlgorithmMethod</h2>
5175
5176<div class="memitem">
5177<div class="memproto">
5178<table class="mlabels">
5179 <tr>
5180 <td class="mlabels-left">
5181 <table class="memname">
5182 <tr>
5183 <td class="memname">enum <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a></td>
5184 </tr>
5185 </table>
5186 </td>
5187 <td class="mlabels-right">
5188<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5189 </tr>
5190</table>
5191</div><div class="memdoc">
5192<table class="fieldtable">
5193<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d"></a>LocalBrightness&#160;</td><td class="fielddoc"><p>Krichevsky 2012: Local Brightness Normalization. </p>
5194</td></tr>
5195<tr><td class="fieldname"><a id="ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f"></a>LocalContrast&#160;</td><td class="fielddoc"><p>Jarret 2009: Local Contrast Normalization. </p>
5196</td></tr>
5197</table>
5198
5199<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00129">129</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5200<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a> = 0,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a> = 1</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d"><div class="ttname"><a href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">armnn::NormalizationAlgorithmMethod::LocalBrightness</a></div><div class="ttdoc">Krichevsky 2012: Local Brightness Normalization. </div></div>
5201<div class="ttc" id="namespacearmnn_html_ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f"><div class="ttname"><a href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">armnn::NormalizationAlgorithmMethod::LocalContrast</a></div><div class="ttdoc">Jarret 2009: Local Contrast Normalization. </div></div>
5202</div><!-- fragment -->
5203</div>
5204</div>
5205<a id="adf2e5515c4c36a3e7e46bb8b83c6754e"></a>
5206<h2 class="memtitle"><span class="permalink"><a href="#adf2e5515c4c36a3e7e46bb8b83c6754e">&#9670;&nbsp;</a></span>OutputShapeRounding</h2>
5207
5208<div class="memitem">
5209<div class="memproto">
5210<table class="mlabels">
5211 <tr>
5212 <td class="mlabels-left">
5213 <table class="memname">
5214 <tr>
5215 <td class="memname">enum <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a></td>
5216 </tr>
5217 </table>
5218 </td>
5219 <td class="mlabels-right">
5220<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5221 </tr>
5222</table>
5223</div><div class="memdoc">
5224<table class="fieldtable">
5225<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
5226<tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb"></a>Ceiling&#160;</td><td class="fielddoc"></td></tr>
5227</table>
5228
5229<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00137">137</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5230<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a> = 0,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a> = 1</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb"><div class="ttname"><a href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">armnn::OutputShapeRounding::Ceiling</a></div></div>
5231<div class="ttc" id="namespacearmnn_html_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
5232</div><!-- fragment -->
5233</div>
5234</div>
5235<a id="a3888429b6ebc79f9a7df549e5e4d9a2f"></a>
5236<h2 class="memtitle"><span class="permalink"><a href="#a3888429b6ebc79f9a7df549e5e4d9a2f">&#9670;&nbsp;</a></span>PaddingMethod</h2>
5237
5238<div class="memitem">
5239<div class="memproto">
5240<table class="mlabels">
5241 <tr>
5242 <td class="mlabels-left">
5243 <table class="memname">
5244 <tr>
5245 <td class="memname">enum <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a></td>
5246 </tr>
5247 </table>
5248 </td>
5249 <td class="mlabels-right">
5250<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5251 </tr>
5252</table>
5253</div><div class="memdoc">
5254<p>The padding method modifies the output of pooling layers. In both supported methods, the values are ignored (they are not even zeroes, which would make a difference for max pooling a tensor with negative values). The difference between IgnoreValue and Exclude is that the former counts the padding fields in the divisor of Average and L2 pooling, while Exclude does not. </p>
5255<table class="fieldtable">
5256<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a"></a>IgnoreValue&#160;</td><td class="fielddoc"><p>The padding fields count, but are ignored. </p>
5257</td></tr>
5258<tr><td class="fieldname"><a id="a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6"></a>Exclude&#160;</td><td class="fielddoc"><p>The padding fields don't count and are ignored. </p>
5259</td></tr>
5260</table>
5261
5262<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00115">115</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5263<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a> = 0,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a> = 1</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a"><div class="ttname"><a href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">armnn::PaddingMethod::IgnoreValue</a></div><div class="ttdoc">The padding fields count, but are ignored. </div></div>
5264<div class="ttc" id="namespacearmnn_html_a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6"><div class="ttname"><a href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">armnn::PaddingMethod::Exclude</a></div><div class="ttdoc">The padding fields don&amp;#39;t count and are ignored. </div></div>
5265</div><!-- fragment -->
5266</div>
5267</div>
5268<a id="a961bbfe1db71a848eff5a1f0ab775718"></a>
5269<h2 class="memtitle"><span class="permalink"><a href="#a961bbfe1db71a848eff5a1f0ab775718">&#9670;&nbsp;</a></span>PoolingAlgorithm</h2>
5270
5271<div class="memitem">
5272<div class="memproto">
5273<table class="mlabels">
5274 <tr>
5275 <td class="mlabels-left">
5276 <table class="memname">
5277 <tr>
5278 <td class="memname">enum <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a></td>
5279 </tr>
5280 </table>
5281 </td>
5282 <td class="mlabels-right">
5283<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5284 </tr>
5285</table>
5286</div><div class="memdoc">
5287<table class="fieldtable">
5288<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
5289<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"></a>Average&#160;</td><td class="fielddoc"></td></tr>
5290<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"></a>L2&#160;</td><td class="fielddoc"></td></tr>
5291</table>
5292
5293<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00093">93</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5294<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 0,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a> = 1,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a> = 2</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
5295<div class="ttc" id="namespacearmnn_html_a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"><div class="ttname"><a href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">armnn::PoolingAlgorithm::L2</a></div></div>
5296<div class="ttc" id="namespacearmnn_html_a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"><div class="ttname"><a href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">armnn::PoolingAlgorithm::Average</a></div></div>
5297</div><!-- fragment -->
5298</div>
5299</div>
5300<a id="a9a2af2f8c4af4f9efa8e79417d505ac4"></a>
5301<h2 class="memtitle"><span class="permalink"><a href="#a9a2af2f8c4af4f9efa8e79417d505ac4">&#9670;&nbsp;</a></span>ResizeMethod</h2>
5302
5303<div class="memitem">
5304<div class="memproto">
5305<table class="mlabels">
5306 <tr>
5307 <td class="mlabels-left">
5308 <table class="memname">
5309 <tr>
5310 <td class="memname">enum <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a></td>
5311 </tr>
5312 </table>
5313 </td>
5314 <td class="mlabels-right">
5315<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5316 </tr>
5317</table>
5318</div><div class="memdoc">
5319<table class="fieldtable">
5320<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"></a>Bilinear&#160;</td><td class="fielddoc"></td></tr>
5321<tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"></a>NearestNeighbor&#160;</td><td class="fielddoc"></td></tr>
5322</table>
5323
5324<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00100">100</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5325<div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a> = 0,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a> = 1</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
5326<div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
5327</div><!-- fragment -->
5328</div>
5329</div>
5330<a id="a67a0db04d321a74b7e7fcfd3f1a3f70b"></a>
5331<h2 class="memtitle"><span class="permalink"><a href="#a67a0db04d321a74b7e7fcfd3f1a3f70b">&#9670;&nbsp;</a></span>Status</h2>
5332
5333<div class="memitem">
5334<div class="memproto">
5335<table class="mlabels">
5336 <tr>
5337 <td class="mlabels-left">
5338 <table class="memname">
5339 <tr>
5340 <td class="memname">enum <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a></td>
5341 </tr>
5342 </table>
5343 </td>
5344 <td class="mlabels-right">
5345<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5346 </tr>
5347</table>
5348</div><div class="memdoc">
5349<p>enumeration </p>
5350<table class="fieldtable">
5351<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"></a>Success&#160;</td><td class="fielddoc"></td></tr>
5352<tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"></a>Failure&#160;</td><td class="fielddoc"></td></tr>
5353</table>
5354
5355<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00026">26</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5356<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a> = 0,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a> = 1</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
5357<div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
5358</div><!-- fragment -->
5359</div>
5360</div>
5361<a id="a707090747256af276c389e0cf1cb0a9a"></a>
5362<h2 class="memtitle"><span class="permalink"><a href="#a707090747256af276c389e0cf1cb0a9a">&#9670;&nbsp;</a></span>TuningLevel</h2>
5363
5364<div class="memitem">
5365<div class="memproto">
5366<table class="mlabels">
5367 <tr>
5368 <td class="mlabels-left">
5369 <table class="memname">
5370 <tr>
5371 <td class="memname">enum <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a></td>
5372 </tr>
5373 </table>
5374 </td>
5375 <td class="mlabels-right">
5376<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5377 </tr>
5378</table>
5379</div><div class="memdoc">
5380<table class="fieldtable">
5381<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"></a>None&#160;</td><td class="fielddoc"></td></tr>
5382<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68"></a>Rapid&#160;</td><td class="fielddoc"></td></tr>
5383<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"></a>Normal&#160;</td><td class="fielddoc"></td></tr>
5384<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"></a>Exhaustive&#160;</td><td class="fielddoc"></td></tr>
5385</table>
5386
5387<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00069">69</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
5388<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">armnn::TuningLevel::Exhaustive</a></div></div>
5389<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">armnn::TuningLevel::None</a></div></div>
5390<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">armnn::TuningLevel::Normal</a></div></div>
5391<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">armnn::TuningLevel::Rapid</a></div></div>
5392</div><!-- fragment -->
5393</div>
5394</div>
5395<a id="a1cfaa710db2a54673b21d2ea2da757c8"></a>
5396<h2 class="memtitle"><span class="permalink"><a href="#a1cfaa710db2a54673b21d2ea2da757c8">&#9670;&nbsp;</a></span>UnaryOperation</h2>
5397
5398<div class="memitem">
5399<div class="memproto">
5400<table class="mlabels">
5401 <tr>
5402 <td class="mlabels-left">
5403 <table class="memname">
5404 <tr>
5405 <td class="memname">enum <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a></td>
5406 </tr>
5407 </table>
5408 </td>
5409 <td class="mlabels-right">
5410<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5411 </tr>
5412</table>
5413</div><div class="memdoc">
5414<table class="fieldtable">
5415<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
5416<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"></a>Exp&#160;</td><td class="fielddoc"></td></tr>
5417<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
5418<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"></a>Rsqrt&#160;</td><td class="fielddoc"></td></tr>
5419<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"></a>Neg&#160;</td><td class="fielddoc"></td></tr>
5420</table>
5421
5422<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00084">84</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
5423<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 0,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a> = 1,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 2,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a> = 3,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a> = 4</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">armnn::ActivationFunction::Sqrt</a></div></div>
5424<div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
5425<div class="ttc" id="namespacearmnn_html_a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"><div class="ttname"><a href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">armnn::UnaryOperation::Exp</a></div></div>
5426<div class="ttc" id="namespacearmnn_html_a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"><div class="ttname"><a href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">armnn::UnaryOperation::Neg</a></div></div>
5427<div class="ttc" id="namespacearmnn_html_a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"><div class="ttname"><a href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">armnn::UnaryOperation::Rsqrt</a></div></div>
5428</div><!-- fragment -->
5429</div>
5430</div>
5431<h2 class="groupheader">Function Documentation</h2>
5432<a id="a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"></a>
5433<h2 class="memtitle"><span class="permalink"><a href="#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">&#9670;&nbsp;</a></span>Activation() <span class="overload">[1/2]</span></h2>
5434
5435<div class="memitem">
5436<div class="memproto">
5437 <table class="memname">
5438 <tr>
5439 <td class="memname">float Activation </td>
5440 <td>(</td>
5441 <td class="paramtype">float&#160;</td>
5442 <td class="paramname"><em>in</em>, </td>
5443 </tr>
5444 <tr>
5445 <td class="paramkey"></td>
5446 <td></td>
5447 <td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
5448 <td class="paramname"><em>function</em>, </td>
5449 </tr>
5450 <tr>
5451 <td class="paramkey"></td>
5452 <td></td>
5453 <td class="paramtype">float&#160;</td>
5454 <td class="paramname"><em>a</em>, </td>
5455 </tr>
5456 <tr>
5457 <td class="paramkey"></td>
5458 <td></td>
5459 <td class="paramtype">float&#160;</td>
5460 <td class="paramname"><em>b</em>&#160;</td>
5461 </tr>
5462 <tr>
5463 <td></td>
5464 <td>)</td>
5465 <td></td><td></td>
5466 </tr>
5467 </table>
5468</div><div class="memdoc">
5469
5470<p class="definition">Definition at line <a class="el" href="_activation_8cpp_source.html#l00012">12</a> of file <a class="el" href="_activation_8cpp_source.html">Activation.cpp</a>.</p>
5471
5472<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
5473
5474<p class="reference">Referenced by <a class="el" href="_activation_8cpp_source.html#l00082">Activation()</a>.</p>
5475<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordtype">float</span> output;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="comment">// Compute the result of the activation function.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">switch</span> (<span class="keyword">function</span>)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear:</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; output = a * in + b;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid:</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; output = 1.f / (1.f + expf(-in));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; output = std::max(0.f, in);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; output = std::min(a, std::max(b, in));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; output = logf(1.0f + expf(in));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">break</span>;</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">case</span> ActivationFunction::LeakyReLu:</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; output = in &gt; 0.0f ? in : (in * a);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</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">case</span> ActivationFunction::Abs:</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; output = in &lt; 0 ? -in : in;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt:</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; output = sqrtf(in);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">case</span> ActivationFunction::Square:</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; output = in * in;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH:</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; output = a * tanhf(b * in);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported activation function&quot;</span>);</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"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> output;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div></div><!-- fragment -->
5476</div>
5477</div>
5478<a id="ad10d72a6f8859949bbe6134c638ce171"></a>
5479<h2 class="memtitle"><span class="permalink"><a href="#ad10d72a6f8859949bbe6134c638ce171">&#9670;&nbsp;</a></span>Activation() <span class="overload">[2/2]</span></h2>
5480
5481<div class="memitem">
5482<div class="memproto">
5483 <table class="memname">
5484 <tr>
5485 <td class="memname">void Activation </td>
5486 <td>(</td>
5487 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
5488 <td class="paramname"><em>in</em>, </td>
5489 </tr>
5490 <tr>
5491 <td class="paramkey"></td>
5492 <td></td>
5493 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
5494 <td class="paramname"><em>out</em>, </td>
5495 </tr>
5496 <tr>
5497 <td class="paramkey"></td>
5498 <td></td>
5499 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
5500 <td class="paramname"><em>tensorInfo</em>, </td>
5501 </tr>
5502 <tr>
5503 <td class="paramkey"></td>
5504 <td></td>
5505 <td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
5506 <td class="paramname"><em>function</em>, </td>
5507 </tr>
5508 <tr>
5509 <td class="paramkey"></td>
5510 <td></td>
5511 <td class="paramtype">float&#160;</td>
5512 <td class="paramname"><em>a</em>, </td>
5513 </tr>
5514 <tr>
5515 <td class="paramkey"></td>
5516 <td></td>
5517 <td class="paramtype">float&#160;</td>
5518 <td class="paramname"><em>b</em>&#160;</td>
5519 </tr>
5520 <tr>
5521 <td></td>
5522 <td>)</td>
5523 <td></td><td></td>
5524 </tr>
5525 </table>
5526</div><div class="memdoc">
5527
5528<p class="definition">Definition at line <a class="el" href="_activation_8cpp_source.html#l00082">82</a> of file <a class="el" href="_activation_8cpp_source.html">Activation.cpp</a>.</p>
5529
5530<p class="reference">References <a class="el" href="_activation_8cpp_source.html#l00012">Activation()</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
5531<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements = tensorInfo.GetNumElements();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numElements; i++)</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; out.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(<a class="code" href="namespacearmnn.html#ad10d72a6f8859949bbe6134c638ce171">Activation</a>(in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>(), <span class="keyword">function</span>, a, b));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ++in;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; ++out;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; in -= numElements;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; out -= numElements;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad10d72a6f8859949bbe6134c638ce171"><div class="ttname"><a href="namespacearmnn.html#ad10d72a6f8859949bbe6134c638ce171">armnn::Activation</a></div><div class="ttdeci">void Activation(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;tensorInfo, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.html#l00082">Activation.cpp:82</a></div></div>
5532<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
5533<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
5534</div><!-- fragment -->
5535</div>
5536</div>
5537<a id="ae8dcbb74cf0c855724f12833a55a5684"></a>
5538<h2 class="memtitle"><span class="permalink"><a href="#ae8dcbb74cf0c855724f12833a55a5684">&#9670;&nbsp;</a></span>AllocateOutputData()</h2>
5539
5540<div class="memitem">
5541<div class="memproto">
5542 <table class="memname">
5543 <tr>
5544 <td class="memname">void armnn::AllocateOutputData </td>
5545 <td>(</td>
5546 <td class="paramtype">unsigned int&#160;</td>
5547 <td class="paramname"><em>numOutput</em>, </td>
5548 </tr>
5549 <tr>
5550 <td class="paramkey"></td>
5551 <td></td>
5552 <td class="paramtype">unsigned int&#160;</td>
5553 <td class="paramname"><em>numSelected</em>, </td>
5554 </tr>
5555 <tr>
5556 <td class="paramkey"></td>
5557 <td></td>
5558 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
5559 <td class="paramname"><em>boxCorners</em>, </td>
5560 </tr>
5561 <tr>
5562 <td class="paramkey"></td>
5563 <td></td>
5564 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
5565 <td class="paramname"><em>outputIndices</em>, </td>
5566 </tr>
5567 <tr>
5568 <td class="paramkey"></td>
5569 <td></td>
5570 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
5571 <td class="paramname"><em>selectedBoxes</em>, </td>
5572 </tr>
5573 <tr>
5574 <td class="paramkey"></td>
5575 <td></td>
5576 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
5577 <td class="paramname"><em>selectedClasses</em>, </td>
5578 </tr>
5579 <tr>
5580 <td class="paramkey"></td>
5581 <td></td>
5582 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
5583 <td class="paramname"><em>selectedScores</em>, </td>
5584 </tr>
5585 <tr>
5586 <td class="paramkey"></td>
5587 <td></td>
5588 <td class="paramtype">float *&#160;</td>
5589 <td class="paramname"><em>detectionBoxes</em>, </td>
5590 </tr>
5591 <tr>
5592 <td class="paramkey"></td>
5593 <td></td>
5594 <td class="paramtype">float *&#160;</td>
5595 <td class="paramname"><em>detectionScores</em>, </td>
5596 </tr>
5597 <tr>
5598 <td class="paramkey"></td>
5599 <td></td>
5600 <td class="paramtype">float *&#160;</td>
5601 <td class="paramname"><em>detectionClasses</em>, </td>
5602 </tr>
5603 <tr>
5604 <td class="paramkey"></td>
5605 <td></td>
5606 <td class="paramtype">float *&#160;</td>
5607 <td class="paramname"><em>numDetections</em>&#160;</td>
5608 </tr>
5609 <tr>
5610 <td></td>
5611 <td>)</td>
5612 <td></td><td></td>
5613 </tr>
5614 </table>
5615</div><div class="memdoc">
5616
5617<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00103">103</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
5618
5619<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>.</p>
5620<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutput; ++i)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> boxIndex = i * 4;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (i &lt; numSelected)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> boxCornorIndex = selectedBoxes[outputIndices[i]] * 4;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; detectionScores[i] = selectedScores[outputIndices[i]];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; detectionClasses[i] = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(selectedClasses[outputIndices[i]]);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; detectionBoxes[boxIndex] = boxCorners[boxCornorIndex];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; detectionBoxes[boxIndex + 1] = boxCorners[boxCornorIndex + 1];</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; detectionBoxes[boxIndex + 2] = boxCorners[boxCornorIndex + 2];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; detectionBoxes[boxIndex + 3] = boxCorners[boxCornorIndex + 3];</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">else</span></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; detectionScores[i] = 0.0f;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; detectionClasses[i] = 0.0f;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; detectionBoxes[boxIndex] = 0.0f;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; detectionBoxes[boxIndex + 1] = 0.0f;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; detectionBoxes[boxIndex + 2] = 0.0f;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; detectionBoxes[boxIndex + 3] = 0.0f;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; numDetections[0] = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(numSelected);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div></div><!-- fragment -->
5621</div>
5622</div>
5623<a id="a5980f7b42f4df041efebdc6ae242f686"></a>
5624<h2 class="memtitle"><span class="permalink"><a href="#a5980f7b42f4df041efebdc6ae242f686">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[1/2]</span></h2>
5625
5626<div class="memitem">
5627<div class="memproto">
5628 <table class="memname">
5629 <tr>
5630 <td class="memname">bool armnn::AllTypesAreEqualImpl </td>
5631 <td>(</td>
5632 <td class="paramtype">T&#160;</td>
5633 <td class="paramname"></td><td>)</td>
5634 <td></td>
5635 </tr>
5636 </table>
5637</div><div class="memdoc">
5638
5639<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00058">58</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
5640
5641<p class="reference">Referenced by <a class="el" href="_layer_support_rules_8hpp_source.html#l00064">AllTypesAreEqualImpl()</a>, and <a class="el" href="_layer_support_rules_8hpp_source.html#l00074">TypesAreEqual::TypesAreEqual()</a>.</p>
5642<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div></div><!-- fragment -->
5643</div>
5644</div>
5645<a id="a2a0bcfb4df0a03357b4cbb8d9e89a3da"></a>
5646<h2 class="memtitle"><span class="permalink"><a href="#a2a0bcfb4df0a03357b4cbb8d9e89a3da">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[2/2]</span></h2>
5647
5648<div class="memitem">
5649<div class="memproto">
5650 <table class="memname">
5651 <tr>
5652 <td class="memname">bool armnn::AllTypesAreEqualImpl </td>
5653 <td>(</td>
5654 <td class="paramtype">T&#160;</td>
5655 <td class="paramname"><em>t1</em>, </td>
5656 </tr>
5657 <tr>
5658 <td class="paramkey"></td>
5659 <td></td>
5660 <td class="paramtype">T&#160;</td>
5661 <td class="paramname"><em>t2</em>, </td>
5662 </tr>
5663 <tr>
5664 <td class="paramkey"></td>
5665 <td></td>
5666 <td class="paramtype">Rest...&#160;</td>
5667 <td class="paramname"><em>rest</em>&#160;</td>
5668 </tr>
5669 <tr>
5670 <td></td>
5671 <td>)</td>
5672 <td></td><td></td>
5673 </tr>
5674 </table>
5675</div><div class="memdoc">
5676
5677<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00064">64</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
5678
5679<p class="reference">References <a class="el" href="_layer_support_rules_8hpp_source.html#l00058">AllTypesAreEqualImpl()</a>.</p>
5680<div class="fragment"><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; static_assert(std::is_same&lt;T, TensorInfo&gt;::value, <span class="stringliteral">&quot;Type T must be a TensorInfo&quot;</span>);</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; <span class="keywordflow">return</span> (t1.GetDataType() == t2.GetDataType()) &amp;&amp; <a class="code" href="namespacearmnn.html#a2a0bcfb4df0a03357b4cbb8d9e89a3da">AllTypesAreEqualImpl</a>(t2, rest...);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a2a0bcfb4df0a03357b4cbb8d9e89a3da"><div class="ttname"><a href="namespacearmnn.html#a2a0bcfb4df0a03357b4cbb8d9e89a3da">armnn::AllTypesAreEqualImpl</a></div><div class="ttdeci">bool AllTypesAreEqualImpl(T t1, T t2, Rest... rest)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_rules_8hpp_source.html#l00064">LayerSupportRules.hpp:64</a></div></div>
5681</div><!-- fragment -->
5682</div>
5683</div>
5684<a id="a4907f6b88c3e72be6b8ae876de355e0a"></a>
5685<h2 class="memtitle"><span class="permalink"><a href="#a4907f6b88c3e72be6b8ae876de355e0a">&#9670;&nbsp;</a></span>Append() <span class="overload">[1/2]</span></h2>
5686
5687<div class="memitem">
5688<div class="memproto">
5689 <table class="memname">
5690 <tr>
5691 <td class="memname">void armnn::Append </td>
5692 <td>(</td>
5693 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
5694 <td class="paramname"><em>optimizations</em>, </td>
5695 </tr>
5696 <tr>
5697 <td class="paramkey"></td>
5698 <td></td>
5699 <td class="paramtype">T &amp;&amp;&#160;</td>
5700 <td class="paramname"><em>optimization</em>&#160;</td>
5701 </tr>
5702 <tr>
5703 <td></td>
5704 <td>)</td>
5705 <td></td><td></td>
5706 </tr>
5707 </table>
5708</div><div class="memdoc">
5709
5710<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.html#l00030">30</a> of file <a class="el" href="_optimizer_8hpp_source.html">Optimizer.hpp</a>.</p>
5711
5712<p class="reference">Referenced by <a class="el" href="_optimizer_8hpp_source.html#l00036">Append()</a>, and <a class="el" href="_optimizer_8hpp_source.html#l00043">MakeOptimizations()</a>.</p>
5713<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; optimizations.emplace_back(<span class="keyword">new</span> T(optimization));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;};</div></div><!-- fragment -->
5714</div>
5715</div>
5716<a id="a0c8a28b71e49c04596289ff281e58f1a"></a>
5717<h2 class="memtitle"><span class="permalink"><a href="#a0c8a28b71e49c04596289ff281e58f1a">&#9670;&nbsp;</a></span>Append() <span class="overload">[2/2]</span></h2>
5718
5719<div class="memitem">
5720<div class="memproto">
5721 <table class="memname">
5722 <tr>
5723 <td class="memname">void armnn::Append </td>
5724 <td>(</td>
5725 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
5726 <td class="paramname"><em>optimizations</em>, </td>
5727 </tr>
5728 <tr>
5729 <td class="paramkey"></td>
5730 <td></td>
5731 <td class="paramtype">Front &amp;&amp;&#160;</td>
5732 <td class="paramname"><em>front</em>, </td>
5733 </tr>
5734 <tr>
5735 <td class="paramkey"></td>
5736 <td></td>
5737 <td class="paramtype">Others &amp;&amp;...&#160;</td>
5738 <td class="paramname"><em>others</em>&#160;</td>
5739 </tr>
5740 <tr>
5741 <td></td>
5742 <td>)</td>
5743 <td></td><td></td>
5744 </tr>
5745 </table>
5746</div><div class="memdoc">
5747
5748<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.html#l00036">36</a> of file <a class="el" href="_optimizer_8hpp_source.html">Optimizer.hpp</a>.</p>
5749
5750<p class="reference">References <a class="el" href="_optimizer_8hpp_source.html#l00030">Append()</a>.</p>
5751<div class="fragment"><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; Append&lt;Front&gt;(optimizations, std::forward&lt;Front&gt;(front));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">Append</a>&lt;Others...&gt;(optimizations, std::forward&lt;Others&gt;(others)...);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a0c8a28b71e49c04596289ff281e58f1a"><div class="ttname"><a href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">armnn::Append</a></div><div class="ttdeci">void Append(Optimizer::Optimizations &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.html#l00036">Optimizer.hpp:36</a></div></div>
5752</div><!-- fragment -->
5753</div>
5754</div>
5755<a id="ae97734279fd10b4c754cc15bc8ed9dad"></a>
5756<h2 class="memtitle"><span class="permalink"><a href="#ae97734279fd10b4c754cc15bc8ed9dad">&#9670;&nbsp;</a></span>ApplyBackendOptimizations()</h2>
5757
5758<div class="memitem">
5759<div class="memproto">
5760 <table class="memname">
5761 <tr>
5762 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> armnn::ApplyBackendOptimizations </td>
5763 <td>(</td>
5764 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *&#160;</td>
5765 <td class="paramname"><em>optNetObjPtr</em>, </td>
5766 </tr>
5767 <tr>
5768 <td class="paramkey"></td>
5769 <td></td>
5770 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
5771 <td class="paramname"><em>backendSettings</em>, </td>
5772 </tr>
5773 <tr>
5774 <td class="paramkey"></td>
5775 <td></td>
5776 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
5777 <td class="paramname"><em>backends</em>, </td>
5778 </tr>
5779 <tr>
5780 <td class="paramkey"></td>
5781 <td></td>
5782 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
5783 <td class="paramname"><em>errMessages</em>&#160;</td>
5784 </tr>
5785 <tr>
5786 <td></td>
5787 <td>)</td>
5788 <td></td><td></td>
5789 </tr>
5790 </table>
5791</div><div class="memdoc">
5792
5793<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00345">345</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
5794
5795<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00163">SubgraphView::begin()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00168">SubgraphView::end()</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.html#l00050">OptimizationViews::GetFailedSubgraphs()</a>, <a class="el" href="_network_8hpp_source.html#l00272">OptimizedNetwork::GetGraph()</a>, <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.html#l00049">OptimizationViews::GetSubstitutions()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00018">BackendSettings::m_SelectedBackends</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_network_8cpp_source.html#l00086">ReportWarning()</a>, <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00251">SubgraphViewSelector::SelectSubgraphs()</a>, <a class="el" href="_graph_8cpp_source.html#l00396">Graph::SubstituteSubgraph()</a>, and <a class="el" href="_optimization_views_8cpp_source.html#l00011">OptimizationViews::Validate()</a>.</p>
5796
5797<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
5798<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;{</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; BOOST_ASSERT(optNetObjPtr);</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; OptimizationResult result;</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; <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; Graph&amp; optGraph = optNetObjPtr-&gt;GetGraph();</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="comment">// Run backend specific optimizations</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.m_SelectedBackends)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">auto</span> backendObjPtr = backends.find(selectedBackend)-&gt;second.get();</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; BOOST_ASSERT(backendObjPtr);</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; <span class="comment">// Select sub-graphs based on backend</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; SubgraphViewSelector::Subgraphs subgraphs =</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; SubgraphViewSelector::SelectSubgraphs(optGraph,</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// Select layers assigned to the requested backend</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; [&amp;backendObjPtr](<span class="keyword">const</span> Layer&amp; layer)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> layer.GetType() != LayerType::Input &amp;&amp;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; layer.GetType() != LayerType::Output &amp;&amp;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; layer.GetBackendId() == backendObjPtr-&gt;GetId();</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">if</span> (subgraphs.empty())</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; <span class="comment">// No sub-graphs found, try with next selected backend</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">continue</span>;</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;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// Try to optimize each sub-graph</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; subgraph : subgraphs)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// Try to optimize the current sub-graph</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; OptimizationViews optimizationViews = backendObjPtr-&gt;OptimizeSubgraphView(*subgraph);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; BOOST_ASSERT(optimizationViews.Validate(*subgraph));</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"> 386</span>&#160; <span class="comment">// Optimization attempted, check the resulting optimized sub-graph</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; substitution : optimizationViews.GetSubstitutions())</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</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="l00390"></a><span class="lineno"> 390</span>&#160; SubgraphView&amp; replacementSubgraph = substitution.m_ReplacementSubgraph;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; SubgraphView&amp; substitutableSubgraph = substitution.m_SubstitutableSubgraph;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; optGraph.SubstituteSubgraph(substitutableSubgraph, replacementSubgraph);</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="comment">// Assign the current backend to the optimized sub-graph</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; std::for_each(replacementSubgraph.begin(), replacementSubgraph.end(), [&amp;selectedBackend](Layer* l)</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"> 397</span>&#160; BOOST_ASSERT(l);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; l-&gt;SetBackendId(selectedBackend);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; });</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"> 402</span>&#160; <span class="keywordflow">if</span> (!optimizationViews.GetFailedSubgraphs().empty())</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; std::stringstream warningMsg;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</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="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</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"> 408</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="l00409"></a><span class="lineno"> 409</span>&#160; BackendSettings settingsCopy(backendSettings);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> (!backendObjPtr-&gt;GetId().IsCpuRef())</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; <span class="comment">// Add the current backend to the list of backends to ignore</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; settingsCopy.m_IgnoredBackends.insert(backendObjPtr-&gt;GetId());</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;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordtype">int</span> count=0;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; failedSubgraph : optimizationViews.GetFailedSubgraphs())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</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="l00420"></a><span class="lineno"> 420</span>&#160; std::stringstream subgraphMsg;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</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="l00422"></a><span class="lineno"> 422</span>&#160; &lt;&lt; <span class="stringliteral">&quot; layers inside sub-graph &quot;</span> &lt;&lt; count++;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(subgraphMsg.str(), errMessages);</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; OptimizationResult reassignmentResult = <a class="code" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; settingsCopy,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; *subgraph,</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; errMessages);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (reassignmentResult.m_Error)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</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="l00432"></a><span class="lineno"> 432</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</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; }</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"> 440</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a38e626422579decc13e3ee37da1a84c9"><div class="ttname"><a href="namespacearmnn.html#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.html#l00086">Network.cpp:86</a></div></div>
5799<div class="ttc" id="namespacearmnn_html_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00312">Network.cpp:312</a></div></div>
5800</div><!-- fragment -->
5801</div>
5802</div>
5803<a id="a374120de442fe42c26536bb4f1e2a5a1"></a>
5804<h2 class="memtitle"><span class="permalink"><a href="#a374120de442fe42c26536bb4f1e2a5a1">&#9670;&nbsp;</a></span>ArgMinMax()</h2>
5805
5806<div class="memitem">
5807<div class="memproto">
5808 <table class="memname">
5809 <tr>
5810 <td class="memname">void ArgMinMax </td>
5811 <td>(</td>
5812 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
5813 <td class="paramname"><em>in</em>, </td>
5814 </tr>
5815 <tr>
5816 <td class="paramkey"></td>
5817 <td></td>
5818 <td class="paramtype">int32_t *&#160;</td>
5819 <td class="paramname"><em>out</em>, </td>
5820 </tr>
5821 <tr>
5822 <td class="paramkey"></td>
5823 <td></td>
5824 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
5825 <td class="paramname"><em>inputTensorInfo</em>, </td>
5826 </tr>
5827 <tr>
5828 <td class="paramkey"></td>
5829 <td></td>
5830 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
5831 <td class="paramname"><em>outputTensorInfo</em>, </td>
5832 </tr>
5833 <tr>
5834 <td class="paramkey"></td>
5835 <td></td>
5836 <td class="paramtype"><a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
5837 <td class="paramname"><em>function</em>, </td>
5838 </tr>
5839 <tr>
5840 <td class="paramkey"></td>
5841 <td></td>
5842 <td class="paramtype">int&#160;</td>
5843 <td class="paramname"><em>axis</em>&#160;</td>
5844 </tr>
5845 <tr>
5846 <td></td>
5847 <td>)</td>
5848 <td></td><td></td>
5849 </tr>
5850 </table>
5851</div><div class="memdoc">
5852
5853<p class="definition">Definition at line <a class="el" href="_arg_min_max_8cpp_source.html#l00015">15</a> of file <a class="el" href="_arg_min_max_8cpp_source.html">ArgMinMax.cpp</a>.</p>
5854
5855<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00127">armnnUtils::GetUnsignedAxis()</a>, <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a>.</p>
5856
5857<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l00299">BOOST_AUTO_TEST_CASE()</a>.</p>
5858<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; boost::ignore_unused(outputTensorInfo);</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = <a class="code" href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(inputTensorInfo.GetNumDimensions(), axis);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerElements = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputTensorInfo.GetShape(), 0, uAxis);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputTensorInfo.GetShape()[uAxis];</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerElements = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputTensorInfo.GetShape(),</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; uAxis + 1,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; inputTensorInfo.GetNumDimensions());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerElements; ++outer) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerElements; ++inner) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; in[outer * axisSize * innerElements + inner];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">auto</span> tmpValue = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tmpIndex = 0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; axisSize; ++i) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; in[(outer * axisSize * innerElements) + (i * innerElements) + inner];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; value = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> ((<span class="keyword">function</span> == <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a> &amp;&amp; value &lt; tmpValue) ||</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; (<span class="keyword">function</span> == <a class="code" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a> &amp;&amp; value &gt; tmpValue)) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; tmpValue = value;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; tmpIndex = i;</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"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; out[outer * innerElements + inner] = boost::numeric_cast&lt;int32_t&gt;(tmpIndex);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</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"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
5859<div class="ttc" id="namespacearmnn_utils_html_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00127">TensorUtils.cpp:127</a></div></div>
5860<div class="ttc" id="namespacearmnn_html_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
5861<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
5862<div class="ttc" id="namespacearmnn_utils_html_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00113">TensorUtils.cpp:113</a></div></div>
5863</div><!-- fragment -->
5864</div>
5865</div>
5866<a id="aad4c29b429ad2d6c9224921cfdc5b271"></a>
5867<h2 class="memtitle"><span class="permalink"><a href="#aad4c29b429ad2d6c9224921cfdc5b271">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[1/2]</span></h2>
5868
5869<div class="memitem">
5870<div class="memproto">
5871 <table class="memname">
5872 <tr>
5873 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> armnn::AssignBackends </td>
5874 <td>(</td>
5875 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *&#160;</td>
5876 <td class="paramname"><em>optNetObjPtr</em>, </td>
5877 </tr>
5878 <tr>
5879 <td class="paramkey"></td>
5880 <td></td>
5881 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
5882 <td class="paramname"><em>backendSettings</em>, </td>
5883 </tr>
5884 <tr>
5885 <td class="paramkey"></td>
5886 <td></td>
5887 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
5888 <td class="paramname"><em>firstLayer</em>, </td>
5889 </tr>
5890 <tr>
5891 <td class="paramkey"></td>
5892 <td></td>
5893 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
5894 <td class="paramname"><em>lastLayer</em>, </td>
5895 </tr>
5896 <tr>
5897 <td class="paramkey"></td>
5898 <td></td>
5899 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
5900 <td class="paramname"><em>errMessages</em>&#160;</td>
5901 </tr>
5902 <tr>
5903 <td></td>
5904 <td>)</td>
5905 <td></td><td></td>
5906 </tr>
5907 </table>
5908</div><div class="memdoc">
5909
5910<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00133">133</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
5911
5912<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00098">CheckScaleSetOnQuantizedType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00063">BackendSettings::GetAvailablePreferredBackends()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="_network_8hpp_source.html#l00272">OptimizedNetwork::GetGraph()</a>, <a class="el" href="_internal_types_8cpp_source.html#l00013">GetLayerTypeAsCString()</a>, <a class="el" href="_network_utils_8cpp_source.html#l00040">InsertConvertFp16ToFp32LayersBefore()</a>, <a class="el" href="_network_utils_8cpp_source.html#l00079">InsertConvertFp32ToFp16LayersAfter()</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00057">BackendSettings::IsCpuRefUsed()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l00045">IWorkloadFactory::IsLayerSupported()</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00016">BackendSettings::m_PreferredBackends</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00018">BackendSettings::m_SelectedBackends</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, <a class="el" href="_network_8cpp_source.html#l00074">ReportError()</a>, <a class="el" href="_network_8cpp_source.html#l00086">ReportWarning()</a>, and <a class="el" href="_layer_8hpp_source.html#l00264">Layer::SetBackendId()</a>.</p>
5913
5914<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00345">ApplyBackendOptimizations()</a>, <a class="el" href="_network_8cpp_source.html#l00312">AssignBackends()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
5915<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; OptimizationResult result;</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="comment">// Helper lambda to compose meaningful error message before returning with error</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">auto</span> ReturnWithError = [&amp;](<span class="keyword">const</span> Layer* layer)</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; std::stringstream failureMsg;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; &lt;&lt; <span class="stringliteral">&quot; is not supported on any preferred backend &quot;</span> &lt;&lt; backendSettings.m_PreferredBackends;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> result;</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"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">auto</span> availablePreferredBackends = backendSettings.GetAvailablePreferredBackends();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (availablePreferredBackends.empty())</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;No preferred backends are available&quot;</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</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; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</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">for</span> (<span class="keyword">auto</span> it = firstLayer; it != lastLayer; ++it)</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; <span class="keyword">auto</span> layer = *it;</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"> 168</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeIn = layer-&gt;GetNumInputSlots() == 0 ? DataType::Float32 :</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; layer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo().GetDataType();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeOut = layer-&gt;GetNumOutputSlots() == 0 ? DataType::Float32 :</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; layer-&gt;GetOutputSlot(0).GetTensorInfo().GetDataType();</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; std::string reasonIfUnsupported;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespacearmnn.html#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a>(layer, errMessages))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// don&#39;t bomb immediately, find all the quantized outputs</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</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="l00179"></a><span class="lineno"> 179</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</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; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// need to set the compute device on the layer</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// before we can check if it is supported</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; layer-&gt;SetBackendId(backend);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span> (!IWorkloadFactory::IsLayerSupported(*layer, EmptyOptional(), reasonIfUnsupported))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (dataTypeIn == DataType::Float16 || dataTypeOut == DataType::Float16)</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"> 191</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer, DataType::Float32, reasonIfUnsupported)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; &amp;&amp; layer-&gt;GetType() != LayerType::ConvertFp32ToFp16</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; &amp;&amp; layer-&gt;GetType() != LayerType::ConvertFp16ToFp32)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// Insert FP16 -&gt; FP32 conversion layer before current layer</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; std::vector&lt;ConvertFp16ToFp32Layer*&gt; convertFp16ToFp32Layers;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (dataTypeIn == DataType::Float16)</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; convertFp16ToFp32Layers =</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="namespacearmnn.html#ad31c56533e4f9f9f51719599fbfcf7bb">InsertConvertFp16ToFp32LayersBefore</a>(optNetObjPtr-&gt;GetGraph(), *layer);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</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="comment">// Insert FP32 -&gt; FP16 conversion layer after current layer</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; std::vector&lt;ConvertFp32ToFp16Layer*&gt; convertFp32ToFp16Layers;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (dataTypeOut == DataType::Float16)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; convertFp32ToFp16Layers =</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="namespacearmnn.html#abf625e50a5eaeafce5b39580dc95a9d3">InsertConvertFp32ToFp16LayersAfter</a>(optNetObjPtr-&gt;GetGraph(), *layer);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</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; <span class="comment">// Assign a supported backend to the newly introduced conversion layers</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">auto</span> AssignFirstSupportedBackend = [&amp;](Layer* layer, BackendId preferredBackend)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">bool</span> supportedBackendFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; std::string reasonIfUnsupported;</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; <span class="comment">// Try preferred backend first</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; layer-&gt;SetBackendId(preferredBackend);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; reasonIfUnsupported))</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; supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span></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">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</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; <span class="comment">// Skip preferred backend (we already determined that it is not supported)</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (backend == preferredBackend)</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">continue</span>;</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"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; layer-&gt;SetBackendId(backend);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; reasonIfUnsupported))</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"> 240</span>&#160; supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">break</span>;</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; }</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"> 246</span>&#160; <span class="keywordflow">return</span> supportedBackendFound;</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;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">for</span> (ConvertFp16ToFp32Layer* convertLayer : convertFp16ToFp32Layers)</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"> 251</span>&#160; <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> ReturnWithError(convertLayer);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</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"> 257</span>&#160; <span class="keywordflow">for</span> (ConvertFp32ToFp16Layer* convertLayer : convertFp32ToFp16Layers)</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">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</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; <span class="keywordflow">return</span> ReturnWithError(convertLayer);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</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;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; found = <span class="keyword">true</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</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; std::stringstream warningMsg;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; warningMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; &lt;&lt; <span class="stringliteral">&quot; is not supported on requested backend &quot;</span> &lt;&lt; layer-&gt;GetBackendId().Get()</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; &lt;&lt; <span class="stringliteral">&quot; for input data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeIn)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; &lt;&lt; <span class="stringliteral">&quot; and output data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeOut)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; &lt;&lt; <span class="stringliteral">&quot; (reason: &quot;</span> &lt;&lt; reasonIfUnsupported</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; &lt;&lt; <span class="stringliteral">&quot;), falling back to the next backend.&quot;</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="namespacearmnn.html#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; found = <span class="keyword">true</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; backendSettings.m_SelectedBackends.insert(backend);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">break</span>;</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; }</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; <span class="comment">// If the layer is unsupported by any devices, log and return a null network.</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (!found)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</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="l00290"></a><span class="lineno"> 290</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="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// available as accelerated operations, or are only available under certain</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// conditions, currently they comprise MemCopy, Constant, Permute)</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a> layerType = layer-&gt;GetType();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (!backendSettings.IsCpuRefUsed() &amp;&amp; (layerType == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a> ||</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; layerType == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a> ||</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; layerType == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</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; BackendId cpuBackendId(<a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; layer-&gt;SetBackendId(cpuBackendId);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; backendSettings.m_SelectedBackends.insert(cpuBackendId);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span></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> ReturnWithError(layer);</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"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9da573d7a1fc03726fd41f2130cbcf92"><div class="ttname"><a href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">char const * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.html#l00013">InternalTypes.cpp:13</a></div></div>
5916<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
5917<div class="ttc" id="namespacearmnn_html_abf625e50a5eaeafce5b39580dc95a9d3"><div class="ttname"><a href="namespacearmnn.html#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.html#l00079">NetworkUtils.cpp:79</a></div></div>
5918<div class="ttc" id="namespacearmnn_html_a38e626422579decc13e3ee37da1a84c9"><div class="ttname"><a href="namespacearmnn.html#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.html#l00086">Network.cpp:86</a></div></div>
5919<div class="ttc" id="namespacearmnn_html_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.html#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.html#l00074">Network.cpp:74</a></div></div>
5920<div class="ttc" id="namespacearmnn_html_af002111f64aee648e3258247075cae36"><div class="ttname"><a href="namespacearmnn.html#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.html#l00098">Network.cpp:98</a></div></div>
5921<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
5922<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
5923<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
5924<div class="ttc" id="namespacearmnn_html_ad31c56533e4f9f9f51719599fbfcf7bb"><div class="ttname"><a href="namespacearmnn.html#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.html#l00040">NetworkUtils.cpp:40</a></div></div>
5925<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a></div></div>
5926<div class="ttc" id="namespacearmnn_html_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.html#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.html#l00165">TypesUtils.hpp:165</a></div></div>
5927<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a></div><div class="ttdeci">LayerType</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00014">InternalTypes.hpp:14</a></div></div>
5928</div><!-- fragment -->
5929</div>
5930</div>
5931<a id="a76dca645d0d0665f74e171bbc1901469"></a>
5932<h2 class="memtitle"><span class="permalink"><a href="#a76dca645d0d0665f74e171bbc1901469">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[2/2]</span></h2>
5933
5934<div class="memitem">
5935<div class="memproto">
5936 <table class="memname">
5937 <tr>
5938 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> armnn::AssignBackends </td>
5939 <td>(</td>
5940 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.html">OptimizedNetwork</a> *&#160;</td>
5941 <td class="paramname"><em>optNetObjPtr</em>, </td>
5942 </tr>
5943 <tr>
5944 <td class="paramkey"></td>
5945 <td></td>
5946 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
5947 <td class="paramname"><em>backendSettings</em>, </td>
5948 </tr>
5949 <tr>
5950 <td class="paramkey"></td>
5951 <td></td>
5952 <td class="paramtype"><a class="el" href="classarmnn_1_1_subgraph_view.html">SubgraphView</a> &amp;&#160;</td>
5953 <td class="paramname"><em>subgraph</em>, </td>
5954 </tr>
5955 <tr>
5956 <td class="paramkey"></td>
5957 <td></td>
5958 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
5959 <td class="paramname"><em>errMessages</em>&#160;</td>
5960 </tr>
5961 <tr>
5962 <td></td>
5963 <td>)</td>
5964 <td></td><td></td>
5965 </tr>
5966 </table>
5967</div><div class="memdoc">
5968
5969<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00312">312</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
5970
5971<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_subgraph_view_8cpp_source.html#l00163">SubgraphView::begin()</a>, and <a class="el" href="_subgraph_view_8cpp_source.html#l00168">SubgraphView::end()</a>.</p>
5972<div class="fragment"><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; Graph::Iterator firstLayer = subgraph.begin();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; Graph::Iterator lastLayer = subgraph.end();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; backendSettings,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; firstLayer,</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; lastLayer,</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; errMessages);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00312">Network.cpp:312</a></div></div>
5973</div><!-- fragment -->
5974</div>
5975</div>
5976<a id="a09ff1f6670d27d3b41e5b5d35a6c9f37"></a>
5977<h2 class="memtitle"><span class="permalink"><a href="#a09ff1f6670d27d3b41e5b5d35a6c9f37">&#9670;&nbsp;</a></span>AssignSplitId()</h2>
5978
5979<div class="memitem">
5980<div class="memproto">
5981 <table class="memname">
5982 <tr>
5983 <td class="memname">void armnn::AssignSplitId </td>
5984 <td>(</td>
5985 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
5986 <td class="paramname"><em>layerInfos</em>, </td>
5987 </tr>
5988 <tr>
5989 <td class="paramkey"></td>
5990 <td></td>
5991 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
5992 <td class="paramname"><em>layerInfo</em>&#160;</td>
5993 </tr>
5994 <tr>
5995 <td></td>
5996 <td>)</td>
5997 <td></td><td></td>
5998 </tr>
5999 </table>
6000</div><div class="memdoc">
6001
6002<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00301">301</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
6003
6004<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00259">ForEachLayerInput()</a>.</p>
6005
6006<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00381">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
6007<div class="fragment"><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;{</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// Check each input to see if we can attach ourselves to any of the subgraphs that have already been assigned.</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; parentInfo)</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; <span class="comment">// We can only attach ourselves to the subgraph from this input if there isn&#39;t a cut here.</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_IsSelected == parentInfo.m_IsSelected)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// We also need to check that merging into this subgraph won&#39;t cause a dependency cycle between subgraphs.</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// This will be the case if the subgraph that we will become part of is already a dependency</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// of one of the subgraphs that are input to this layer, e.g:</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// 0 | The numbers (0, 1) are the subgraph IDs of each layer and we are looking at layer X.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment">// / \ |</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// 1 0 | We can&#39;t merge X into subgraph 0, because the left-hand input already depends on subgraph 0.</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment">// \ / | We can however merge X into subgraph 1.</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// X |</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; bool dependenciesOk = true;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; ForEachLayerInput(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; otherParentInfo)</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="comment">// We call HasAntecedent() ~ n^2 times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// Hence it is important that this is efficient - see PartialSubgraph class description.</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; if (otherParentInfo.m_Subgraph-&gt;HasAntecedent(parentInfo.m_Subgraph.get()))</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; dependenciesOk = false;</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; });</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; <span class="keywordflow">if</span> (dependenciesOk)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// Merge into the subgraph of this input. If we have already been merged into another subgraph</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// (from another input of this layer), then merge both of them together.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_Subgraph == <span class="keyword">nullptr</span>)</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; layerInfo.m_Subgraph = parentInfo.m_Subgraph;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span></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="comment">// We call MergeWith() ~ n times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// Therefore it does not need to be as performant as HasAntecedent().</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; layerInfo.m_Subgraph-&gt;MergeWith(parentInfo.m_Subgraph.get());</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</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; });</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; <span class="comment">// If we weren&#39;t able to merge into an existing subgraph then we need to make a new one</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_Subgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; layerInfo.m_Subgraph = std::make_shared&lt;PartialSubgraph&gt;();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</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; <span class="comment">// Record dependencies of the chosen subgraph based on the inputs of this layer.</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; parentInfo)</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="comment">// These functions are called ~n times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// Therefore it does not need to be as performant as HasAntecedent().</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (!layerInfo.m_Subgraph-&gt;IsMergedWith(parentInfo.m_Subgraph.get()))</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; layerInfo.m_Subgraph-&gt;AddDirectAntecedent(parentInfo.m_Subgraph.get());</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"> 364</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afce94270d9c4a51cd0c4ac6a58af4e26"><div class="ttname"><a href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">armnn::ForEachLayerInput</a></div><div class="ttdeci">void ForEachLayerInput(LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.html#l00259">SubgraphViewSelector.cpp:259</a></div></div>
6008</div><!-- fragment -->
6009</div>
6010</div>
6011<a id="ac2807505b850738bc8a1991ce669dd47"></a>
6012<h2 class="memtitle"><span class="permalink"><a href="#ac2807505b850738bc8a1991ce669dd47">&#9670;&nbsp;</a></span>BackendRegistryInstance()</h2>
6013
6014<div class="memitem">
6015<div class="memproto">
6016 <table class="memname">
6017 <tr>
6018 <td class="memname"><a class="el" href="classarmnn_1_1_backend_registry.html">BackendRegistry</a> &amp; BackendRegistryInstance </td>
6019 <td>(</td>
6020 <td class="paramname"></td><td>)</td>
6021 <td></td>
6022 </tr>
6023 </table>
6024</div><div class="memdoc">
6025
6026<p class="definition">Definition at line <a class="el" href="_backend_registry_8cpp_source.html#l00013">13</a> of file <a class="el" href="_backend_registry_8cpp_source.html">BackendRegistry.cpp</a>.</p>
6027
6028<p class="reference">Referenced by <a class="el" href="_inference_model_8hpp_source.html#l00341">InferenceModel&lt; IParser, TDataType &gt;::AddCommandLineOptions()</a>, <a class="el" href="_backend_registry_tests_8cpp_source.html#l00037">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_common_test_utils_8cpp_source.html#l00045">CreateBackendObject()</a>, <a class="el" href="_network_8cpp_source.html#l00326">CreateSupportedBackends()</a>, <a class="el" href="_dynamic_backend_utils_8cpp_source.html#l00314">DynamicBackendUtils::DeregisterDynamicBackends()</a>, <a class="el" href="_backend_helper_8cpp_source.html#l00014">GetILayerSupportByBackendId()</a>, <a class="el" href="_workload_factory_8cpp_source.html#l00045">IWorkloadFactory::IsLayerSupported()</a>, <a class="el" href="_execute_network_8cpp_source.html#l00009">main()</a>, <a class="el" href="_loaded_network_8cpp_source.html#l00085">LoadedNetwork::MakeLoadedNetwork()</a>, <a class="el" href="_mock_backend_8cpp_source.html#l00070">MockBackendInitialiser::MockBackendInitialiser()</a>, <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>, <a class="el" href="_dynamic_backend_utils_8cpp_source.html#l00326">DynamicBackendUtils::RegisterDynamicBackends()</a>, <a class="el" href="_network_execution_utils_8hpp_source.html#l00731">RunCsvTest()</a>, <a class="el" href="_runtime_8cpp_source.html#l00155">Runtime::Runtime()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l01202">RuntimeEmptyTestImpl()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l01331">RuntimeInvalidOverridePathTestImpl()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l00094">TestBackendRegistry::TestBackendRegistry()</a>, <a class="el" href="_mock_backend_8cpp_source.html#l00079">MockBackendInitialiser::~MockBackendInitialiser()</a>, and <a class="el" href="_dynamic_backend_tests_8hpp_source.html#l00099">TestBackendRegistry::~TestBackendRegistry()</a>.</p>
6029<div class="fragment"><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="keyword">static</span> BackendRegistry instance;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">return</span> instance;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;}</div></div><!-- fragment -->
6030</div>
6031</div>
6032<a id="adc251e65d99405496d503811589e9a20"></a>
6033<h2 class="memtitle"><span class="permalink"><a href="#adc251e65d99405496d503811589e9a20">&#9670;&nbsp;</a></span>BatchNormImpl()</h2>
6034
6035<div class="memitem">
6036<div class="memproto">
6037 <table class="memname">
6038 <tr>
6039 <td class="memname">void BatchNormImpl </td>
6040 <td>(</td>
6041 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.html">BatchNormalizationQueueDescriptor</a> &amp;&#160;</td>
6042 <td class="paramname"><em>data</em>, </td>
6043 </tr>
6044 <tr>
6045 <td class="paramkey"></td>
6046 <td></td>
6047 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6048 <td class="paramname"><em>meanDecoder</em>, </td>
6049 </tr>
6050 <tr>
6051 <td class="paramkey"></td>
6052 <td></td>
6053 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6054 <td class="paramname"><em>varianceDecoder</em>, </td>
6055 </tr>
6056 <tr>
6057 <td class="paramkey"></td>
6058 <td></td>
6059 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6060 <td class="paramname"><em>betaDecoder</em>, </td>
6061 </tr>
6062 <tr>
6063 <td class="paramkey"></td>
6064 <td></td>
6065 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6066 <td class="paramname"><em>gammaDecoder</em>, </td>
6067 </tr>
6068 <tr>
6069 <td class="paramkey"></td>
6070 <td></td>
6071 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6072 <td class="paramname"><em>inputDecoder</em>, </td>
6073 </tr>
6074 <tr>
6075 <td class="paramkey"></td>
6076 <td></td>
6077 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
6078 <td class="paramname"><em>outputEncoder</em>&#160;</td>
6079 </tr>
6080 <tr>
6081 <td></td>
6082 <td>)</td>
6083 <td></td><td></td>
6084 </tr>
6085 </table>
6086</div><div class="memdoc">
6087
6088<p class="definition">Definition at line <a class="el" href="_batch_norm_impl_8cpp_source.html#l00018">18</a> of file <a class="el" href="_batch_norm_impl_8cpp_source.html">BatchNormImpl.cpp</a>.</p>
6089
6090<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00623">BatchNormalizationDescriptor::m_Eps</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
6091
6092<p class="reference">Referenced by <a class="el" href="_ref_batch_normalization_workload_8cpp_source.html#l00025">RefBatchNormalizationWorkload::Execute()</a>.</p>
6093<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> TensorShape inputShape = inputInfo.GetShape();</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; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayout(data.m_Parameters.m_DataLayout);</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = inputShape[0];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.GetHeightIndex()];</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.GetWidthIndex()];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.GetChannelsIndex()];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</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; meanDecoder[c];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; varianceDecoder[c];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; betaDecoder[c];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; gammaDecoder[c];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">float</span> mean = meanDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">float</span> var = varianceDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> beta = betaDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">float</span> gamma = gammaDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</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="keywordtype">float</span> mult = gamma / sqrtf(var + data.m_Parameters.m_Eps);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">float</span> add = beta - mult * mean;</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"> 50</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; inputBatches; n++)</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</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"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; outputEncoder[index];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(mult * inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() + add);</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"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
6094<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
6095<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
6096<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
6097</div><!-- fragment -->
6098</div>
6099</div>
6100<a id="a8746512fab5ec10c2c57800c66311ba7"></a>
6101<h2 class="memtitle"><span class="permalink"><a href="#a8746512fab5ec10c2c57800c66311ba7">&#9670;&nbsp;</a></span>BatchToSpaceNd()</h2>
6102
6103<div class="memitem">
6104<div class="memproto">
6105 <table class="memname">
6106 <tr>
6107 <td class="memname">void BatchToSpaceNd </td>
6108 <td>(</td>
6109 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
6110 <td class="paramname"><em>dataLayout</em>, </td>
6111 </tr>
6112 <tr>
6113 <td class="paramkey"></td>
6114 <td></td>
6115 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
6116 <td class="paramname"><em>inputTensorInfo</em>, </td>
6117 </tr>
6118 <tr>
6119 <td class="paramkey"></td>
6120 <td></td>
6121 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
6122 <td class="paramname"><em>outputTensorInfo</em>, </td>
6123 </tr>
6124 <tr>
6125 <td class="paramkey"></td>
6126 <td></td>
6127 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
6128 <td class="paramname"><em>blockShape</em>, </td>
6129 </tr>
6130 <tr>
6131 <td class="paramkey"></td>
6132 <td></td>
6133 <td class="paramtype">const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;&#160;</td>
6134 <td class="paramname"><em>cropsData</em>, </td>
6135 </tr>
6136 <tr>
6137 <td class="paramkey"></td>
6138 <td></td>
6139 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6140 <td class="paramname"><em>inputDecoder</em>, </td>
6141 </tr>
6142 <tr>
6143 <td class="paramkey"></td>
6144 <td></td>
6145 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
6146 <td class="paramname"><em>outputEncoder</em>&#160;</td>
6147 </tr>
6148 <tr>
6149 <td></td>
6150 <td>)</td>
6151 <td></td><td></td>
6152 </tr>
6153 </table>
6154</div><div class="memdoc">
6155
6156<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">35</a> of file <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html">BatchToSpaceNd.cpp</a>.</p>
6157
6158<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd()</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00019">Offset()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
6159
6160<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd()</a>, <a class="el" href="_batch_to_space_nd_layer_8cpp_source.html#l00026">BatchToSpaceNdLayer::BatchToSpaceNdLayer()</a>, and <a class="el" href="_serializer_tests_8cpp_source.html#l00416">BOOST_AUTO_TEST_CASE()</a>.</p>
6161<div class="fragment"><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_tensor_shape.html">TensorShape</a> inputShape = inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</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"> 45</span>&#160; BOOST_ASSERT_MSG(inputShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() == 4, <span class="stringliteral">&quot;Expected Input with 4 Dimensions&quot;</span>);</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; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> outputShape = outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</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; BOOST_ASSERT_MSG(outputShape.GetNumDimensions() == 4, <span class="stringliteral">&quot;Expected Output with 4 Dimensions&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBatchSize = outputShape[0];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; BOOST_ASSERT_MSG(blockShape.size() &gt; 0, <span class="stringliteral">&quot;BlockShape must contain 1 or more entries&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockShapeHeight = blockShape[0];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockShapeWidth = blockShape[1];</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"> 63</span>&#160; BOOST_ASSERT_MSG(cropsData.size() &gt; 0, <span class="stringliteral">&quot;Crops must contain 1 or more entries&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cropsTop = cropsData[0].first;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cropsLeft = cropsData[1].first;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inBatch = 0; inBatch &lt; inputBatchSize; ++inBatch)</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"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outBatch = inBatch % outputBatchSize;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> spatialOffset = inBatch / outputBatchSize;</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inH = 0; inH &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()]; ++inH) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = inH * blockShapeHeight + spatialOffset / blockShapeWidth - cropsTop;</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; <span class="keywordflow">if</span> (outH &gt;= outputHeight)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inW = 0; inW &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()]; ++inW) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = inW * blockShapeWidth + spatialOffset % blockShapeWidth - cropsLeft;</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; <span class="keywordflow">if</span> (outW &gt;= outputWidth)</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"> 86</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">Offset</a>(outputShape, outBatch, outH, outW, c, dataLayout);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">Offset</a>(inputShape, inBatch, inH, inW, c, dataLayout);</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; outputEncoder[outOffset];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; inputDecoder[inOffset];</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</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;}</div><div class="ttc" id="namespacearmnn_html_ac70a495c61526a0500b33b23db86ca27"><div class="ttname"><a href="namespacearmnn.html#ac70a495c61526a0500b33b23db86ca27">armnn::Offset</a></div><div class="ttdeci">unsigned int Offset(const TensorShape &amp;shape, unsigned int batch, unsigned int height, unsigned int width, unsigned int channels, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00019">BatchToSpaceNd.cpp:19</a></div></div>
6162<div class="ttc" id="classarmnn_1_1_tensor_shape_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorShape::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00043">Tensor.hpp:43</a></div></div>
6163<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
6164<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
6165<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
6166<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
6167<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
6168<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
6169<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
6170</div><!-- fragment -->
6171</div>
6172</div>
6173<a id="ad3d9cbf26cb5894fd6d9169dbe743417"></a>
6174<h2 class="memtitle"><span class="permalink"><a href="#ad3d9cbf26cb5894fd6d9169dbe743417">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[1/79]</span></h2>
6175
6176<div class="memitem">
6177<div class="memproto">
6178 <table class="memname">
6179 <tr>
6180 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6181 <td>(</td>
6182 <td class="paramtype">CheckInputLayerVisitorBindingIdAndName&#160;</td>
6183 <td class="paramname"></td><td>)</td>
6184 <td></td>
6185 </tr>
6186 </table>
6187</div><div class="memdoc">
6188
6189<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00013">13</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
6190
6191<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.html#l00953">Network::AddInputLayer()</a>.</p>
6192<div class="fragment"><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="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;InputLayer&quot;</span>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; TestInputLayerVisitor visitor(1, layerName);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; Network net;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddInputLayer(1, layerName);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;}</div></div><!-- fragment -->
6193</div>
6194</div>
6195<a id="ac7ce83f024515592cffac13ae5220f1e"></a>
6196<h2 class="memtitle"><span class="permalink"><a href="#ac7ce83f024515592cffac13ae5220f1e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[2/79]</span></h2>
6197
6198<div class="memitem">
6199<div class="memproto">
6200 <table class="memname">
6201 <tr>
6202 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6203 <td>(</td>
6204 <td class="paramtype">CheckInputLayerVisitorBindingIdAndNameNull&#160;</td>
6205 <td class="paramname"></td><td>)</td>
6206 <td></td>
6207 </tr>
6208 </table>
6209</div><div class="memdoc">
6210
6211<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00023">23</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
6212
6213<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.html#l00953">Network::AddInputLayer()</a>.</p>
6214<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; TestInputLayerVisitor visitor(1);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; Network net;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddInputLayer(1);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
6215</div>
6216</div>
6217<a id="ac28b0a4861e6eab3e7621a7ed4eb5f62"></a>
6218<h2 class="memtitle"><span class="permalink"><a href="#ac28b0a4861e6eab3e7621a7ed4eb5f62">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[3/79]</span></h2>
6219
6220<div class="memitem">
6221<div class="memproto">
6222 <table class="memname">
6223 <tr>
6224 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6225 <td>(</td>
6226 <td class="paramtype">CheckOutputLayerVisitorBindingIdAndName&#160;</td>
6227 <td class="paramname"></td><td>)</td>
6228 <td></td>
6229 </tr>
6230 </table>
6231</div><div class="memdoc">
6232
6233<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00032">32</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
6234
6235<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.html#l01222">Network::AddOutputLayer()</a>.</p>
6236<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;OutputLayer&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; TestOutputLayerVisitor visitor(1, layerName);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddOutputLayer(1, layerName);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div></div><!-- fragment -->
6237</div>
6238</div>
6239<a id="a9a7475b081b431ffa9915aac51c2d338"></a>
6240<h2 class="memtitle"><span class="permalink"><a href="#a9a7475b081b431ffa9915aac51c2d338">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[4/79]</span></h2>
6241
6242<div class="memitem">
6243<div class="memproto">
6244 <table class="memname">
6245 <tr>
6246 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6247 <td>(</td>
6248 <td class="paramtype">CheckOutputLayerVisitorBindingIdAndNameNull&#160;</td>
6249 <td class="paramname"></td><td>)</td>
6250 <td></td>
6251 </tr>
6252 </table>
6253</div><div class="memdoc">
6254
6255<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html#l00042">42</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.html">TestInputOutputLayerVisitor.cpp</a>.</p>
6256
6257<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01222">Network::AddOutputLayer()</a>, and <a class="el" href="_profiler_tests_8cpp.html#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>.</p>
6258<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; TestOutputLayerVisitor visitor(1);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddOutputLayer(1);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div></div><!-- fragment -->
6259</div>
6260</div>
6261<a id="a10d15f3df1ab52b3b915a4be1dbf386b"></a>
6262<h2 class="memtitle"><span class="permalink"><a href="#a10d15f3df1ab52b3b915a4be1dbf386b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[5/79]</span></h2>
6263
6264<div class="memitem">
6265<div class="memproto">
6266 <table class="memname">
6267 <tr>
6268 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6269 <td>(</td>
6270 <td class="paramtype">CheckConvolution2dLayer&#160;</td>
6271 <td class="paramname"></td><td>)</td>
6272 <td></td>
6273 </tr>
6274 </table>
6275</div><div class="memdoc">
6276
6277<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00170">170</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6278
6279<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6280
6281<p class="reference">Referenced by <a class="el" href="_permute_and_batch_to_space_as_depth_to_space_tests_8cpp_source.html#l00056">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_neon_end_to_end_tests_8cpp_source.html#l00545">QuantizeData()</a>.</p>
6282<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional());</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; Network net;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div></div><!-- fragment -->
6283</div>
6284</div>
6285<a id="a62448ee306fc41cc7980c4b7eac3ebb6"></a>
6286<h2 class="memtitle"><span class="permalink"><a href="#a62448ee306fc41cc7980c4b7eac3ebb6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[6/79]</span></h2>
6287
6288<div class="memitem">
6289<div class="memproto">
6290 <table class="memname">
6291 <tr>
6292 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6293 <td>(</td>
6294 <td class="paramtype">CheckNamedConvolution2dLayer&#160;</td>
6295 <td class="paramname"></td><td>)</td>
6296 <td></td>
6297 </tr>
6298 </table>
6299</div><div class="memdoc">
6300
6301<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00193">193</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6302
6303<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6304<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;Convolution2dLayer&quot;</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName);</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; Network net;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div></div><!-- fragment -->
6305</div>
6306</div>
6307<a id="a66e9fcc01969d6afa35dfaa212ded223"></a>
6308<h2 class="memtitle"><span class="permalink"><a href="#a66e9fcc01969d6afa35dfaa212ded223">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[7/79]</span></h2>
6309
6310<div class="memitem">
6311<div class="memproto">
6312 <table class="memname">
6313 <tr>
6314 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6315 <td>(</td>
6316 <td class="paramtype">CheckConvolution2dLayerWithBiases&#160;</td>
6317 <td class="paramname"></td><td>)</td>
6318 <td></td>
6319 </tr>
6320 </table>
6321</div><div class="memdoc">
6322
6323<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00217">217</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6324
6325<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6326<div class="fragment"><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases);</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"> 240</span>&#160; Network net;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div></div><!-- fragment -->
6327</div>
6328</div>
6329<a id="a8baf97065d802063eb9bcdd1a066dc86"></a>
6330<h2 class="memtitle"><span class="permalink"><a href="#a8baf97065d802063eb9bcdd1a066dc86">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[8/79]</span></h2>
6331
6332<div class="memitem">
6333<div class="memproto">
6334 <table class="memname">
6335 <tr>
6336 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6337 <td>(</td>
6338 <td class="paramtype">QuantizeAddition&#160;</td>
6339 <td class="paramname"></td><td>)</td>
6340 <td></td>
6341 </tr>
6342 </table>
6343</div><div class="memdoc">
6344
6345<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00227">227</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6346
6347<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6348<div class="fragment"><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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</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="comment">// Establish connections</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmU8Options(DataType::QAsymmU8);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), qAsymmU8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; TestAdditionQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; TestAdditionQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; TestAdditionQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; TestAdditionQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6349<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6350<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6351</div><!-- fragment -->
6352</div>
6353</div>
6354<a id="a154c5a01df05412929d89e06fc4d0d6d"></a>
6355<h2 class="memtitle"><span class="permalink"><a href="#a154c5a01df05412929d89e06fc4d0d6d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[9/79]</span></h2>
6356
6357<div class="memitem">
6358<div class="memproto">
6359 <table class="memname">
6360 <tr>
6361 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6362 <td>(</td>
6363 <td class="paramtype">CheckNamedConvolution2dLayerWithBiases&#160;</td>
6364 <td class="paramname"></td><td>)</td>
6365 <td></td>
6366 </tr>
6367 </table>
6368</div><div class="memdoc">
6369
6370<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00246">246</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6371
6372<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01051">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6373<div class="fragment"><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="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;Convolution2dLayer&quot;</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; Network net;</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"> 272</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div></div><!-- fragment -->
6374</div>
6375</div>
6376<a id="a6eadb1671955b1bf7cdd8b29fd34aa33"></a>
6377<h2 class="memtitle"><span class="permalink"><a href="#a6eadb1671955b1bf7cdd8b29fd34aa33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[10/79]</span></h2>
6378
6379<div class="memitem">
6380<div class="memproto">
6381 <table class="memname">
6382 <tr>
6383 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6384 <td>(</td>
6385 <td class="paramtype">CheckDepthwiseConvolution2dLayer&#160;</td>
6386 <td class="paramname"></td><td>)</td>
6387 <td></td>
6388 </tr>
6389 </table>
6390</div><div class="memdoc">
6391
6392<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00276">276</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6393
6394<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6395<div class="fragment"><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</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"> 287</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; Network net;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;}</div></div><!-- fragment -->
6396</div>
6397</div>
6398<a id="ac36bd2336c0e3caefecde40bc07e2bf3"></a>
6399<h2 class="memtitle"><span class="permalink"><a href="#ac36bd2336c0e3caefecde40bc07e2bf3">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[11/79]</span></h2>
6400
6401<div class="memitem">
6402<div class="memproto">
6403 <table class="memname">
6404 <tr>
6405 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6406 <td>(</td>
6407 <td class="paramtype">CheckNamedDepthwiseConvolution2dLayer&#160;</td>
6408 <td class="paramname"></td><td>)</td>
6409 <td></td>
6410 </tr>
6411 </table>
6412</div><div class="memdoc">
6413
6414<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00299">299</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6415
6416<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6417<div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;DepthwiseConvolution2dLayer&quot;</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; Network net;</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"> 319</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; weights,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; layerName);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div></div><!-- fragment -->
6418</div>
6419</div>
6420<a id="a14bcc6125921389dceb27e432bc7a489"></a>
6421<h2 class="memtitle"><span class="permalink"><a href="#a14bcc6125921389dceb27e432bc7a489">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[12/79]</span></h2>
6422
6423<div class="memitem">
6424<div class="memproto">
6425 <table class="memname">
6426 <tr>
6427 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6428 <td>(</td>
6429 <td class="paramtype">CheckDepthwiseConvolution2dLayerWithBiases&#160;</td>
6430 <td class="paramname"></td><td>)</td>
6431 <td></td>
6432 </tr>
6433 </table>
6434</div><div class="memdoc">
6435
6436<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00326">326</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6437
6438<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6439<div class="fragment"><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; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases);</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"> 349</span>&#160; Network net;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div></div><!-- fragment -->
6440</div>
6441</div>
6442<a id="a9cec088786b209989fe9e04e1be9636d"></a>
6443<h2 class="memtitle"><span class="permalink"><a href="#a9cec088786b209989fe9e04e1be9636d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[13/79]</span></h2>
6444
6445<div class="memitem">
6446<div class="memproto">
6447 <table class="memname">
6448 <tr>
6449 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6450 <td>(</td>
6451 <td class="paramtype">InputOutputLayerDynamicQuant&#160;</td>
6452 <td class="paramname"></td><td>)</td>
6453 <td></td>
6454 </tr>
6455 </table>
6456</div><div class="memdoc">
6457
6458<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00347">347</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6459
6460<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00318">CreateNetworkWithInputOutputLayers()</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00337">GetInputTensorInfo()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
6461<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;{</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#aa9c6c1a7b5380a99a536f4740f87dd59">CreateNetworkWithInputOutputLayers</a>();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> tensorInfo = <a class="code" href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a>(boost::polymorphic_downcast&lt;const Network*&gt;(network.get()));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="comment">// Outliers -56 and 98</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; std::vector&lt;float&gt; inputData({0, 0, 0, -56, 98, 0, 0, 0});</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> inputTensor(tensorInfo, inputData.data());</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; <a class="code" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; inputTensors.push_back(std::make_pair(0, inputTensor));</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a> quantizer = <a class="code" href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a>(network.get());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; quantizer-&gt;Refine(inputTensors);</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"> 364</span>&#160; <span class="comment">// Outliers -77 and 65</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; std::vector&lt;float&gt; inputData2({0, -77, 0, -56, 65, 0, 0, 0});</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> inputTensor2(tensorInfo, inputData2.data());</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors2;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; inputTensors2.push_back(std::make_pair(0, inputTensor2));</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; quantizer-&gt;Refine(inputTensors2);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetwork = quantizer-&gt;ExportNetwork();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// Output Layer should be quantized for a min max of -77 and 98</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// according to QU8 Quantization Scheme</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; std::unique_ptr&lt;IQuantizationScheme&gt; quantizationScheme = std::make_unique&lt;QAsymmU8QuantizationScheme&gt;();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qParams = quantizationScheme-&gt;ComputeScheme(-77.0, 98.0);</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="keyword">class </span>TestOutputLayerVisitor : <span class="keyword">public</span> LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;</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; <span class="keyword">public</span>:</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; TestOutputLayerVisitor(<span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a>&amp; offsetScalePair, <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&amp; dataType) :</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; m_OffsetScalePair(offsetScalePair), m_DataType(dataType) {}</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; boost::ignore_unused(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; BOOST_CHECK_MESSAGE(info.GetDataType() == m_DataType,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; std::string(<a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(info.GetDataType()))</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; .append(<span class="stringliteral">&quot; == &quot;</span>).append(<a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(m_DataType)));</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// int_32t</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(info.GetQuantizationOffset() == m_OffsetScalePair.second);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// float</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; BOOST_TEST(info.GetQuantizationScale() == m_OffsetScalePair.first, boost::test_tools::tolerance(0.001));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</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="keyword">private</span>:</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> m_OffsetScalePair;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> m_DataType;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; };</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; TestOutputLayerVisitor visitor(qParams, quantizationScheme-&gt;GetDataType());</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; quantizedNetwork-&gt;Accept(visitor);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_const_tensor_html"><div class="ttname"><a href="classarmnn_1_1_const_tensor.html">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.html#l00199">Tensor.hpp:199</a></div></div>
6462<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6463<div class="ttc" id="namespacearmnn_html_ae52296dff1f4879854f320d59f92574e"><div class="ttname"><a href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">armnn::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(const Network *network)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00337">QuantizerTest.cpp:337</a></div></div>
6464<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
6465<div class="ttc" id="namespacearmnn_html_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.html#l00029">INetworkQuantizer.hpp:29</a></div></div>
6466<div class="ttc" id="namespacearmnn_html_aa01bce88f89975a5a031db4cc8861527"><div class="ttname"><a href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class ConstTensor &gt; &gt; InputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00225">Tensor.hpp:225</a></div></div>
6467<div class="ttc" id="namespacearmnn_html_aa9c6c1a7b5380a99a536f4740f87dd59"><div class="ttname"><a href="namespacearmnn.html#aa9c6c1a7b5380a99a536f4740f87dd59">armnn::CreateNetworkWithInputOutputLayers</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithInputOutputLayers()</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00318">QuantizerTest.cpp:318</a></div></div>
6468<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
6469<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6470<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
6471<div class="ttc" id="classarmnn_1_1_i_network_quantizer_html_a3a4d01d9351c02a703740290f226441f"><div class="ttname"><a href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a></div><div class="ttdeci">static INetworkQuantizerPtr Create(INetwork *inputNetwork, const QuantizerOptions &amp;options=QuantizerOptions())</div><div class="ttdoc">Create Quantizer object wrapped in unique_ptr. </div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_8cpp_source.html#l00040">NetworkQuantizer.cpp:40</a></div></div>
6472<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
6473<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#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.html#l00168">Types.hpp:168</a></div></div>
6474<div class="ttc" id="namespacearmnn_html_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.html#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.html#l00165">TypesUtils.hpp:165</a></div></div>
6475</div><!-- fragment -->
6476</div>
6477</div>
6478<a id="aaeafd5f3786a0bd215468714c1e743b1"></a>
6479<h2 class="memtitle"><span class="permalink"><a href="#aaeafd5f3786a0bd215468714c1e743b1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[14/79]</span></h2>
6480
6481<div class="memitem">
6482<div class="memproto">
6483 <table class="memname">
6484 <tr>
6485 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6486 <td>(</td>
6487 <td class="paramtype">CheckNamedDepthwiseConvolution2dLayerWithBiases&#160;</td>
6488 <td class="paramname"></td><td>)</td>
6489 <td></td>
6490 </tr>
6491 </table>
6492</div><div class="memdoc">
6493
6494<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00355">355</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6495
6496<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01105">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6497<div class="fragment"><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="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;DepthwiseConvolution2dLayer&quot;</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; Network net;</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"> 381</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div></div><!-- fragment -->
6498</div>
6499</div>
6500<a id="a3425db69ef4e4927a82e99025c16294a"></a>
6501<h2 class="memtitle"><span class="permalink"><a href="#a3425db69ef4e4927a82e99025c16294a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[15/79]</span></h2>
6502
6503<div class="memitem">
6504<div class="memproto">
6505 <table class="memname">
6506 <tr>
6507 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6508 <td>(</td>
6509 <td class="paramtype">CheckFullyConnectedLayer&#160;</td>
6510 <td class="paramname"></td><td>)</td>
6511 <td></td>
6512 </tr>
6513 </table>
6514</div><div class="memdoc">
6515
6516<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00385">385</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6517
6518<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
6519<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; TestFullyConnectedLayerVistor visitor(descriptor, weights, EmptyOptional());</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; Network net;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;}</div></div><!-- fragment -->
6520</div>
6521</div>
6522<a id="a631f8c0c9bceff4bef761eb7fd865686"></a>
6523<h2 class="memtitle"><span class="permalink"><a href="#a631f8c0c9bceff4bef761eb7fd865686">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[16/79]</span></h2>
6524
6525<div class="memitem">
6526<div class="memproto">
6527 <table class="memname">
6528 <tr>
6529 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6530 <td>(</td>
6531 <td class="paramtype">CheckNamedFullyConnectedLayer&#160;</td>
6532 <td class="paramname"></td><td>)</td>
6533 <td></td>
6534 </tr>
6535 </table>
6536</div><div class="memdoc">
6537
6538<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00402">402</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6539
6540<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
6541<div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;{</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;FullyConnectedLayer&quot;</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</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"> 408</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; TestFullyConnectedLayerVistor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; Network net;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div></div><!-- fragment -->
6542</div>
6543</div>
6544<a id="a7db6a78bb6eedbea7f0525f1fe59de28"></a>
6545<h2 class="memtitle"><span class="permalink"><a href="#a7db6a78bb6eedbea7f0525f1fe59de28">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[17/79]</span></h2>
6546
6547<div class="memitem">
6548<div class="memproto">
6549 <table class="memname">
6550 <tr>
6551 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6552 <td>(</td>
6553 <td class="paramtype">QuantizeAbsActivation&#160;</td>
6554 <td class="paramname"></td><td>)</td>
6555 <td></td>
6556 </tr>
6557 </table>
6558</div><div class="memdoc">
6559
6560<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00408">408</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6561
6562<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6563<div class="fragment"><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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; descriptor.m_Function = ActivationFunction::Abs;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; descriptor.m_B = -10.0f;</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="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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"> 418</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmU8Options(DataType::QAsymmU8);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), qAsymmU8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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"> 423</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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"> 428</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
6564<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6565<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6566</div><!-- fragment -->
6567</div>
6568</div>
6569<a id="a7b017a692367333d1035e276f252f46c"></a>
6570<h2 class="memtitle"><span class="permalink"><a href="#a7b017a692367333d1035e276f252f46c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[18/79]</span></h2>
6571
6572<div class="memitem">
6573<div class="memproto">
6574 <table class="memname">
6575 <tr>
6576 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6577 <td>(</td>
6578 <td class="paramtype">CheckFullyConnectedLayerWithBiases&#160;</td>
6579 <td class="paramname"></td><td>)</td>
6580 <td></td>
6581 </tr>
6582 </table>
6583</div><div class="memdoc">
6584
6585<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00420">420</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6586
6587<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
6588<div class="fragment"><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; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; TestFullyConnectedLayerVistor visitor(descriptor, weights, optionalBiases);</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; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;}</div></div><!-- fragment -->
6589</div>
6590</div>
6591<a id="a2df3b432de50a9b9e8b486aa53e11cc5"></a>
6592<h2 class="memtitle"><span class="permalink"><a href="#a2df3b432de50a9b9e8b486aa53e11cc5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[19/79]</span></h2>
6593
6594<div class="memitem">
6595<div class="memproto">
6596 <table class="memname">
6597 <tr>
6598 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6599 <td>(</td>
6600 <td class="paramtype">QuantizeLinearActivation&#160;</td>
6601 <td class="paramname"></td><td>)</td>
6602 <td></td>
6603 </tr>
6604 </table>
6605</div><div class="memdoc">
6606
6607<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00439">439</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6608
6609<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6610<div class="fragment"><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; descriptor.m_Function = ActivationFunction::Linear;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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"> 458</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
6611<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6612<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6613</div><!-- fragment -->
6614</div>
6615</div>
6616<a id="a5f3e4faca1d063ad73764571f898dc2d"></a>
6617<h2 class="memtitle"><span class="permalink"><a href="#a5f3e4faca1d063ad73764571f898dc2d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[20/79]</span></h2>
6618
6619<div class="memitem">
6620<div class="memproto">
6621 <table class="memname">
6622 <tr>
6623 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6624 <td>(</td>
6625 <td class="paramtype">CheckNamedFullyConnectedLayerWithBiases&#160;</td>
6626 <td class="paramname"></td><td>)</td>
6627 <td></td>
6628 </tr>
6629 </table>
6630</div><div class="memdoc">
6631
6632<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00443">443</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6633
6634<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l00998">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
6635<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;FullyConnectedLayer&quot;</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</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"> 450</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; TestFullyConnectedLayerVistor visitor(descriptor, weights, optionalBiases, layerName);</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; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div></div><!-- fragment -->
6636</div>
6637</div>
6638<a id="a199581e11ebd49e1322b090484f3dd29"></a>
6639<h2 class="memtitle"><span class="permalink"><a href="#a199581e11ebd49e1322b090484f3dd29">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[21/79]</span></h2>
6640
6641<div class="memitem">
6642<div class="memproto">
6643 <table class="memname">
6644 <tr>
6645 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6646 <td>(</td>
6647 <td class="paramtype">CheckBatchNormalizationLayer&#160;</td>
6648 <td class="paramname"></td><td>)</td>
6649 <td></td>
6650 </tr>
6651 </table>
6652</div><div class="memdoc">
6653
6654<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00467">467</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6655
6656<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01227">Network::AddBatchNormalizationLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00623">BatchNormalizationDescriptor::m_Eps</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6657<div class="fragment"><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; BatchNormalizationDescriptor descriptor;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; descriptor.m_Eps = 0.0002f;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; std::vector&lt;float&gt; varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; std::vector&lt;unsigned int&gt; varianceDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData);</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; std::vector&lt;float&gt; betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; std::vector&lt;unsigned int&gt; betaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; std::vector&lt;float&gt; gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; std::vector&lt;unsigned int&gt; gammaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData);</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"> 489</span>&#160; TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; Network net;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddBatchNormalizationLayer(descriptor, mean, variance, beta, gamma);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div></div><!-- fragment -->
6658</div>
6659</div>
6660<a id="a3dd219b394b8186d1849ee595193268d"></a>
6661<h2 class="memtitle"><span class="permalink"><a href="#a3dd219b394b8186d1849ee595193268d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[22/79]</span></h2>
6662
6663<div class="memitem">
6664<div class="memproto">
6665 <table class="memname">
6666 <tr>
6667 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6668 <td>(</td>
6669 <td class="paramtype">QuantizeReLuActivation&#160;</td>
6670 <td class="paramname"></td><td>)</td>
6671 <td></td>
6672 </tr>
6673 </table>
6674</div><div class="memdoc">
6675
6676<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00469">469</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6677
6678<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6679<div class="fragment"><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;{</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; descriptor.m_Function = ActivationFunction::ReLu;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; descriptor.m_B = -10.0f;</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"> 476</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
6680<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6681<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6682</div><!-- fragment -->
6683</div>
6684</div>
6685<a id="af1eda3afe49e91bf04d6e34a0e3be8ef"></a>
6686<h2 class="memtitle"><span class="permalink"><a href="#af1eda3afe49e91bf04d6e34a0e3be8ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[23/79]</span></h2>
6687
6688<div class="memitem">
6689<div class="memproto">
6690 <table class="memname">
6691 <tr>
6692 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6693 <td>(</td>
6694 <td class="paramtype">CheckNamedBatchNormalizationLayer&#160;</td>
6695 <td class="paramname"></td><td>)</td>
6696 <td></td>
6697 </tr>
6698 </table>
6699</div><div class="memdoc">
6700
6701<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00497">497</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6702
6703<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01227">Network::AddBatchNormalizationLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00623">BatchNormalizationDescriptor::m_Eps</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6704<div class="fragment"><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; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;BatchNormalizationLayer&quot;</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; BatchNormalizationDescriptor descriptor;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; descriptor.m_Eps = 0.0002f;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; std::vector&lt;float&gt; varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; std::vector&lt;unsigned int&gt; varianceDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData);</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; std::vector&lt;float&gt; betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; std::vector&lt;unsigned int&gt; betaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; std::vector&lt;float&gt; gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; std::vector&lt;unsigned int&gt; gammaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData);</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; TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma, layerName);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; Network net;</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"> 524</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddBatchNormalizationLayer(</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; descriptor, mean, variance, beta, gamma, layerName);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;}</div></div><!-- fragment -->
6705</div>
6706</div>
6707<a id="a52e948b4bffc16a3933d812dbc384833"></a>
6708<h2 class="memtitle"><span class="permalink"><a href="#a52e948b4bffc16a3933d812dbc384833">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[24/79]</span></h2>
6709
6710<div class="memitem">
6711<div class="memproto">
6712 <table class="memname">
6713 <tr>
6714 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6715 <td>(</td>
6716 <td class="paramtype">QuantizeSoftReLuActivation&#160;</td>
6717 <td class="paramname"></td><td>)</td>
6718 <td></td>
6719 </tr>
6720 </table>
6721</div><div class="memdoc">
6722
6723<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00499">499</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6724
6725<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6726<div class="fragment"><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; descriptor.m_Function = ActivationFunction::SoftReLu;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
6727<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6728<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6729</div><!-- fragment -->
6730</div>
6731</div>
6732<a id="abf109580225cb949565c8223bceadd5d"></a>
6733<h2 class="memtitle"><span class="permalink"><a href="#abf109580225cb949565c8223bceadd5d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[25/79]</span></h2>
6734
6735<div class="memitem">
6736<div class="memproto">
6737 <table class="memname">
6738 <tr>
6739 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6740 <td>(</td>
6741 <td class="paramtype">QuantizeBoundedReluActivation&#160;</td>
6742 <td class="paramname"></td><td>)</td>
6743 <td></td>
6744 </tr>
6745 </table>
6746</div><div class="memdoc">
6747
6748<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00529">529</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6749
6750<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6751<div class="fragment"><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;{</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">class </span>TestBoundedReluActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; TestBoundedReluActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; : TestQuantization(inputShape, outputShape) {}</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"> 537</span>&#160; TestBoundedReluActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</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"> 542</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">// Based off default static range [0.0f, 3.5f]</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; TestQuantizationParams(info, {3.5f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 0},</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {3.5f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -128},</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {3.5f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {3.5f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; };</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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; descriptor.m_Function = ActivationFunction::BoundedReLu;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; descriptor.m_B = -10.0f;</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; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; TestBoundedReluActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; TestBoundedReluActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; TestBoundedReluActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; TestBoundedReluActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
6752<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
6753<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6754<div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
6755<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6756<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6757<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
6758<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
6759<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
6760</div><!-- fragment -->
6761</div>
6762</div>
6763<a id="a1a8221833cf3d29cd6435aed632dfcce"></a>
6764<h2 class="memtitle"><span class="permalink"><a href="#a1a8221833cf3d29cd6435aed632dfcce">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[26/79]</span></h2>
6765
6766<div class="memitem">
6767<div class="memproto">
6768 <table class="memname">
6769 <tr>
6770 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6771 <td>(</td>
6772 <td class="paramtype">CheckConstLayer&#160;</td>
6773 <td class="paramname"></td><td>)</td>
6774 <td></td>
6775 </tr>
6776 </table>
6777</div><div class="memdoc">
6778
6779<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00529">529</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6780
6781<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01280">Network::AddConstantLayer()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
6782<div class="fragment"><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;{</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; TestConstantLayerVisitor visitor(input);</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"> 537</span>&#160; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConstantLayer(input);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;}</div></div><!-- fragment -->
6783</div>
6784</div>
6785<a id="a9da3b50de4d108b81264a22c5adacf05"></a>
6786<h2 class="memtitle"><span class="permalink"><a href="#a9da3b50de4d108b81264a22c5adacf05">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[27/79]</span></h2>
6787
6788<div class="memitem">
6789<div class="memproto">
6790 <table class="memname">
6791 <tr>
6792 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6793 <td>(</td>
6794 <td class="paramtype">CheckNamedConstLayer&#160;</td>
6795 <td class="paramname"></td><td>)</td>
6796 <td></td>
6797 </tr>
6798 </table>
6799</div><div class="memdoc">
6800
6801<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00543">543</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6802
6803<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01280">Network::AddConstantLayer()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
6804<div class="fragment"><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;{</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;ConstantLayer&quot;</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; TestConstantLayerVisitor visitor(input, layerName);</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"> 552</span>&#160; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConstantLayer(input, layerName);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div></div><!-- fragment -->
6805</div>
6806</div>
6807<a id="afefeb492b3446d34e413556a805210b6"></a>
6808<h2 class="memtitle"><span class="permalink"><a href="#afefeb492b3446d34e413556a805210b6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[28/79]</span></h2>
6809
6810<div class="memitem">
6811<div class="memproto">
6812 <table class="memname">
6813 <tr>
6814 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6815 <td>(</td>
6816 <td class="paramtype">CheckLstmLayerBasic&#160;</td>
6817 <td class="paramname"></td><td>)</td>
6818 <td></td>
6819 </tr>
6820 </table>
6821</div><div class="memdoc">
6822
6823<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00558">558</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6824
6825<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
6826<div class="fragment"><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;{</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></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::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</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; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</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; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; Network net;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;}</div></div><!-- fragment -->
6827</div>
6828</div>
6829<a id="acbf871a6ec0726bfe2746e761a278108"></a>
6830<h2 class="memtitle"><span class="permalink"><a href="#acbf871a6ec0726bfe2746e761a278108">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[29/79]</span></h2>
6831
6832<div class="memitem">
6833<div class="memproto">
6834 <table class="memname">
6835 <tr>
6836 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6837 <td>(</td>
6838 <td class="paramtype">QuantizeTanHActivation&#160;</td>
6839 <td class="paramname"></td><td>)</td>
6840 <td></td>
6841 </tr>
6842 </table>
6843</div><div class="memdoc">
6844
6845<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00585">585</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6846
6847<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6848<div class="fragment"><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keyword">class </span>TestTanHActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; TestTanHActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; TestTanHActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Based off default static range [-1.0f, 1.0f]</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; info, {2.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {2.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a> , 0},</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; };</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; descriptor.m_Function = ActivationFunction::TanH;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; TestTanHActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; TestTanHActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; TestTanHActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; TestTanHActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
6849<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
6850<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6851<div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
6852<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6853<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6854<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
6855<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
6856<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
6857</div><!-- fragment -->
6858</div>
6859</div>
6860<a id="a8f6ad27911e2e711f665ae69c5b2cd1d"></a>
6861<h2 class="memtitle"><span class="permalink"><a href="#a8f6ad27911e2e711f665ae69c5b2cd1d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[30/79]</span></h2>
6862
6863<div class="memitem">
6864<div class="memproto">
6865 <table class="memname">
6866 <tr>
6867 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6868 <td>(</td>
6869 <td class="paramtype">CheckNamedLstmLayerBasic&#160;</td>
6870 <td class="paramname"></td><td>)</td>
6871 <td></td>
6872 </tr>
6873 </table>
6874</div><div class="memdoc">
6875
6876<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00630">630</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6877
6878<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
6879<div class="fragment"><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; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</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; LstmInputParams params;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</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; Network net;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;}</div></div><!-- fragment -->
6880</div>
6881</div>
6882<a id="a32068047cc7b37f1bed1830508891526"></a>
6883<h2 class="memtitle"><span class="permalink"><a href="#a32068047cc7b37f1bed1830508891526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[31/79]</span></h2>
6884
6885<div class="memitem">
6886<div class="memproto">
6887 <table class="memname">
6888 <tr>
6889 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6890 <td>(</td>
6891 <td class="paramtype">QuantizeLeakyReLuActivation&#160;</td>
6892 <td class="paramname"></td><td>)</td>
6893 <td></td>
6894 </tr>
6895 </table>
6896</div><div class="memdoc">
6897
6898<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00680">680</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6899
6900<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00297">CreateNetworkWithActivationLayer()</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6901<div class="fragment"><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;{</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; descriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; TestLeakyReLuActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; TestLeakyReLuActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; TestLeakyReLuActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; TestLeakyReLuActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.html#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00297">QuantizerTest.cpp:297</a></div></div>
6902<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6903<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6904</div><!-- fragment -->
6905</div>
6906</div>
6907<a id="a5400bc09082eab59bdfdbd61a06578f5"></a>
6908<h2 class="memtitle"><span class="permalink"><a href="#a5400bc09082eab59bdfdbd61a06578f5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[32/79]</span></h2>
6909
6910<div class="memitem">
6911<div class="memproto">
6912 <table class="memname">
6913 <tr>
6914 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6915 <td>(</td>
6916 <td class="paramtype">CheckLstmLayerCifgDisabled&#160;</td>
6917 <td class="paramname"></td><td>)</td>
6918 <td></td>
6919 </tr>
6920 </table>
6921</div><div class="memdoc">
6922
6923<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00703">703</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
6924
6925<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00048">LstmInputParams::m_CellToInputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00051">LstmInputParams::m_InputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00040">LstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00044">LstmInputParams::m_RecurrentToInputWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
6926<div class="fragment"><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; LstmDescriptor descriptor;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">false</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</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; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</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; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</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; std::vector&lt;float&gt; inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; std::vector&lt;float&gt; recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; std::vector&lt;float&gt; cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; std::vector&lt;unsigned int&gt; cellToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; ConstTensor cellToInputWeights(</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32), cellToInputWeightsData);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; std::vector&lt;float&gt; inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; params.m_CellToInputWeights = &amp;cellToInputWeights;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</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; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;}</div></div><!-- fragment -->
6927</div>
6928</div>
6929<a id="adf59f87645d301e9b56dd70aed350e54"></a>
6930<h2 class="memtitle"><span class="permalink"><a href="#adf59f87645d301e9b56dd70aed350e54">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[33/79]</span></h2>
6931
6932<div class="memitem">
6933<div class="memproto">
6934 <table class="memname">
6935 <tr>
6936 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6937 <td>(</td>
6938 <td class="paramtype">QuantizeBatchNorm&#160;</td>
6939 <td class="paramname"></td><td>)</td>
6940 <td></td>
6941 </tr>
6942 </table>
6943</div><div class="memdoc">
6944
6945<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00710">710</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6946
6947<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6948<div class="fragment"><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="keyword">class </span>TestBatchNormalizationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; TestBatchNormalizationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestBatchNormalizationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordtype">void</span> VisitBatchNormalizationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keyword">const</span> BatchNormalizationDescriptor&amp; desc,</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keyword">const</span> ConstTensor&amp; mean,</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keyword">const</span> ConstTensor&amp; variance,</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keyword">const</span> ConstTensor&amp; beta,</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keyword">const</span> ConstTensor&amp; gamma,</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="comment">// Based off default static range [-15.0f, 15.0f]</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; info, {30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</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="comment">// Test constants</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; TestConstantQuantizationParams(mean.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; TestConstantQuantizationParams(variance.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; TestConstantQuantizationParams(beta.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; TestConstantQuantizationParams(gamma.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; }</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;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; TensorInfo info(shape, DataType::Float32);</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; std::vector&lt;float&gt; meanData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; std::vector&lt;float&gt; varData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; std::vector&lt;float&gt; betaData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; std::vector&lt;float&gt; gammaData{-1.0f, 1.5f, 2.0f};</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; ConstTensor mean(info, meanData);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; ConstTensor var(info, varData);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; ConstTensor beta(info, betaData);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; ConstTensor gamma(info, gammaData);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; BatchNormalizationDescriptor desc;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; IConnectableLayer* batchNorm = network-&gt;AddBatchNormalizationLayer(desc, mean, var, beta, gamma);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; input0-&gt;GetOutputSlot(0).Connect(batchNorm-&gt;GetInputSlot(0));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; batchNorm-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; batchNorm-&gt;GetOutputSlot(0).SetTensorInfo(info);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; TestBatchNormalizationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; TestBatchNormalizationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; TestBatchNormalizationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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="keyword">const</span> QuantizerOptions QQsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), QQsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; TestBatchNormalizationQuantization validatorQSymmS16(QQsymm16Options, shape, shape);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
6949<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
6950<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6951<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6952<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6953<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
6954<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
6955<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
6956</div><!-- fragment -->
6957</div>
6958</div>
6959<a id="ae91bc23bf56bb5f9c2e0ddb1fc7be75e"></a>
6960<h2 class="memtitle"><span class="permalink"><a href="#ae91bc23bf56bb5f9c2e0ddb1fc7be75e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[34/79]</span></h2>
6961
6962<div class="memitem">
6963<div class="memproto">
6964 <table class="memname">
6965 <tr>
6966 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6967 <td>(</td>
6968 <td class="paramtype">QuantizeDepthToSpace&#160;</td>
6969 <td class="paramname"></td><td>)</td>
6970 <td></td>
6971 </tr>
6972 </table>
6973</div><div class="memdoc">
6974
6975<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00799">799</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
6976
6977<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
6978<div class="fragment"><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;{</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keyword">class </span>TestDepthToSpaceQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; TestDepthToSpaceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestDepthToSpaceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitDepthToSpaceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a>&amp; desc,</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</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; boost::ignore_unused(desc, name);</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</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="keyword">const</span> TensorShape inputShape { 1, 2, 2, 4 };</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 1, 4, 4, 1 };</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="keyword">const</span> TensorInfo inputInfo (inputShape, DataType::Float32);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keyword">const</span> TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> descriptor(2, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>);</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; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; IConnectableLayer* depthToSpaceLayer = network-&gt;AddDepthToSpaceLayer(descriptor);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</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; inputLayer-&gt;GetOutputSlot(0).Connect(depthToSpaceLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; depthToSpaceLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; depthToSpaceLayer-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</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="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; TestDepthToSpaceQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; TestDepthToSpaceQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; TestDepthToSpaceQuantization validatorQSymmS8(qSymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; TestDepthToSpaceQuantization validatorQSymmS16(Qsymm16Options, inputShape, outputShape);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
6979<div class="ttc" id="namespacearmnn_html_a3647f60510bc8ddaced01c51b0ee8714"><div class="ttname"><a href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">armnn::DepthToSpaceDescriptor</a></div><div class="ttdeci">SpaceToDepthDescriptor DepthToSpaceDescriptor</div><div class="ttdoc">A DepthToSpaceDescriptor for the DepthToSpaceLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00834">Descriptors.hpp:834</a></div></div>
6980<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
6981<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6982<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
6983<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
6984<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
6985<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
6986<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
6987<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
6988<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
6989</div><!-- fragment -->
6990</div>
6991</div>
6992<a id="ad956f3db79c93a658cbccb41714e1542"></a>
6993<h2 class="memtitle"><span class="permalink"><a href="#ad956f3db79c93a658cbccb41714e1542">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[35/79]</span></h2>
6994
6995<div class="memitem">
6996<div class="memproto">
6997 <table class="memname">
6998 <tr>
6999 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7000 <td>(</td>
7001 <td class="paramtype">CheckNamedLstmLayerCifgDisabled&#160;</td>
7002 <td class="paramname"></td><td>)</td>
7003 <td></td>
7004 </tr>
7005 </table>
7006</div><div class="memdoc">
7007
7008<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00800">800</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
7009
7010<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00048">LstmInputParams::m_CellToInputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00051">LstmInputParams::m_InputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00040">LstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00044">LstmInputParams::m_RecurrentToInputWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7011<div class="fragment"><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;{</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">false</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</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; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</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; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; std::vector&lt;float&gt; inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; std::vector&lt;float&gt; recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData);</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; std::vector&lt;float&gt; cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; std::vector&lt;unsigned int&gt; cellToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; ConstTensor cellToInputWeights(</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32), cellToInputWeightsData);</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"> 869</span>&#160; std::vector&lt;float&gt; inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; params.m_CellToInputWeights = &amp;cellToInputWeights;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;}</div></div><!-- fragment -->
7012</div>
7013</div>
7014<a id="aa6281ed3090b74167170c8f692688de5"></a>
7015<h2 class="memtitle"><span class="permalink"><a href="#aa6281ed3090b74167170c8f692688de5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[36/79]</span></h2>
7016
7017<div class="memitem">
7018<div class="memproto">
7019 <table class="memname">
7020 <tr>
7021 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7022 <td>(</td>
7023 <td class="paramtype">OverrideInputRangeEmptyNetwork&#160;</td>
7024 <td class="paramname"></td><td>)</td>
7025 <td></td>
7026 </tr>
7027 </table>
7028</div><div class="memdoc">
7029
7030<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00871">871</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7031
7032<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00029">RangeTracker::IsEmpty()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
7033<div class="fragment"><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;{</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; RangeTracker ranges;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">RangeTracker::MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; Network network; <span class="comment">// Empty network</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// Empty list of input layers</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitor(ranges, 0, minMaxRange);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitor);</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; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty()); <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
7034<div class="ttc" id="namespacearmnn_html_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00029">QuantizerTest.cpp:29</a></div></div>
7035<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
7036</div><!-- fragment -->
7037</div>
7038</div>
7039<a id="ad432424d97021ae6c81e38130b1ec5d6"></a>
7040<h2 class="memtitle"><span class="permalink"><a href="#ad432424d97021ae6c81e38130b1ec5d6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[37/79]</span></h2>
7041
7042<div class="memitem">
7043<div class="memproto">
7044 <table class="memname">
7045 <tr>
7046 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7047 <td>(</td>
7048 <td class="paramtype">OverrideInputRangeNoInputLayers&#160;</td>
7049 <td class="paramname"></td><td>)</td>
7050 <td></td>
7051 </tr>
7052 </table>
7053</div><div class="memdoc">
7054
7055<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00885">885</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7056
7057<p class="reference">References <a class="el" href="_network_8cpp_source.html#l01212">Network::AddAdditionLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00029">RangeTracker::IsEmpty()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
7058<div class="fragment"><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; RangeTracker ranges;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; Network network;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; network.AddAdditionLayer(); <span class="comment">// Network with no input layers</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// Empty list of input layers</span></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; OverrideInputRangeVisitor overrideInputRangeVisitor(ranges, 0, minMaxRange);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitor);</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; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty()); <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
7059<div class="ttc" id="namespacearmnn_html_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00029">QuantizerTest.cpp:29</a></div></div>
7060<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
7061</div><!-- fragment -->
7062</div>
7063</div>
7064<a id="aa524f33d3d2b294847c3929237947b20"></a>
7065<h2 class="memtitle"><span class="permalink"><a href="#aa524f33d3d2b294847c3929237947b20">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[38/79]</span></h2>
7066
7067<div class="memitem">
7068<div class="memproto">
7069 <table class="memname">
7070 <tr>
7071 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7072 <td>(</td>
7073 <td class="paramtype">CheckLstmLayerPeephole&#160;</td>
7074 <td class="paramname"></td><td>)</td>
7075 <td></td>
7076 </tr>
7077 </table>
7078</div><div class="memdoc">
7079
7080<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00899">899</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
7081
7082<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00049">LstmInputParams::m_CellToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00050">LstmInputParams::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00869">LstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7083<div class="fragment"><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;{</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; descriptor.m_PeepholeEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; std::vector&lt;float&gt; cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; std::vector&lt;unsigned int&gt; cellToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; ConstTensor cellToForgetWeights(</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData);</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; std::vector&lt;float&gt; cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; std::vector&lt;unsigned int&gt; cellToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; ConstTensor cellToOutputWeights(</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; params.m_CellToForgetWeights = &amp;cellToForgetWeights;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; params.m_CellToOutputWeights = &amp;cellToOutputWeights;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;}</div></div><!-- fragment -->
7084</div>
7085</div>
7086<a id="a6e97e093453fc053a5c82386927a0d6c"></a>
7087<h2 class="memtitle"><span class="permalink"><a href="#a6e97e093453fc053a5c82386927a0d6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[39/79]</span></h2>
7088
7089<div class="memitem">
7090<div class="memproto">
7091 <table class="memname">
7092 <tr>
7093 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7094 <td>(</td>
7095 <td class="paramtype">OverrideInputRangeInputLayers&#160;</td>
7096 <td class="paramname"></td><td>)</td>
7097 <td></td>
7098 </tr>
7099 </table>
7100</div><div class="memdoc">
7101
7102<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00900">900</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7103
7104<p class="reference">References <a class="el" href="_network_8cpp_source.html#l01212">Network::AddAdditionLayer()</a>, <a class="el" href="_network_8cpp_source.html#l00953">Network::AddInputLayer()</a>, <a class="el" href="_network_8cpp_source.html#l01222">Network::AddOutputLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#afb5e65c770f6cee222db8af7581541a6">IConnectableLayer::GetGuid()</a>, <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_range_tracker_8cpp_source.html#l00029">RangeTracker::GetRange()</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00032">RangeTracker::HasRanges()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_range_tracker_8hpp_source.html#l00029">RangeTracker::IsEmpty()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
7105<div class="fragment"><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;{</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; RangeTracker ranges;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; Network network;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="comment">// Adding the layers</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; IConnectableLayer* input0 = network.AddInputLayer(0);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; IConnectableLayer* input1 = network.AddInputLayer(1);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; IConnectableLayer* addition = network.AddAdditionLayer();</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; IConnectableLayer* output = network.AddOutputLayer(2);</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">// Connecting the layer</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// Setting the TensorInfos</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; TensorShape shape{1U};</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// List of input layers</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="comment">// Trying to override the input range for the input layer with binding id 3 (does not exist in the network)</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitorLayer3(ranges, 3, minMaxRange);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitorLayer3);</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">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty());</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="comment">// Override the input range for the input layer with binding id 1</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitorLayer1(ranges, 1, minMaxRange);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitorLayer1);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// Check that the map of ranges has been populated</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(!ranges.IsEmpty());</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="comment">// Check that an entry for the input layer with binding id 0 does not exist</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(!ranges.HasRanges(input0-&gt;GetGuid()));</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="comment">// Check that an entry for the input layer with binding id 1 exists</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.HasRanges(input1-&gt;GetGuid()));</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="comment">// Check the the overridden values are what we intended to set</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.GetRange(input1-&gt;GetGuid(), 0) == minMaxRange);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
7106<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7107<div class="ttc" id="namespacearmnn_html_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.html#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00029">QuantizerTest.cpp:29</a></div></div>
7108<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
7109</div><!-- fragment -->
7110</div>
7111</div>
7112<a id="a0f1dc6ab5dccc96c5a4df37cc5bcb923"></a>
7113<h2 class="memtitle"><span class="permalink"><a href="#a0f1dc6ab5dccc96c5a4df37cc5bcb923">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[40/79]</span></h2>
7114
7115<div class="memitem">
7116<div class="memproto">
7117 <table class="memname">
7118 <tr>
7119 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7120 <td>(</td>
7121 <td class="paramtype">CheckNamedLstmLayerPeephole&#160;</td>
7122 <td class="paramname"></td><td>)</td>
7123 <td></td>
7124 </tr>
7125 </table>
7126</div><div class="memdoc">
7127
7128<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l00985">985</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
7129
7130<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00049">LstmInputParams::m_CellToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00050">LstmInputParams::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00869">LstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7131<div class="fragment"><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="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; descriptor.m_PeepholeEnabled = <span class="keyword">true</span>;</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"> 995</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</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; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</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; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; std::vector&lt;float&gt; cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; std::vector&lt;unsigned int&gt; cellToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; ConstTensor cellToForgetWeights(</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; std::vector&lt;float&gt; cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; std::vector&lt;unsigned int&gt; cellToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; ConstTensor cellToOutputWeights(</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData);</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; LstmInputParams params;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; params.m_CellToForgetWeights = &amp;cellToForgetWeights;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; params.m_CellToOutputWeights = &amp;cellToOutputWeights;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</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; Network net;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;}</div></div><!-- fragment -->
7132</div>
7133</div>
7134<a id="a881ab05533f917737509402730668e4a"></a>
7135<h2 class="memtitle"><span class="permalink"><a href="#a881ab05533f917737509402730668e4a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[41/79]</span></h2>
7136
7137<div class="memitem">
7138<div class="memproto">
7139 <table class="memname">
7140 <tr>
7141 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7142 <td>(</td>
7143 <td class="paramtype">QuantizeFullyConnected&#160;</td>
7144 <td class="paramname"></td><td>)</td>
7145 <td></td>
7146 </tr>
7147 </table>
7148</div><div class="memdoc">
7149
7150<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01036">1036</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7151
7152<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
7153<div class="fragment"><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; <a class="code" href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a245661fc96c9c4a9b898e1d98c8c6962"><div class="ttname"><a href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">armnn::ValidateFullyConnectedLayer</a></div><div class="ttdeci">void ValidateFullyConnectedLayer(const bool biasEnabled)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00989">QuantizerTest.cpp:989</a></div></div>
7154</div><!-- fragment -->
7155</div>
7156</div>
7157<a id="a69dd8c7608ff0935a247f3aa07f98212"></a>
7158<h2 class="memtitle"><span class="permalink"><a href="#a69dd8c7608ff0935a247f3aa07f98212">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[42/79]</span></h2>
7159
7160<div class="memitem">
7161<div class="memproto">
7162 <table class="memname">
7163 <tr>
7164 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7165 <td>(</td>
7166 <td class="paramtype">QuantizeFullyConnectedBiasEnabled&#160;</td>
7167 <td class="paramname"></td><td>)</td>
7168 <td></td>
7169 </tr>
7170 </table>
7171</div><div class="memdoc">
7172
7173<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01041">1041</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7174
7175<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
7176<div class="fragment"><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;{</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <a class="code" href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a245661fc96c9c4a9b898e1d98c8c6962"><div class="ttname"><a href="namespacearmnn.html#a245661fc96c9c4a9b898e1d98c8c6962">armnn::ValidateFullyConnectedLayer</a></div><div class="ttdeci">void ValidateFullyConnectedLayer(const bool biasEnabled)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00989">QuantizerTest.cpp:989</a></div></div>
7177</div><!-- fragment -->
7178</div>
7179</div>
7180<a id="a0d00c75b42e46b3a7dd78f9a40324c33"></a>
7181<h2 class="memtitle"><span class="permalink"><a href="#a0d00c75b42e46b3a7dd78f9a40324c33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[43/79]</span></h2>
7182
7183<div class="memitem">
7184<div class="memproto">
7185 <table class="memname">
7186 <tr>
7187 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7188 <td>(</td>
7189 <td class="paramtype">CheckLstmLayerProjection&#160;</td>
7190 <td class="paramname"></td><td>)</td>
7191 <td></td>
7192 </tr>
7193 </table>
7194</div><div class="memdoc">
7195
7196<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01073">1073</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
7197
7198<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00056">LstmInputParams::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00871">LstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00055">LstmInputParams::m_ProjectionWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7199<div class="fragment"><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;{</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; descriptor.m_ProjectionEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</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; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</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"> 1127</span>&#160; std::vector&lt;float&gt; projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; std::vector&lt;unsigned int&gt; projectionBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; ConstTensor projectionBias(</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; std::vector&lt;float&gt; projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; std::vector&lt;unsigned int&gt; projectionWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; ConstTensor projectionWeights(</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; LstmInputParams params;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; params.m_ProjectionWeights = &amp;projectionWeights;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; params.m_ProjectionBias = &amp;projectionBias;</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; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; Network net;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;}</div></div><!-- fragment -->
7200</div>
7201</div>
7202<a id="aa117e0112fdc02a7a011cfb39dc596ab"></a>
7203<h2 class="memtitle"><span class="permalink"><a href="#aa117e0112fdc02a7a011cfb39dc596ab">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[44/79]</span></h2>
7204
7205<div class="memitem">
7206<div class="memproto">
7207 <table class="memname">
7208 <tr>
7209 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7210 <td>(</td>
7211 <td class="paramtype">QuantizeConvolution2d&#160;</td>
7212 <td class="paramname"></td><td>)</td>
7213 <td></td>
7214 </tr>
7215 </table>
7216</div><div class="memdoc">
7217
7218<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01122">1122</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7219
7220<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01046">TestQuantizeConvolution2d()</a>.</p>
7221<div class="fragment"><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; <a class="code" href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a14cfd39cfc30682fa821ade3dd298426"><div class="ttname"><a href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">armnn::TestQuantizeConvolution2d</a></div><div class="ttdeci">void TestQuantizeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01046">QuantizerTest.cpp:1046</a></div></div>
7222</div><!-- fragment -->
7223</div>
7224</div>
7225<a id="a9827adb2cf787460578999e0484568fa"></a>
7226<h2 class="memtitle"><span class="permalink"><a href="#a9827adb2cf787460578999e0484568fa">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[45/79]</span></h2>
7227
7228<div class="memitem">
7229<div class="memproto">
7230 <table class="memname">
7231 <tr>
7232 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7233 <td>(</td>
7234 <td class="paramtype">QuantizeConvolution2dWithBiases&#160;</td>
7235 <td class="paramname"></td><td>)</td>
7236 <td></td>
7237 </tr>
7238 </table>
7239</div><div class="memdoc">
7240
7241<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01127">1127</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7242
7243<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01046">TestQuantizeConvolution2d()</a>.</p>
7244<div class="fragment"><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;{</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="code" href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a14cfd39cfc30682fa821ade3dd298426"><div class="ttname"><a href="namespacearmnn.html#a14cfd39cfc30682fa821ade3dd298426">armnn::TestQuantizeConvolution2d</a></div><div class="ttdeci">void TestQuantizeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01046">QuantizerTest.cpp:1046</a></div></div>
7245</div><!-- fragment -->
7246</div>
7247</div>
7248<a id="a3a3105d08231d5f2e53511bab46224c9"></a>
7249<h2 class="memtitle"><span class="permalink"><a href="#a3a3105d08231d5f2e53511bab46224c9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[46/79]</span></h2>
7250
7251<div class="memitem">
7252<div class="memproto">
7253 <table class="memname">
7254 <tr>
7255 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7256 <td>(</td>
7257 <td class="paramtype">CheckNamedLstmLayerProjection&#160;</td>
7258 <td class="paramname"></td><td>)</td>
7259 <td></td>
7260 </tr>
7261 </table>
7262</div><div class="memdoc">
7263
7264<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01159">1159</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
7265
7266<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01312">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.html#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.html#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00056">LstmInputParams::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l00871">LstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00055">LstmInputParams::m_ProjectionWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.html#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.html#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7267<div class="fragment"><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;{</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; descriptor.m_ProjectionEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</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; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</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; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; std::vector&lt;float&gt; projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; std::vector&lt;unsigned int&gt; projectionBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; ConstTensor projectionBias(</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; std::vector&lt;float&gt; projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; std::vector&lt;unsigned int&gt; projectionWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; ConstTensor projectionWeights(</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData);</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; LstmInputParams params;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; params.m_ProjectionWeights = &amp;projectionWeights;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; params.m_ProjectionBias = &amp;projectionBias;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; Network net;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;}</div></div><!-- fragment -->
7268</div>
7269</div>
7270<a id="a1db5d836b83fc71602a7993616de5b42"></a>
7271<h2 class="memtitle"><span class="permalink"><a href="#a1db5d836b83fc71602a7993616de5b42">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[47/79]</span></h2>
7272
7273<div class="memitem">
7274<div class="memproto">
7275 <table class="memname">
7276 <tr>
7277 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7278 <td>(</td>
7279 <td class="paramtype">QuantizeDepthwiseConvolution2d&#160;</td>
7280 <td class="paramname"></td><td>)</td>
7281 <td></td>
7282 </tr>
7283 </table>
7284</div><div class="memdoc">
7285
7286<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01208">1208</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7287
7288<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01132">TestQuantizeDepthwiseConvolution2d()</a>.</p>
7289<div class="fragment"><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; <a class="code" href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5abbe8a9ee003c1379a921dbe2745b81"><div class="ttname"><a href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">armnn::TestQuantizeDepthwiseConvolution2d</a></div><div class="ttdeci">void TestQuantizeDepthwiseConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01132">QuantizerTest.cpp:1132</a></div></div>
7290</div><!-- fragment -->
7291</div>
7292</div>
7293<a id="a891abdb9079715cbcf85792e2b450652"></a>
7294<h2 class="memtitle"><span class="permalink"><a href="#a891abdb9079715cbcf85792e2b450652">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[48/79]</span></h2>
7295
7296<div class="memitem">
7297<div class="memproto">
7298 <table class="memname">
7299 <tr>
7300 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7301 <td>(</td>
7302 <td class="paramtype">QuantizeDepthwiseConvolution2dWithBiases&#160;</td>
7303 <td class="paramname"></td><td>)</td>
7304 <td></td>
7305 </tr>
7306 </table>
7307</div><div class="memdoc">
7308
7309<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01213">1213</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7310
7311<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01132">TestQuantizeDepthwiseConvolution2d()</a>.</p>
7312<div class="fragment"><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; <a class="code" href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5abbe8a9ee003c1379a921dbe2745b81"><div class="ttname"><a href="namespacearmnn.html#a5abbe8a9ee003c1379a921dbe2745b81">armnn::TestQuantizeDepthwiseConvolution2d</a></div><div class="ttdeci">void TestQuantizeDepthwiseConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01132">QuantizerTest.cpp:1132</a></div></div>
7313</div><!-- fragment -->
7314</div>
7315</div>
7316<a id="abd033569519fec65077ea983f6c75a9d"></a>
7317<h2 class="memtitle"><span class="permalink"><a href="#abd033569519fec65077ea983f6c75a9d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[49/79]</span></h2>
7318
7319<div class="memitem">
7320<div class="memproto">
7321 <table class="memname">
7322 <tr>
7323 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7324 <td>(</td>
7325 <td class="paramtype">QuantizeInstanceNormalization&#160;</td>
7326 <td class="paramname"></td><td>)</td>
7327 <td></td>
7328 </tr>
7329 </table>
7330</div><div class="memdoc">
7331
7332<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01218">1218</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7333
7334<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7335<div class="fragment"><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;{</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keyword">class </span>TestInstanceNormalizationQuantization : <span class="keyword">public</span> TestQuantization</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; <span class="keyword">public</span>:</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; TestInstanceNormalizationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; TestInstanceNormalizationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitInstanceNormalizationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="keyword">const</span> InstanceNormalizationDescriptor&amp; descriptor,</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; {</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</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; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; }</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; };</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1, 4, 4, 1 };</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; IConnectableLayer* instanceNormLayer = network-&gt;AddInstanceNormalizationLayer(InstanceNormalizationDescriptor());</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</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; inputLayer-&gt;GetOutputSlot(0).Connect(instanceNormLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; instanceNormLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</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; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; instanceNormLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</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; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; TestInstanceNormalizationQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="comment">//test QAsymmS8 quantization</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; TestInstanceNormalizationQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; TestInstanceNormalizationQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16Options(DataType::QSymmS16);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; TestInstanceNormalizationQuantization validatorQSymmS16(qSymmS16Options, tensorShape, tensorShape);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7336<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7337<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7338<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7339<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7340<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7341<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7342<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
7343<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7344</div><!-- fragment -->
7345</div>
7346</div>
7347<a id="a84e5356296be66aa930ec53118f5ef6b"></a>
7348<h2 class="memtitle"><span class="permalink"><a href="#a84e5356296be66aa930ec53118f5ef6b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[50/79]</span></h2>
7349
7350<div class="memitem">
7351<div class="memproto">
7352 <table class="memname">
7353 <tr>
7354 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7355 <td>(</td>
7356 <td class="paramtype">CheckQuantizedLstmLayer&#160;</td>
7357 <td class="paramname"></td><td>)</td>
7358 <td></td>
7359 </tr>
7360 </table>
7361</div><div class="memdoc">
7362
7363<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01246">1246</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
7364
7365<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01542">Network::AddQuantizedLstmLayer()</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00045">QuantizedLstmInputParams::m_CellBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00044">QuantizedLstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00043">QuantizedLstmInputParams::m_InputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00035">QuantizedLstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00034">QuantizedLstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00033">QuantizedLstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00036">QuantizedLstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00046">QuantizedLstmInputParams::m_OutputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00040">QuantizedLstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00039">QuantizedLstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00038">QuantizedLstmInputParams::m_RecurrentToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00041">QuantizedLstmInputParams::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
7366<div class="fragment"><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;{</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; std::vector&lt;uint8_t&gt; inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8), inputToInputWeightsData);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; std::vector&lt;uint8_t&gt; inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8), inputToForgetWeightsData);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; std::vector&lt;uint8_t&gt; inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8), inputToCellWeightsData);</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; std::vector&lt;uint8_t&gt; inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8), inputToOutputWeightsData);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; std::vector&lt;uint8_t&gt; recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToInputWeightsData);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; std::vector&lt;uint8_t&gt; recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8), recurrentToForgetWeightsData);</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; std::vector&lt;uint8_t&gt; recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8), recurrentToCellWeightsData);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; std::vector&lt;uint8_t&gt; recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToOutputWeightsData);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; std::vector&lt;int32_t&gt; inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; std::vector&lt;int32_t&gt; forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; std::vector&lt;int32_t&gt; cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; std::vector&lt;int32_t&gt; outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; QuantizedLstmInputParams params;</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; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</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; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</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; TestQuantizedLstmLayerVisitor visitor(params);</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; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddQuantizedLstmLayer(params);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;}</div></div><!-- fragment -->
7367</div>
7368</div>
7369<a id="a46d045b35ad6b8c2ffe0c04684f97779"></a>
7370<h2 class="memtitle"><span class="permalink"><a href="#a46d045b35ad6b8c2ffe0c04684f97779">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[51/79]</span></h2>
7371
7372<div class="memitem">
7373<div class="memproto">
7374 <table class="memname">
7375 <tr>
7376 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7377 <td>(</td>
7378 <td class="paramtype">QuantizeLogSoftmax&#160;</td>
7379 <td class="paramname"></td><td>)</td>
7380 <td></td>
7381 </tr>
7382 </table>
7383</div><div class="memdoc">
7384
7385<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01286">1286</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7386
7387<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00136">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7388<div class="fragment"><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="keyword">class </span>TestLogSoftmaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; {</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; TestLogSoftmaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; TestLogSoftmaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</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="keywordtype">void</span> VisitLogSoftmaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <span class="keyword">const</span> SoftmaxDescriptor&amp; descriptor,</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</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; <span class="keyword">const</span> TensorShape tensorShape{ 1U };</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; <a class="code" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> descriptor;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_softmax_descriptor.html#a8275d51ef9a584feb95726ea0522f6e5">m_Beta</a> = 1.0f;</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; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; IConnectableLayer* logSoftmaxLayer = network-&gt;AddLogSoftmaxLayer(descriptor);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</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; inputLayer-&gt;GetOutputSlot(0).Connect(logSoftmaxLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; logSoftmaxLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; logSoftmaxLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</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">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; TestLogSoftmaxQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; TestLogSoftmaxQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; TestLogSoftmaxQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; TestLogSoftmaxQuantization validatorQSymmS16(qSymmS16options, tensorShape, tensorShape);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7389<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7390<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7391<div class="ttc" id="structarmnn_1_1_softmax_descriptor_html_a8275d51ef9a584feb95726ea0522f6e5"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.html#a8275d51ef9a584feb95726ea0522f6e5">armnn::SoftmaxDescriptor::m_Beta</a></div><div class="ttdeci">float m_Beta</div><div class="ttdoc">Exponentiation value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00136">Descriptors.hpp:136</a></div></div>
7392<div class="ttc" id="namespacearmnn_html_ac14705405cbcdd580df613de6766fe65"><div class="ttname"><a href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">armnn::LogSoftmaxDescriptor</a></div><div class="ttdeci">SoftmaxDescriptor LogSoftmaxDescriptor</div><div class="ttdoc">A LogSoftmaxDescriptor for the LogSoftmaxLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00142">Descriptors.hpp:142</a></div></div>
7393<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7394<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7395<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7396<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7397<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
7398<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7399</div><!-- fragment -->
7400</div>
7401</div>
7402<a id="a492fae0605d06684297540bb9af319dc"></a>
7403<h2 class="memtitle"><span class="permalink"><a href="#a492fae0605d06684297540bb9af319dc">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[52/79]</span></h2>
7404
7405<div class="memitem">
7406<div class="memproto">
7407 <table class="memname">
7408 <tr>
7409 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7410 <td>(</td>
7411 <td class="paramtype">CheckNamedQuantizedLstmLayer&#160;</td>
7412 <td class="paramname"></td><td>)</td>
7413 <td></td>
7414 </tr>
7415 </table>
7416</div><div class="memdoc">
7417
7418<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html#l01335">1335</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.html">ConstTensorLayerVisitor.cpp</a>.</p>
7419
7420<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.html#l01542">Network::AddQuantizedLstmLayer()</a>, <a class="el" href="_profiler_tests_8cpp.html#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00045">QuantizedLstmInputParams::m_CellBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00044">QuantizedLstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00043">QuantizedLstmInputParams::m_InputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00035">QuantizedLstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00034">QuantizedLstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00033">QuantizedLstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00036">QuantizedLstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00046">QuantizedLstmInputParams::m_OutputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00040">QuantizedLstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00039">QuantizedLstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00038">QuantizedLstmInputParams::m_RecurrentToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.html#l00041">QuantizedLstmInputParams::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
7421<div class="fragment"><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;{</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; std::vector&lt;uint8_t&gt; inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8), inputToInputWeightsData);</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; std::vector&lt;uint8_t&gt; inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8), inputToForgetWeightsData);</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"> 1348</span>&#160; std::vector&lt;uint8_t&gt; inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8), inputToCellWeightsData);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; std::vector&lt;uint8_t&gt; inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8), inputToOutputWeightsData);</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;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; std::vector&lt;uint8_t&gt; recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToInputWeightsData);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; std::vector&lt;uint8_t&gt; recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8), recurrentToForgetWeightsData);</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; std::vector&lt;uint8_t&gt; recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8), recurrentToCellWeightsData);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; std::vector&lt;uint8_t&gt; recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToOutputWeightsData);</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; std::vector&lt;int32_t&gt; inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData);</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; std::vector&lt;int32_t&gt; forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; std::vector&lt;int32_t&gt; cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData);</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; std::vector&lt;int32_t&gt; outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; QuantizedLstmInputParams params;</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; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</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; TestQuantizedLstmLayerVisitor visitor(params, layerName);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; Network net;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddQuantizedLstmLayer(params, layerName);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;}</div></div><!-- fragment -->
7422</div>
7423</div>
7424<a id="a7e94e9ab356805c498f5fc2fba87e4e6"></a>
7425<h2 class="memtitle"><span class="permalink"><a href="#a7e94e9ab356805c498f5fc2fba87e4e6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[53/79]</span></h2>
7426
7427<div class="memitem">
7428<div class="memproto">
7429 <table class="memname">
7430 <tr>
7431 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7432 <td>(</td>
7433 <td class="paramtype">QuantizeSoftmax&#160;</td>
7434 <td class="paramname"></td><td>)</td>
7435 <td></td>
7436 </tr>
7437 </table>
7438</div><div class="memdoc">
7439
7440<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01378">1378</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7441
7442<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01357">CreateNetworkWithSoftmaxLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00136">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7443<div class="fragment"><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="keyword">class </span>TestSoftmaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; {</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; TestSoftmaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; TestSoftmaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; <span class="keywordtype">void</span> VisitSoftmaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="keyword">const</span> SoftmaxDescriptor&amp; descriptor,</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="comment">// Based off default static range [0.0f, 1.0f]</span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; TestQuantizationParams(info, {1.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 0},</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -128},</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; {1.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</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; };</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; SoftmaxDescriptor descriptor;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; descriptor.m_Beta = 1.0f;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#a9c91b774c3089c55df77cc3a42da72de">CreateNetworkWithSoftmaxLayer</a>(descriptor, shape);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; TestSoftmaxQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; TestSoftmaxQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; TestSoftmaxQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; TestSoftmaxQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7444<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7445<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7446<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7447<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7448<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7449<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7450<div class="ttc" id="namespacearmnn_html_a9c91b774c3089c55df77cc3a42da72de"><div class="ttname"><a href="namespacearmnn.html#a9c91b774c3089c55df77cc3a42da72de">armnn::CreateNetworkWithSoftmaxLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithSoftmaxLayer(const SoftmaxDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01357">QuantizerTest.cpp:1357</a></div></div>
7451<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7452</div><!-- fragment -->
7453</div>
7454</div>
7455<a id="a4734542212b5811d0511ea6b16f35168"></a>
7456<h2 class="memtitle"><span class="permalink"><a href="#a4734542212b5811d0511ea6b16f35168">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[54/79]</span></h2>
7457
7458<div class="memitem">
7459<div class="memproto">
7460 <table class="memname">
7461 <tr>
7462 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7463 <td>(</td>
7464 <td class="paramtype">QuantizeStandIn&#160;</td>
7465 <td class="paramname"></td><td>)</td>
7466 <td></td>
7467 </tr>
7468 </table>
7469</div><div class="memdoc">
7470
7471<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01433">1433</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7472
7473<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00996">StandInDescriptor::m_NumInputs</a>, <a class="el" href="_descriptors_8hpp_source.html#l00998">StandInDescriptor::m_NumOutputs</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
7474<div class="fragment"><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;{</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1U };</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; StandInDescriptor descriptor;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; descriptor.m_NumInputs = 1;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; descriptor.m_NumOutputs = 1;</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; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; IConnectableLayer* standInLayer = network-&gt;AddStandInLayer(descriptor);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(standInLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; standInLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; standInLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get())-&gt;ExportNetwork(),</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7475<div class="ttc" id="classarmnn_1_1_unimplemented_exception_html"><div class="ttname"><a href="classarmnn_1_1_unimplemented_exception.html">armnn::UnimplementedException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00098">Exceptions.hpp:98</a></div></div>
7476</div><!-- fragment -->
7477</div>
7478</div>
7479<a id="add22da50dd35a100548dde4c57ae89d1"></a>
7480<h2 class="memtitle"><span class="permalink"><a href="#add22da50dd35a100548dde4c57ae89d1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[55/79]</span></h2>
7481
7482<div class="memitem">
7483<div class="memproto">
7484 <table class="memname">
7485 <tr>
7486 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7487 <td>(</td>
7488 <td class="paramtype">QuantizePermute&#160;</td>
7489 <td class="paramname"></td><td>)</td>
7490 <td></td>
7491 </tr>
7492 </table>
7493</div><div class="memdoc">
7494
7495<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01511">1511</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7496
7497<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7498<div class="fragment"><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="keyword">class </span>TestPermuteQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</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="keyword">public</span>:</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; TestPermuteQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; TestPermuteQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <span class="keywordtype">void</span> VisitPermuteLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="keyword">const</span> PermuteDescriptor&amp; desc,</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; }</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;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; PermuteDescriptor desc;</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; IConnectableLayer* permute = network-&gt;AddPermuteLayer(desc);</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, permute, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; TestPermuteQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; TestPermuteQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; TestPermuteQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; TestPermuteQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7499<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7500<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7501<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7502<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7503<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7504</div><!-- fragment -->
7505</div>
7506</div>
7507<a id="a9a6bc66017eb7c132fd6e13ff0dcb540"></a>
7508<h2 class="memtitle"><span class="permalink"><a href="#a9a6bc66017eb7c132fd6e13ff0dcb540">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[56/79]</span></h2>
7509
7510<div class="memitem">
7511<div class="memproto">
7512 <table class="memname">
7513 <tr>
7514 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7515 <td>(</td>
7516 <td class="paramtype">QuantizeSpaceToBatch&#160;</td>
7517 <td class="paramname"></td><td>)</td>
7518 <td></td>
7519 </tr>
7520 </table>
7521</div><div class="memdoc">
7522
7523<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01566">1566</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7524
7525<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7526<div class="fragment"><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; <span class="keyword">class </span>TestSpaceToBatchQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; {</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; TestSpaceToBatchQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; TestSpaceToBatchQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</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; <span class="keywordtype">void</span> VisitSpaceToBatchNdLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keyword">const</span> SpaceToBatchNdDescriptor&amp; spaceToBatchNdDescriptor,</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; boost::ignore_unused(spaceToBatchNdDescriptor, name);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; };</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; SpaceToBatchNdDescriptor descriptor;</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; IConnectableLayer* spaceToBatch = network-&gt;AddSpaceToBatchNdLayer(descriptor);</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, spaceToBatch, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; TestSpaceToBatchQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; TestSpaceToBatchQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; TestSpaceToBatchQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; TestSpaceToBatchQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7527<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7528<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7529<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7530<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7531<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7532</div><!-- fragment -->
7533</div>
7534</div>
7535<a id="aa78ce2bbe65cae8f3d60839467dbfc83"></a>
7536<h2 class="memtitle"><span class="permalink"><a href="#aa78ce2bbe65cae8f3d60839467dbfc83">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[57/79]</span></h2>
7537
7538<div class="memitem">
7539<div class="memproto">
7540 <table class="memname">
7541 <tr>
7542 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7543 <td>(</td>
7544 <td class="paramtype">QuantizeSpaceToDepth&#160;</td>
7545 <td class="paramname"></td><td>)</td>
7546 <td></td>
7547 </tr>
7548 </table>
7549</div><div class="memdoc">
7550
7551<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01621">1621</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7552
7553<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7554<div class="fragment"><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;{</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keyword">class </span>TestSpaceToDepthQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; TestSpaceToDepthQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape)</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; {}</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; TestSpaceToDepthQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape)</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;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordtype">void</span> VisitSpaceToDepthLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="keyword">const</span> SpaceToDepthDescriptor&amp;,</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 },</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 },</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; }</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; };</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="keyword">const</span> TensorShape shape{ 1u };</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; TensorInfo info(shape, DataType::Float32);</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; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), info);</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; IConnectableLayer* spaceToDepth = network-&gt;AddSpaceToDepthLayer(SpaceToDepthDescriptor());</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, spaceToDepth, info);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; TestSpaceToDepthQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; TestSpaceToDepthQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; TestSpaceToDepthQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; TestSpaceToDepthQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7555<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7556<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7557<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7558<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7559<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7560<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7561<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7562<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7563<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7564</div><!-- fragment -->
7565</div>
7566</div>
7567<a id="aaa86b6903e41d2d2828e00b32f872375"></a>
7568<h2 class="memtitle"><span class="permalink"><a href="#aaa86b6903e41d2d2828e00b32f872375">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[58/79]</span></h2>
7569
7570<div class="memitem">
7571<div class="memproto">
7572 <table class="memname">
7573 <tr>
7574 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7575 <td>(</td>
7576 <td class="paramtype">QuantizePooling2d&#160;</td>
7577 <td class="paramname"></td><td>)</td>
7578 <td></td>
7579 </tr>
7580 </table>
7581</div><div class="memdoc">
7582
7583<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01679">1679</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7584
7585<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7586<div class="fragment"><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; <span class="keyword">class </span>TestPooling2dQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; {</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; TestPooling2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</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"> 1687</span>&#160; TestPooling2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</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; <span class="keywordtype">void</span> VisitPooling2dLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keyword">const</span> Pooling2dDescriptor&amp; desc,</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 = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; CheckForwardedQuantizationSettings(layer);</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"> 1699</span>&#160; };</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <span class="keyword">auto</span> network = INetwork::Create();</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; TensorShape shape{1U};</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; Pooling2dDescriptor desc;</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; ActivationDescriptor activationDescriptor;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; activationDescriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; activationDescriptor.m_A = 3.5f;</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; activationDescriptor.m_B = -10.0f;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(activationDescriptor);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; IConnectableLayer* pooling2d = network-&gt;AddPooling2dLayer(desc);</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(3);</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="comment">// Establish connections</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; activation-&gt;GetOutputSlot(0).Connect(pooling2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; pooling2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; pooling2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; TestPooling2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; TestPooling2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; TestPooling2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; TestPooling2dQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7587<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7588<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7589<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7590</div><!-- fragment -->
7591</div>
7592</div>
7593<a id="a369051e180246c66b20c93de5fecee8c"></a>
7594<h2 class="memtitle"><span class="permalink"><a href="#a369051e180246c66b20c93de5fecee8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[59/79]</span></h2>
7595
7596<div class="memitem">
7597<div class="memproto">
7598 <table class="memname">
7599 <tr>
7600 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7601 <td>(</td>
7602 <td class="paramtype"><a class="el" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>&#160;</td>
7603 <td class="paramname"></td><td>)</td>
7604 <td></td>
7605 </tr>
7606 </table>
7607</div><div class="memdoc">
7608
7609<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01748">1748</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7610
7611<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7612<div class="fragment"><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;{</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="keyword">class </span>TestConstantQuantization : <span class="keyword">public</span> TestAdditionQuantization</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; {</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; TestConstantQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; : TestAdditionQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; TestConstantQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; : TestAdditionQuantization(options, inputShape, outputShape) {}</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="keywordtype">void</span> VisitConstantLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keyword">const</span> ConstTensor&amp; input,</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; boost::ignore_unused(input, name);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; <span class="comment">// Based off the range of values in the const tensor used for the test: [-2.0f, 6.0f]</span></div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; TestQuantizationParams(info, {8.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 64},</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; {8.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -64},</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; {6.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; {6.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</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; };</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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="comment">// Constant layer data</span></div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; std::vector&lt;float&gt; data = {-2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keyword">const</span> TensorShape shape{1U, 1U, 3U, 3U};</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; TensorInfo tensorInfo(shape, DataType::Float32);</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; ConstTensor constantTensor(tensorInfo, data);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; IConnectableLayer* constant = network-&gt;AddConstantLayer(constantTensor);</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; input-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; constant-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="comment">// Set TensorInfo in the remaining layers</span></div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; constant-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; TestConstantQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; TestConstantQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; TestConstantQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; TestConstantQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7613<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7614<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7615<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7616<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7617<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7618<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7619<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7620</div><!-- fragment -->
7621</div>
7622</div>
7623<a id="ae3af95ea62252012cf93a98167afef64"></a>
7624<h2 class="memtitle"><span class="permalink"><a href="#ae3af95ea62252012cf93a98167afef64">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[60/79]</span></h2>
7625
7626<div class="memitem">
7627<div class="memproto">
7628 <table class="memname">
7629 <tr>
7630 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7631 <td>(</td>
7632 <td class="paramtype">QuantizeArgMinMax&#160;</td>
7633 <td class="paramname"></td><td>)</td>
7634 <td></td>
7635 </tr>
7636 </table>
7637</div><div class="memdoc">
7638
7639<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01820">1820</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7640
7641<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00056">ArgMinMaxDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7642<div class="fragment"><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">class </span>TestArgMinMaxQuantization : <span class="keyword">public</span> TestQuantization</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; <span class="keyword">public</span>:</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; TestArgMinMaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; TestQuantization(inputShape, outputShape) {}</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; TestArgMinMaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; TestQuantization(options, inputShape, outputShape)</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"> 1834</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</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"> 1840</span>&#160;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; }</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordtype">void</span> VisitArgMinMaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="keyword">const</span> ArgMinMaxDescriptor&amp; argMinMaxDescriptor,</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; boost::ignore_unused(argMinMaxDescriptor, name);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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; TestQuantizationParams(outputInfo,</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; }</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; };</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; <span class="keyword">const</span> TensorShape inputShape{ 1, 1, 1, 5 };</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 1, 1, 1 };</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; TensorInfo inputInfo(inputShape, DataType::Float32);</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; <span class="comment">// Add the input layers</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</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; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; ArgMinMaxDescriptor argMinMaxDescriptor;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; argMinMaxDescriptor.m_Function = ArgMinMaxFunction::Max;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; IConnectableLayer* argMinMaxLayer = network-&gt;AddArgMinMaxLayer(argMinMaxDescriptor);</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"> 1878</span>&#160; <span class="comment">// Add the output layers</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</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="comment">// Establish connections</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; input-&gt;GetOutputSlot(0).Connect(argMinMaxLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; argMinMaxLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <span class="comment">// Set tensor info</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; argMinMaxLayer-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; TestArgMinMaxQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; TestArgMinMaxQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; TestArgMinMaxQuantization validatorQSymmS8(qSymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; TestArgMinMaxQuantization validatorQSymmS16(qSymmS16options, inputShape, outputShape);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7643<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7644<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7645<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7646<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7647<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7648<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7649<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#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.html#l00168">Types.hpp:168</a></div></div>
7650</div><!-- fragment -->
7651</div>
7652</div>
7653<a id="ab83f837cdd5bfcff537dae72a96d6fc8"></a>
7654<h2 class="memtitle"><span class="permalink"><a href="#ab83f837cdd5bfcff537dae72a96d6fc8">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[61/79]</span></h2>
7655
7656<div class="memitem">
7657<div class="memproto">
7658 <table class="memname">
7659 <tr>
7660 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7661 <td>(</td>
7662 <td class="paramtype">QuantizeComparison&#160;</td>
7663 <td class="paramname"></td><td>)</td>
7664 <td></td>
7665 </tr>
7666 </table>
7667</div><div class="memdoc">
7668
7669<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01909">1909</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7670
7671<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7672<div class="fragment"><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="keyword">class </span>TestComparisonQuantization : <span class="keyword">public</span> TestQuantization</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; <span class="keyword">public</span>:</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; TestComparisonQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestComparisonQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keywordtype">void</span> VisitComparisonLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <span class="keyword">const</span> ComparisonDescriptor&amp; descriptor,</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</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"> 1936</span>&#160; };</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1u };</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; ComparisonDescriptor descriptor(ComparisonOperation::LessOrEqual);</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; IConnectableLayer* inputLayer0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; IConnectableLayer* inputLayer1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; IConnectableLayer* comparisonLayer = network-&gt;AddComparisonLayer(descriptor);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</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; inputLayer0-&gt;GetOutputSlot(0).Connect(comparisonLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; inputLayer1-&gt;GetOutputSlot(0).Connect(comparisonLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; comparisonLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; inputLayer0-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; inputLayer1-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; comparisonLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</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"> 1957</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; TestComparisonQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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"> 1962</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; TestComparisonQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; TestComparisonQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; TestComparisonQuantization validatorQSymmS16(qSymmS16options, tensorShape, tensorShape);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7673<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7674<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7675<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7676<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7677<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7678<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7679<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
7680<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7681</div><!-- fragment -->
7682</div>
7683</div>
7684<a id="add47ebcd4a59304a25c71996aea2b38b"></a>
7685<h2 class="memtitle"><span class="permalink"><a href="#add47ebcd4a59304a25c71996aea2b38b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[62/79]</span></h2>
7686
7687<div class="memitem">
7688<div class="memproto">
7689 <table class="memname">
7690 <tr>
7691 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7692 <td>(</td>
7693 <td class="paramtype">QuantizeConcat&#160;</td>
7694 <td class="paramname"></td><td>)</td>
7695 <td></td>
7696 </tr>
7697 </table>
7698</div><div class="memdoc">
7699
7700<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01981">1981</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7701
7702<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7703<div class="fragment"><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; <span class="keyword">class </span>TestConcatQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; {</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; TestConcatQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestConcatQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; }</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</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="keywordtype">void</span> VisitConcatLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <span class="keyword">const</span> OriginsDescriptor&amp; originsDescriptor,</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; boost::ignore_unused(originsDescriptor, name);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; outputInfo, {60.8f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 65},</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; {60.8f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, -63},</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; {45.3f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; {45.3f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</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; TensorInfo inputInfo0 = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; TensorInfo inputInfo1 = layer-&gt;GetInputSlot(1).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; TensorInfo inputInfo2 = layer-&gt;GetInputSlot(2).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; TestDifferentQuantizationScale(inputInfo0, inputInfo1);</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; TestDifferentQuantizationScale(inputInfo0, inputInfo2);</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; TestDifferentQuantizationScale(inputInfo1, inputInfo2);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; TestDifferentQuantizationScale(inputInfo0, outputInfo);</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"> 2027</span>&#160; };</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; IConnectableLayer* input2 = network-&gt;AddInputLayer(2);</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; OriginsDescriptor descriptor(3, 1);</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; IConnectableLayer* concatLayer = network-&gt;AddConcatLayer(descriptor);</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; IConnectableLayer* output0 = network-&gt;AddOutputLayer(3);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; input0-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; input1-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; input2-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(2));</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; concatLayer-&gt;GetOutputSlot(0).Connect(output0-&gt;GetInputSlot(0));</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; input2-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; concatLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQAsymmU8 = INetworkQuantizer::Create(network.get());</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options);</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <span class="comment">// Override the input ranges</span></div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keywordtype">float</span> min = -15.5f;</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; <span class="keywordtype">float</span> max = 45.3f;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = quantizerPtrQAsymmU8-&gt;ExportNetwork();</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; TestConcatQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = quantizerPtrQSymmS8-&gt;ExportNetwork();</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; TestConcatQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = quantizerPtrQSymmS16-&gt;ExportNetwork();</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; TestConcatQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7704<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7705<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7706<div class="ttc" id="namespacearmnn_html_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.html#l00029">INetworkQuantizer.hpp:29</a></div></div>
7707<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7708<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7709<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7710<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7711<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#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.html#l00168">Types.hpp:168</a></div></div>
7712</div><!-- fragment -->
7713</div>
7714</div>
7715<a id="a9258afcd4c6d8443c9130d8c9bf26442"></a>
7716<h2 class="memtitle"><span class="permalink"><a href="#a9258afcd4c6d8443c9130d8c9bf26442">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[63/79]</span></h2>
7717
7718<div class="memitem">
7719<div class="memproto">
7720 <table class="memname">
7721 <tr>
7722 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7723 <td>(</td>
7724 <td class="paramtype">QuantizeReshape&#160;</td>
7725 <td class="paramname"></td><td>)</td>
7726 <td></td>
7727 </tr>
7728 </table>
7729</div><div class="memdoc">
7730
7731<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02089">2089</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7732
7733<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7734<div class="fragment"><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;{</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; <span class="keyword">class </span>TestReshapeQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</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="keyword">public</span>:</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; TestReshapeQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; TestReshapeQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitReshapeLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160; <span class="keyword">const</span> ReshapeDescriptor&amp; reshapeDescriptor,</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; boost::ignore_unused(reshapeDescriptor, name);</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; };</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; ReshapeDescriptor descriptor({1, 2, 3, 4});</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; IConnectableLayer* reshape = network-&gt;AddReshapeLayer(descriptor);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, reshape, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; TestReshapeQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; TestReshapeQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; TestReshapeQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; TestReshapeQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7735<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7736<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7737<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7738<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7739<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7740</div><!-- fragment -->
7741</div>
7742</div>
7743<a id="a23a4f3c387a2a3a035e97764e34277c6"></a>
7744<h2 class="memtitle"><span class="permalink"><a href="#a23a4f3c387a2a3a035e97764e34277c6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[64/79]</span></h2>
7745
7746<div class="memitem">
7747<div class="memproto">
7748 <table class="memname">
7749 <tr>
7750 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7751 <td>(</td>
7752 <td class="paramtype">QuantizeSplitter&#160;</td>
7753 <td class="paramname"></td><td>)</td>
7754 <td></td>
7755 </tr>
7756 </table>
7757</div><div class="memdoc">
7758
7759<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02144">2144</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7760
7761<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7762<div class="fragment"><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="keyword">class </span>TestSplitterQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; {</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; TestSplitterQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; TestSplitterQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitSplitterLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a>&amp; desc,</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</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; boost::ignore_unused(desc, name);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; CheckForwardedQuantizationSettings(layer);</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; };</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</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; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; ViewsDescriptor splitterDesc(2,4);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; IConnectableLayer* splitter = network-&gt;AddSplitterLayer(splitterDesc);</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, splitter, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; TestSplitterQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; TestSplitterQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; TestSplitterQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; TestSplitterQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7763<div class="ttc" id="namespacearmnn_html_a60291543fe872b795e71e05bcd835fd1"><div class="ttname"><a href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a></div><div class="ttdeci">ViewsDescriptor SplitterDescriptor</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_fwd_8hpp_source.html#l00050">DescriptorsFwd.hpp:50</a></div></div>
7764<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7765<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7766<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7767<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7768<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7769</div><!-- fragment -->
7770</div>
7771</div>
7772<a id="a102f37a09de1b0d4d78740a3c12902bf"></a>
7773<h2 class="memtitle"><span class="permalink"><a href="#a102f37a09de1b0d4d78740a3c12902bf">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[65/79]</span></h2>
7774
7775<div class="memitem">
7776<div class="memproto">
7777 <table class="memname">
7778 <tr>
7779 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7780 <td>(</td>
7781 <td class="paramtype">QuantizeResize&#160;</td>
7782 <td class="paramname"></td><td>)</td>
7783 <td></td>
7784 </tr>
7785 </table>
7786</div><div class="memdoc">
7787
7788<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02198">2198</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7789
7790<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00746">ResizeDescriptor::m_TargetHeight</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7791<div class="fragment"><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;{</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; <span class="keyword">class </span>TestResizeQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</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="keyword">public</span>:</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; TestResizeQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape)</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; {}</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; TestResizeQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape)</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;</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; <span class="keywordtype">void</span> VisitResizeLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; <span class="keyword">const</span> ResizeDescriptor&amp; resizeDescriptor,</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; boost::ignore_unused(resizeDescriptor, name);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160; CheckForwardedQuantizationSettings(layer);</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"> 2220</span>&#160; };</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</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; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</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; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; ResizeDescriptor descriptor;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; descriptor.m_TargetHeight = 3;</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; descriptor.m_TargetWidth = 3;</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; IConnectableLayer* resizeLayer = network-&gt;AddResizeLayer(descriptor);</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; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, resizeLayer, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; TestResizeQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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"> 2241</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; TestResizeQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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"> 2246</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; TestResizeQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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"> 2251</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160; TestResizeQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7792<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7793<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7794<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7795<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7796<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7797</div><!-- fragment -->
7798</div>
7799</div>
7800<a id="a5f9c6094ae666c8e14907307d0481fac"></a>
7801<h2 class="memtitle"><span class="permalink"><a href="#a5f9c6094ae666c8e14907307d0481fac">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[66/79]</span></h2>
7802
7803<div class="memitem">
7804<div class="memproto">
7805 <table class="memname">
7806 <tr>
7807 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7808 <td>(</td>
7809 <td class="paramtype">QuantizeStridedSlice&#160;</td>
7810 <td class="paramname"></td><td>)</td>
7811 <td></td>
7812 </tr>
7813 </table>
7814</div><div class="memdoc">
7815
7816<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02257">2257</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7817
7818<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7819<div class="fragment"><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;{</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; <span class="keyword">class </span>TestStridedSliceQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; {</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; TestStridedSliceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</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; TestStridedSliceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</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="keyword">virtual</span> <span class="keywordtype">void</span> VisitStridedSliceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; <span class="keyword">const</span> StridedSliceDescriptor&amp; desc,</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; {</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; CheckForwardedQuantizationSettings(layer);</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"> 2278</span>&#160;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160; StridedSliceDescriptor stridedSliceDesc;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; IConnectableLayer* stridedSlice = network-&gt;AddStridedSliceLayer(stridedSliceDesc);</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; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, stridedSlice, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; TestStridedSliceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; TestStridedSliceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; TestStridedSliceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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"> 2306</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; TestStridedSliceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7820<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7821<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7822<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7823<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7824<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7825</div><!-- fragment -->
7826</div>
7827</div>
7828<a id="aec7cf8e3927ee7d24f8b19d206ce3e84"></a>
7829<h2 class="memtitle"><span class="permalink"><a href="#aec7cf8e3927ee7d24f8b19d206ce3e84">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[67/79]</span></h2>
7830
7831<div class="memitem">
7832<div class="memproto">
7833 <table class="memname">
7834 <tr>
7835 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7836 <td>(</td>
7837 <td class="paramtype">QuantizeBatchToSpace&#160;</td>
7838 <td class="paramname"></td><td>)</td>
7839 <td></td>
7840 </tr>
7841 </table>
7842</div><div class="memdoc">
7843
7844<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02312">2312</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7845
7846<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l01495">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01474">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7847<div class="fragment"><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160;{</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; <span class="keyword">class </span>TestBatchToSpaceQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</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="keyword">public</span>:</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; TestBatchToSpaceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; TestBatchToSpaceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; <span class="keywordtype">void</span> VisitBatchToSpaceNdLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; <span class="keyword">const</span> BatchToSpaceNdDescriptor&amp; batchToSpaceNdDescriptor,</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; boost::ignore_unused(batchToSpaceNdDescriptor, name);</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160; }</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; };</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; BatchToSpaceNdDescriptor descriptor;</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; IConnectableLayer* batchToSpace = network-&gt;AddBatchToSpaceNdLayer(descriptor);</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; <a class="code" href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, batchToSpace, <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; TestBatchToSpaceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; TestBatchToSpaceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; TestBatchToSpaceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; TestBatchToSpaceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7848<div class="ttc" id="namespacearmnn_html_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.html#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01474">QuantizerTest.cpp:1474</a></div></div>
7849<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7850<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7851<div class="ttc" id="namespacearmnn_html_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.html#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l01495">QuantizerTest.cpp:1495</a></div></div>
7852<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7853</div><!-- fragment -->
7854</div>
7855</div>
7856<a id="a733ef16d4eaaf8cce338320fa042f526"></a>
7857<h2 class="memtitle"><span class="permalink"><a href="#a733ef16d4eaaf8cce338320fa042f526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[68/79]</span></h2>
7858
7859<div class="memitem">
7860<div class="memproto">
7861 <table class="memname">
7862 <tr>
7863 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7864 <td>(</td>
7865 <td class="paramtype">QuantizePrelu&#160;</td>
7866 <td class="paramname"></td><td>)</td>
7867 <td></td>
7868 </tr>
7869 </table>
7870</div><div class="memdoc">
7871
7872<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02367">2367</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7873
7874<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7875<div class="fragment"><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;{</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; <span class="keyword">class </span>TestPreluQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; {</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; TestPreluQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape,</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; : TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; , m_AlphaShape(alphaShape)</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; {}</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; TestPreluQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape,</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; : TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; , m_AlphaShape(alphaShape)</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;</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; boost::ignore_unused(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; <span class="keywordflow">switch</span> (<span class="keywordtype">id</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; <span class="keywordflow">case</span> 0: <span class="comment">// Input</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; BOOST_TEST(m_InputShape == info.GetShape());</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <span class="keywordflow">case</span> 1: <span class="comment">// Alpha</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; BOOST_TEST(m_AlphaShape == info.GetShape());</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Invalid layer binding id for PReLU layer&quot;</span>);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; }</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; <span class="comment">// Based off current default [-15.0f, 15.0f]</span></div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 }, <span class="comment">// QASymmU8</span></div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0}, <span class="comment">// QASymmS8</span></div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0}, <span class="comment">// QSymmS8</span></div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 }); <span class="comment">// QSymmS16</span></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;</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; boost::ignore_unused(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; <span class="keyword">const</span> TensorInfo&amp; info = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; BOOST_TEST(m_OutputShape == info.GetShape());</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; }</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; <span class="keywordtype">void</span> VisitPreluLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; boost::ignore_unused(name);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; <span class="keyword">const</span> TensorInfo&amp; info = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 }, <span class="comment">// QASymmU8</span></div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0}, <span class="comment">// QAsymmS8</span></div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0}, <span class="comment">// QSymmS8</span></div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 }); <span class="comment">// QSymmS16</span></div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; }</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="keyword">private</span>:</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; TensorShape m_AlphaShape;</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;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; <span class="keyword">const</span> TensorShape inputShape{ 4, 1, 2 };</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="keyword">const</span> TensorShape alphaShape{ 5, 4, 3, 1 };</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 5, 4, 3, 2 };</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; TensorInfo inputInfo(inputShape, DataType::Float32);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; TensorInfo alphaInfo(alphaShape, DataType::Float32);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; <span class="comment">// Add the input layers</span></div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; IConnectableLayer* alpha = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; IConnectableLayer* prelu = network-&gt;AddPreluLayer(<span class="stringliteral">&quot;prelu&quot;</span>);</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; <span class="comment">// Add the output layers</span></div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; input-&gt;GetOutputSlot(0).Connect(prelu-&gt;GetInputSlot(0));</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; alpha-&gt;GetOutputSlot(0).Connect(prelu-&gt;GetInputSlot(1));</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; prelu-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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="comment">// Set tensor info</span></div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; alpha-&gt;GetOutputSlot(0).SetTensorInfo(alphaInfo);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; prelu-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; TestPreluQuantization validatorQAsymmU8(inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; TestPreluQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; TestPreluQuantization validatorQSymmS8(qSymmS8Options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; TestPreluQuantization validatorQSymmS16(qSymmS16options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7876<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7877<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7878<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7879<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7880<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7881<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7882<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7883<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#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.html#l00168">Types.hpp:168</a></div></div>
7884</div><!-- fragment -->
7885</div>
7886</div>
7887<a id="a5e66fe270ca921faeecd26735192d08b"></a>
7888<h2 class="memtitle"><span class="permalink"><a href="#a5e66fe270ca921faeecd26735192d08b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[69/79]</span></h2>
7889
7890<div class="memitem">
7891<div class="memproto">
7892 <table class="memname">
7893 <tr>
7894 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7895 <td>(</td>
7896 <td class="paramtype">QuantizeTransposeConvolution2d&#160;</td>
7897 <td class="paramname"></td><td>)</td>
7898 <td></td>
7899 </tr>
7900 </table>
7901</div><div class="memdoc">
7902
7903<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02568">2568</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7904
7905<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02488">TestQuantizeTransposeConvolution2d()</a>.</p>
7906<div class="fragment"><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160;{</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; <a class="code" href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afa7a0a639e2772ff2ced67d77be810c0"><div class="ttname"><a href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">armnn::TestQuantizeTransposeConvolution2d</a></div><div class="ttdeci">void TestQuantizeTransposeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02488">QuantizerTest.cpp:2488</a></div></div>
7907</div><!-- fragment -->
7908</div>
7909</div>
7910<a id="aec82007c45313f59d24b304e35b3db6c"></a>
7911<h2 class="memtitle"><span class="permalink"><a href="#aec82007c45313f59d24b304e35b3db6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[70/79]</span></h2>
7912
7913<div class="memitem">
7914<div class="memproto">
7915 <table class="memname">
7916 <tr>
7917 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7918 <td>(</td>
7919 <td class="paramtype">QuantizeTransposeConvolution2dWithBiases&#160;</td>
7920 <td class="paramname"></td><td>)</td>
7921 <td></td>
7922 </tr>
7923 </table>
7924</div><div class="memdoc">
7925
7926<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02573">2573</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7927
7928<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02488">TestQuantizeTransposeConvolution2d()</a>.</p>
7929<div class="fragment"><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;{</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; <a class="code" href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afa7a0a639e2772ff2ced67d77be810c0"><div class="ttname"><a href="namespacearmnn.html#afa7a0a639e2772ff2ced67d77be810c0">armnn::TestQuantizeTransposeConvolution2d</a></div><div class="ttdeci">void TestQuantizeTransposeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02488">QuantizerTest.cpp:2488</a></div></div>
7930</div><!-- fragment -->
7931</div>
7932</div>
7933<a id="a77cba79eef903eb3d758b4edbcc626ef"></a>
7934<h2 class="memtitle"><span class="permalink"><a href="#a77cba79eef903eb3d758b4edbcc626ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[71/79]</span></h2>
7935
7936<div class="memitem">
7937<div class="memproto">
7938 <table class="memname">
7939 <tr>
7940 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7941 <td>(</td>
7942 <td class="paramtype">QuantizeStack&#160;</td>
7943 <td class="paramname"></td><td>)</td>
7944 <td></td>
7945 </tr>
7946 </table>
7947</div><div class="memdoc">
7948
7949<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02578">2578</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7950
7951<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7952<div class="fragment"><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;{</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; <span class="keyword">class </span>TestStackQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; {</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; TestStackQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; TestStackQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160; }</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; <a class="code" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; boost::ignore_unused(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; }</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160; <span class="keywordtype">void</span> VisitStackLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; <span class="keyword">const</span> StackDescriptor&amp; descriptor,</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; TestQuantizationParams(outputInfo,</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; }</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; };</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; <span class="keyword">const</span> TensorShape inputShape{ 3, 4, 5 };</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 3, 4, 2, 5 };</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; StackDescriptor descriptor(2, 2, inputShape);</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; IConnectableLayer* stackLayer = network-&gt;AddStackLayer(descriptor);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160;</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; input0-&gt;GetOutputSlot(0).Connect(stackLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; input1-&gt;GetOutputSlot(0).Connect(stackLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; stackLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; TestStackQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; TestStackQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, inputShape);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; TestStackQuantization validatorQSymmS8(qSymmS8Options, inputShape, inputShape);</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160;</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; TestStackQuantization validatorQSymmS16(qSymmS16options, inputShape, outputShape);</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7953<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7954<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7955<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7956<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7957<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7958<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7959<div class="ttc" id="namespacearmnn_html_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.html#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.html#l00168">Types.hpp:168</a></div></div>
7960</div><!-- fragment -->
7961</div>
7962</div>
7963<a id="a46f313720b601ca97a9c2a5158814bff"></a>
7964<h2 class="memtitle"><span class="permalink"><a href="#a46f313720b601ca97a9c2a5158814bff">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[72/79]</span></h2>
7965
7966<div class="memitem">
7967<div class="memproto">
7968 <table class="memname">
7969 <tr>
7970 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7971 <td>(</td>
7972 <td class="paramtype">QuantizeSlice&#160;</td>
7973 <td class="paramname"></td><td>)</td>
7974 <td></td>
7975 </tr>
7976 </table>
7977</div><div class="memdoc">
7978
7979<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02657">2657</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
7980
7981<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
7982<div class="fragment"><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;{</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; <span class="keyword">class </span>TestSliceQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; {</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; TestSliceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; : TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; {}</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160;</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160; TestSliceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; : TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; {}</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitSliceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; <span class="keyword">const</span> SliceDescriptor&amp; desc,</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; {</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params{ 30.0f / <a class="code" href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; }</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160; };</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160;</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; TensorShape shape{ 3 };</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; TensorInfo info(shape, DataType::Float32);</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160;</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; IConnectableLayer* sliceLayer = network-&gt;AddSliceLayer(SliceDescriptor());</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(sliceLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; sliceLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; sliceLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; TestSliceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160; <span class="comment">// test QASymmS8 quantization</span></div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; TestSliceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160;</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; TestSliceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160;</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; TestSliceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.html#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00037">QuantizerTest.cpp:37</a></div></div>
7983<div class="ttc" id="namespacearmnn_html_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.html#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00036">QuantizerTest.cpp:36</a></div></div>
7984<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7985<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
7986<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
7987<div class="ttc" id="namespacearmnn_html_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.html#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00035">QuantizerTest.cpp:35</a></div></div>
7988<div class="ttc" id="namespacearmnn_html_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.html#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00033">QuantizerTest.cpp:33</a></div></div>
7989<div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
7990<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7991</div><!-- fragment -->
7992</div>
7993</div>
7994<a id="a728153b62fa66e6ed1243e09144bfe8c"></a>
7995<h2 class="memtitle"><span class="permalink"><a href="#a728153b62fa66e6ed1243e09144bfe8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[73/79]</span></h2>
7996
7997<div class="memitem">
7998<div class="memproto">
7999 <table class="memname">
8000 <tr>
8001 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8002 <td>(</td>
8003 <td class="paramtype">QuantizeInf&#160;</td>
8004 <td class="paramname"></td><td>)</td>
8005 <td></td>
8006 </tr>
8007 </table>
8008</div><div class="memdoc">
8009
8010<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02742">2742</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
8011
8012<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02727">SetupQuantize()</a>.</p>
8013<div class="fragment"><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;{</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; BOOST_CHECK_EQUAL(<a class="code" href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a>(std::numeric_limits&lt;float&gt;::infinity())[0], 255);</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a52cbff9d344ba4a1fe01d4da2c1f7ba2"><div class="ttname"><a href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">armnn::SetupQuantize</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; SetupQuantize(float value)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02727">QuantizerTest.cpp:2727</a></div></div>
8014</div><!-- fragment -->
8015</div>
8016</div>
8017<a id="a898305dc4cdb78a5fbed481250f6cd35"></a>
8018<h2 class="memtitle"><span class="permalink"><a href="#a898305dc4cdb78a5fbed481250f6cd35">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[74/79]</span></h2>
8019
8020<div class="memitem">
8021<div class="memproto">
8022 <table class="memname">
8023 <tr>
8024 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8025 <td>(</td>
8026 <td class="paramtype">QuantizeNegativeInf&#160;</td>
8027 <td class="paramname"></td><td>)</td>
8028 <td></td>
8029 </tr>
8030 </table>
8031</div><div class="memdoc">
8032
8033<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02747">2747</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
8034
8035<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.html#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l02727">SetupQuantize()</a>.</p>
8036<div class="fragment"><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;{</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160; BOOST_CHECK_EQUAL(<a class="code" href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a>(-1 * std::numeric_limits&lt;float&gt;::infinity())[0], 0);</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a52cbff9d344ba4a1fe01d4da2c1f7ba2"><div class="ttname"><a href="namespacearmnn.html#a52cbff9d344ba4a1fe01d4da2c1f7ba2">armnn::SetupQuantize</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; SetupQuantize(float value)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02727">QuantizerTest.cpp:2727</a></div></div>
8037</div><!-- fragment -->
8038</div>
8039</div>
8040<a id="a94eb3bdf0e1c8c748c2e29dce048ace4"></a>
8041<h2 class="memtitle"><span class="permalink"><a href="#a94eb3bdf0e1c8c748c2e29dce048ace4">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[75/79]</span></h2>
8042
8043<div class="memitem">
8044<div class="memproto">
8045 <table class="memname">
8046 <tr>
8047 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8048 <td>(</td>
8049 <td class="paramtype">PreserveTypeFloat32&#160;</td>
8050 <td class="paramname"></td><td>)</td>
8051 <td></td>
8052 </tr>
8053 </table>
8054</div><div class="memdoc">
8055
8056<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02847">2847</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
8057
8058<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>.</p>
8059<div class="fragment"><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160;{</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::Float32);</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
8060</div><!-- fragment -->
8061</div>
8062</div>
8063<a id="ab242670b85e047e79bb297cdb192cc93"></a>
8064<h2 class="memtitle"><span class="permalink"><a href="#ab242670b85e047e79bb297cdb192cc93">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[76/79]</span></h2>
8065
8066<div class="memitem">
8067<div class="memproto">
8068 <table class="memname">
8069 <tr>
8070 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8071 <td>(</td>
8072 <td class="paramtype">PreserveTypeQAsymmU8&#160;</td>
8073 <td class="paramname"></td><td>)</td>
8074 <td></td>
8075 </tr>
8076 </table>
8077</div><div class="memdoc">
8078
8079<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02852">2852</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
8080
8081<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>.</p>
8082<div class="fragment"><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;{</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QAsymmU8);</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
8083</div><!-- fragment -->
8084</div>
8085</div>
8086<a id="a061891029598224370aae4cd18b78406"></a>
8087<h2 class="memtitle"><span class="permalink"><a href="#a061891029598224370aae4cd18b78406">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[77/79]</span></h2>
8088
8089<div class="memitem">
8090<div class="memproto">
8091 <table class="memname">
8092 <tr>
8093 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8094 <td>(</td>
8095 <td class="paramtype">PreserveTypeQsymm8&#160;</td>
8096 <td class="paramname"></td><td>)</td>
8097 <td></td>
8098 </tr>
8099 </table>
8100</div><div class="memdoc">
8101
8102<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02857">2857</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
8103
8104<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>.</p>
8105<div class="fragment"><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160;{</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QSymmS8);</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
8106</div><!-- fragment -->
8107</div>
8108</div>
8109<a id="a4d4386cbb19dbc551e423992ecdd0d61"></a>
8110<h2 class="memtitle"><span class="permalink"><a href="#a4d4386cbb19dbc551e423992ecdd0d61">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[78/79]</span></h2>
8111
8112<div class="memitem">
8113<div class="memproto">
8114 <table class="memname">
8115 <tr>
8116 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8117 <td>(</td>
8118 <td class="paramtype">PreserveTypeQsymm16&#160;</td>
8119 <td class="paramname"></td><td>)</td>
8120 <td></td>
8121 </tr>
8122 </table>
8123</div><div class="memdoc">
8124
8125<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02862">2862</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
8126
8127<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
8128<div class="fragment"><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;{</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; <a class="code" href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QSymmS16);</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.html#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l02817">QuantizerTest.cpp:2817</a></div></div>
8129</div><!-- fragment -->
8130</div>
8131</div>
8132<a id="a8c09fbb75d2c2dea48926a540fc5cce9"></a>
8133<h2 class="memtitle"><span class="permalink"><a href="#a8c09fbb75d2c2dea48926a540fc5cce9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[79/79]</span></h2>
8134
8135<div class="memitem">
8136<div class="memproto">
8137 <table class="memname">
8138 <tr>
8139 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8140 <td>(</td>
8141 <td class="paramtype">TestConnectionPreservationAfterDynamicQuant&#160;</td>
8142 <td class="paramname"></td><td>)</td>
8143 <td></td>
8144 </tr>
8145 </table>
8146</div><div class="memdoc">
8147
8148<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02867">2867</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
8149
8150<p class="reference">References <a class="el" href="_profiler_tests_8cpp.html#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_input_slot.html#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#afb5e65c770f6cee222db8af7581541a6">IConnectableLayer::GetGuid()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00337">GetInputTensorInfo()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#afcc1c3a20bd2860e0ddd21674389246f">IConnectableLayer::GetName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ad0c3555b126975ad6b3e250fe2a59534">IOutputSlot::GetOwningLayerGuid()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
8151<div class="fragment"><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;{</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160; <span class="keyword">class </span>TestConnectionPreservation : <span class="keyword">public</span> LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; {</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160; TestConnectionPreservation(<span class="keyword">const</span> Graph&amp; graph)</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; : LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;()</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; , m_Graph(graph)</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160; {}</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160;</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; <span class="keywordtype">void</span> VisitAdditionLayer(<span class="keyword">const</span> IConnectableLayer* layer, <span class="keyword">const</span> <span class="keywordtype">char</span>*)<span class="keyword"> override</span></div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160; CheckLayerName(layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetOwningLayerGuid(), <span class="stringliteral">&quot;reLU1&quot;</span>);</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; CheckLayerName(layer-&gt;GetInputSlot(1).GetConnection()-&gt;GetOwningLayerGuid(), <span class="stringliteral">&quot;reLU2&quot;</span>);</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160; }</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160; <span class="keywordtype">void</span> CheckLayerName(<a class="code" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, std::string expectedName)</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; {</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; <span class="keywordtype">bool</span> guidFound = <span class="keyword">false</span>;</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; <span class="keywordflow">for</span> (Layer* layer : m_Graph)</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; {</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; <span class="keywordflow">if</span> (layer-&gt;GetGuid() == guid)</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; {</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160; BOOST_CHECK_EQUAL(layer-&gt;GetName(), expectedName.c_str());</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160; guidFound = <span class="keyword">true</span>;</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; }</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160; }</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <span class="keywordflow">if</span> (!guidFound)</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; {</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; BOOST_FAIL(<span class="stringliteral">&quot;No layer matching the GUID was found&quot;</span>);</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; }</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; }</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160; Graph m_Graph;</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; };</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160;</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160;</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0,<span class="stringliteral">&quot;inputLayer1&quot;</span>);</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; <a class="code" href="structarmnn_1_1_activation_descriptor.html">armnn::ActivationDescriptor</a> ReLUDesc;</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; ReLUDesc.<a class="code" href="structarmnn_1_1_activation_descriptor.html#af10fa7883e3579950f477bee92a64844">m_Function</a> = ActivationFunction::ReLu;</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160;</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; IConnectableLayer* reLULayer1 = network-&gt;AddActivationLayer(ReLUDesc, <span class="stringliteral">&quot;reLU1&quot;</span>);</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; IConnectableLayer* reLULayer2 = network-&gt;AddActivationLayer(ReLUDesc, <span class="stringliteral">&quot;reLU2&quot;</span>);</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160; IConnectableLayer* addLayer1 = network-&gt;AddAdditionLayer(<span class="stringliteral">&quot;addLayer1&quot;</span>);</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0,<span class="stringliteral">&quot;outPutLayer1&quot;</span>);</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160;</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(reLULayer1-&gt;GetInputSlot(0));</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; reLULayer1-&gt;GetOutputSlot(0).Connect(reLULayer2-&gt;GetInputSlot(0));</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; reLULayer1-&gt;GetOutputSlot(0).Connect(addLayer1-&gt;GetInputSlot(0));</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; reLULayer2-&gt;GetOutputSlot(0).Connect(addLayer1-&gt;GetInputSlot(1));</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; addLayer1-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160;</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; reLULayer1-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; reLULayer2-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; addLayer1-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; TestConnectionPreservation visitor1(boost::polymorphic_downcast&lt;const Network*&gt;(network.get())-&gt;GetGraph());</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(network.get(), visitor1);</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; <a class="code" href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a> quantizer = <a class="code" href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a>(network.get());</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160;</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> tensorInfo = <a class="code" href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a>(boost::polymorphic_downcast&lt;const Network*&gt;(network.get()));</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; std::vector&lt;float&gt; inputData({0, 2, 0, 4});</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> inputTensor(tensorInfo, inputData.data());</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; <a class="code" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors;</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; inputTensors.push_back(std::make_pair(0, inputTensor));</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; quantizer-&gt;Refine(inputTensors);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160;</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantNetwork = quantizer-&gt;ExportNetwork();</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160;</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; TestConnectionPreservation visitor2(boost::polymorphic_downcast&lt;const Network*&gt;(quantNetwork.get())-&gt;GetGraph());</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantNetwork.get(), visitor2);</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_const_tensor_html"><div class="ttname"><a href="classarmnn_1_1_const_tensor.html">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.html#l00199">Tensor.hpp:199</a></div></div>
8152<div class="ttc" id="namespacearmnn_html_ae52296dff1f4879854f320d59f92574e"><div class="ttname"><a href="namespacearmnn.html#ae52296dff1f4879854f320d59f92574e">armnn::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(const Network *network)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00337">QuantizerTest.cpp:337</a></div></div>
8153<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
8154<div class="ttc" id="structarmnn_1_1_activation_descriptor_html"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.html">armnn::ActivationDescriptor</a></div><div class="ttdoc">An ActivationDescriptor for the ActivationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00020">Descriptors.hpp:20</a></div></div>
8155<div class="ttc" id="namespacearmnn_html_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.html#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.html#l00029">INetworkQuantizer.hpp:29</a></div></div>
8156<div class="ttc" id="namespacearmnn_html_aa01bce88f89975a5a031db4cc8861527"><div class="ttname"><a href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class ConstTensor &gt; &gt; InputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00225">Tensor.hpp:225</a></div></div>
8157<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
8158<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
8159<div class="ttc" id="structarmnn_1_1_activation_descriptor_html_af10fa7883e3579950f477bee92a64844"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.html#af10fa7883e3579950f477bee92a64844">armnn::ActivationDescriptor::m_Function</a></div><div class="ttdeci">ActivationFunction m_Function</div><div class="ttdoc">The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00035">Descriptors.hpp:35</a></div></div>
8160<div class="ttc" id="classarmnn_1_1_i_network_quantizer_html_a3a4d01d9351c02a703740290f226441f"><div class="ttname"><a href="classarmnn_1_1_i_network_quantizer.html#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a></div><div class="ttdeci">static INetworkQuantizerPtr Create(INetwork *inputNetwork, const QuantizerOptions &amp;options=QuantizerOptions())</div><div class="ttdoc">Create Quantizer object wrapped in unique_ptr. </div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_8cpp_source.html#l00040">NetworkQuantizer.cpp:40</a></div></div>
8161<div class="ttc" id="namespacearmnn_html_afad4088a9a058114ee5f87246f87bf49"><div class="ttname"><a href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">armnn::LayerGuid</a></div><div class="ttdeci">profiling::ProfilingGuid LayerGuid</div><div class="ttdoc">Define LayerGuid type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00233">Types.hpp:233</a></div></div>
8162</div><!-- fragment -->
8163</div>
8164</div>
8165<a id="abe311824d11bad4e6f93c8f94a721052"></a>
8166<h2 class="memtitle"><span class="permalink"><a href="#abe311824d11bad4e6f93c8f94a721052">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[1/2]</span></h2>
8167
8168<div class="memitem">
8169<div class="memproto">
8170 <table class="memname">
8171 <tr>
8172 <td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
8173 <td>(</td>
8174 <td class="paramtype">std::ostream &amp;&#160;</td>
8175 <td class="paramname"><em>ostr</em>, </td>
8176 </tr>
8177 <tr>
8178 <td class="paramkey"></td>
8179 <td></td>
8180 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8181 <td class="paramname"><em>right</em>&#160;</td>
8182 </tr>
8183 <tr>
8184 <td></td>
8185 <td>)</td>
8186 <td></td><td></td>
8187 </tr>
8188 </table>
8189</div><div class="memdoc">
8190
8191<p class="definition">Definition at line <a class="el" href="_tensor_test_8cpp_source.html#l00012">12</a> of file <a class="el" href="_tensor_test_8cpp_source.html">TensorTest.cpp</a>.</p>
8192
8193<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
8194<div class="fragment"><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; ostr &lt;&lt; <span class="stringliteral">&quot;TensorInfo[ &quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[2] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3]</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> ostr;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00092">Tensor.hpp:92</a></div></div>
8195<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
8196</div><!-- fragment -->
8197</div>
8198</div>
8199<a id="af676ec7e9534bd6e6ac3072a2c0403f4"></a>
8200<h2 class="memtitle"><span class="permalink"><a href="#af676ec7e9534bd6e6ac3072a2c0403f4">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[2/2]</span></h2>
8201
8202<div class="memitem">
8203<div class="memproto">
8204 <table class="memname">
8205 <tr>
8206 <td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
8207 <td>(</td>
8208 <td class="paramtype">std::ostream &amp;&#160;</td>
8209 <td class="paramname"><em>ostr</em>, </td>
8210 </tr>
8211 <tr>
8212 <td class="paramkey"></td>
8213 <td></td>
8214 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
8215 <td class="paramname"><em>shape</em>&#160;</td>
8216 </tr>
8217 <tr>
8218 <td></td>
8219 <td>)</td>
8220 <td></td><td></td>
8221 </tr>
8222 </table>
8223</div><div class="memdoc">
8224
8225<p class="definition">Definition at line <a class="el" href="_tensor_test_8cpp_source.html#l00024">24</a> of file <a class="el" href="_tensor_test_8cpp_source.html">TensorTest.cpp</a>.</p>
8226
8227<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.html#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>.</p>
8228<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; ostr &lt;&lt; <span class="stringliteral">&quot;TensorShape[ &quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &lt;&lt; shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &lt;&lt; shape[0] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; &lt;&lt; shape[1] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; &lt;&lt; shape[2] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; &lt;&lt; shape[3]</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> ostr;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_shape_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorShape::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00043">Tensor.hpp:43</a></div></div>
8229</div><!-- fragment -->
8230</div>
8231</div>
8232<a id="a20f74b679d59b52e9fae3bbef8f10ffb"></a>
8233<h2 class="memtitle"><span class="permalink"><a href="#a20f74b679d59b52e9fae3bbef8f10ffb">&#9670;&nbsp;</a></span>CalcLevel()</h2>
8234
8235<div class="memitem">
8236<div class="memproto">
8237 <table class="memname">
8238 <tr>
8239 <td class="memname">int armnn::CalcLevel </td>
8240 <td>(</td>
8241 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
8242 <td class="paramname"><em>eventPtr</em></td><td>)</td>
8243 <td></td>
8244 </tr>
8245 </table>
8246</div><div class="memdoc">
8247
8248<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00234">234</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
8249
8250<p class="reference">References <a class="el" href="_profiling_event_8cpp_source.html#l00067">Event::GetName()</a>, and <a class="el" href="_profiling_event_8cpp_source.html#l00077">Event::GetParentEvent()</a>.</p>
8251
8252<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00380">Profiler::AnalyzeEventsAndWriteResults()</a>.</p>
8253<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordtype">int</span> level=0;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">while</span> (eventPtr != <span class="keyword">nullptr</span>)</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; eventPtr = eventPtr-&gt;GetParentEvent();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; level++;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> level;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div></div><!-- fragment -->
8254</div>
8255</div>
8256<a id="ab6ed577caec49def150e231c63af0d12"></a>
8257<h2 class="memtitle"><span class="permalink"><a href="#ab6ed577caec49def150e231c63af0d12">&#9670;&nbsp;</a></span>CalculateEdgeStrategy()</h2>
8258
8259<div class="memitem">
8260<div class="memproto">
8261 <table class="memname">
8262 <tr>
8263 <td class="memname"><a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> armnn::CalculateEdgeStrategy </td>
8264 <td>(</td>
8265 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8266 <td class="paramname"><em>backends</em>, </td>
8267 </tr>
8268 <tr>
8269 <td class="paramkey"></td>
8270 <td></td>
8271 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
8272 <td class="paramname"><em>srcFactoryId</em>, </td>
8273 </tr>
8274 <tr>
8275 <td class="paramkey"></td>
8276 <td></td>
8277 <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
8278 <td class="paramname"><em>layer</em>, </td>
8279 </tr>
8280 <tr>
8281 <td class="paramkey"></td>
8282 <td></td>
8283 <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
8284 <td class="paramname"><em>connectedLayer</em>, </td>
8285 </tr>
8286 <tr>
8287 <td class="paramkey"></td>
8288 <td></td>
8289 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8290 <td class="paramname"><em>registry</em>&#160;</td>
8291 </tr>
8292 <tr>
8293 <td></td>
8294 <td>)</td>
8295 <td></td><td></td>
8296 </tr>
8297 </table>
8298</div><div class="memdoc">
8299
8300<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00664">664</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
8301
8302<p class="reference">References <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a>, <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>, <a class="el" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00060">ITensorHandleFactory::GetExportFlags()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00061">ITensorHandleFactory::GetImportFlags()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
8303
8304<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
8305<div class="fragment"><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;{</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</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="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">// Legacy API check for backward compatibility</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (srcFactoryId == ITensorHandleFactory::LegacyFactoryId || dstPrefs.empty())</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; <span class="keywordflow">if</span> (layer.GetBackendId() != connectedLayer.GetBackendId())</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::CopyToTarget;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">else</span></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">return</span> EdgeStrategy::DirectCompatibility;</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; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="comment">// TensorHandleFactory API present, so perform more sophisticated strategies.</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</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="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (connectedLayer.GetType() == LayerType::Output)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</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;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">// Search for direct match in prefs</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</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="keywordflow">if</span> (pref == srcFactoryId)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</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; }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// Search for export/import options</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; ITensorHandleFactory* srcFactory = registry.GetFactory(srcFactoryId);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (srcFactory-&gt;GetExportFlags() != 0)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(pref);</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">// Handles cases when a destPref is not listed in TensorHandleFactoryRegistry</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (!dstFactory) {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">if</span> ((dstFactory-&gt;GetImportFlags() &amp; srcFactory-&gt;GetExportFlags()) != 0)</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::ExportToTarget;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</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; }</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">// Search for copy options via map/unmap</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (srcFactory-&gt;SupportsMapUnmap())</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">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</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; ITensorHandleFactory* dstFactory = registry.GetFactory(pref);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">if</span> (dstFactory &amp;&amp; dstFactory-&gt;SupportsMapUnmap())</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::CopyToTarget;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</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; }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::Undefined;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;}</div></div><!-- fragment -->
8306</div>
8307</div>
8308<a id="a8d9f52bbb69750456acca06988beabda"></a>
8309<h2 class="memtitle"><span class="permalink"><a href="#a8d9f52bbb69750456acca06988beabda">&#9670;&nbsp;</a></span>CalculateSlotOption()</h2>
8310
8311<div class="memitem">
8312<div class="memproto">
8313 <table class="memname">
8314 <tr>
8315 <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOption </td>
8316 <td>(</td>
8317 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8318 <td class="paramname"><em>backends</em>, </td>
8319 </tr>
8320 <tr>
8321 <td class="paramkey"></td>
8322 <td></td>
8323 <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;&#160;</td>
8324 <td class="paramname"><em>outputSlot</em>, </td>
8325 </tr>
8326 <tr>
8327 <td class="paramkey"></td>
8328 <td></td>
8329 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8330 <td class="paramname"><em>registry</em>&#160;</td>
8331 </tr>
8332 <tr>
8333 <td></td>
8334 <td>)</td>
8335 <td></td><td></td>
8336 </tr>
8337 </table>
8338</div><div class="memdoc">
8339
8340<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00555">555</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
8341
8342<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.html#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="_i_backend_internal_8cpp_source.html#l00096">IBackendInternal::GetHandleFactoryPreferences()</a>, <a class="el" href="_layer_8hpp_source.html#l00115">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_network_8cpp_source.html#l00443">RequiresCopy()</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>.</p>
8343
8344<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
8345<div class="fragment"><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;{</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; Layer&amp; layer = outputSlot.GetOwningLayer();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">auto</span> frmBackend = backends.find(layer.GetBackendId());</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// Connections to Output Layers requires support for map/unmap on the TensorHandle.</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordtype">bool</span> requiresMapUnmap = <span class="keyword">false</span>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (connectedLayer.GetType() == LayerType::Output)</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"> 575</span>&#160; requiresMapUnmap = <span class="keyword">true</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</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;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; IBackendInternal* srcBackend = frmBackend-&gt;second.get();</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">auto</span> srcPrefs = srcBackend-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// Initialize the scores</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : srcPrefs)</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; <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="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; ITensorHandleFactory* factory = registry.GetFactory(pref);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (!factory-&gt;SupportsMapUnmap())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</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="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">auto</span> it = factoryScores.find(pref);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (it == factoryScores.end())</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; factoryScores[pref] = 0;</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"> 602</span>&#160; }</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="comment">// Score each handle factory based on how many times it requires copies on the slot connections</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; src : srcPrefs)</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</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="l00616"></a><span class="lineno"> 616</span>&#160; {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a>(src, dst, registry))</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// Copy avoided, increase the score</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; factoryScores[src]++;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; }</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; <span class="comment">// Find the lowest score</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordtype">int</span> minScore = std::numeric_limits&lt;int&gt;::max();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</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; minScore = std::min(minScore, it.second);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// Collect factories matching the best(lowest) score</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; std::vector&lt;ITensorHandleFactory::FactoryId&gt; optimalFactories;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (it.second == minScore)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; optimalFactories.push_back(it.first);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</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;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</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="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; srcPref : srcPrefs)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; comp : optimalFactories)</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">if</span> (comp == srcPref)</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> comp;</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; }</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"> 661</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5ee4a1cca55f69b31e625c786655ed1a"><div class="ttname"><a href="namespacearmnn.html#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.html#l00443">Network.cpp:443</a></div></div>
8346</div><!-- fragment -->
8347</div>
8348</div>
8349<a id="accb1637c58e1523f740025e0d0e7c6dd"></a>
8350<h2 class="memtitle"><span class="permalink"><a href="#accb1637c58e1523f740025e0d0e7c6dd">&#9670;&nbsp;</a></span>CalculateSlotOptionForInput()</h2>
8351
8352<div class="memitem">
8353<div class="memproto">
8354 <table class="memname">
8355 <tr>
8356 <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForInput </td>
8357 <td>(</td>
8358 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8359 <td class="paramname"><em>backends</em>, </td>
8360 </tr>
8361 <tr>
8362 <td class="paramkey"></td>
8363 <td></td>
8364 <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;&#160;</td>
8365 <td class="paramname"><em>slot</em>, </td>
8366 </tr>
8367 <tr>
8368 <td class="paramkey"></td>
8369 <td></td>
8370 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8371 <td class="paramname"><em>registry</em>&#160;</td>
8372 </tr>
8373 <tr>
8374 <td></td>
8375 <td>)</td>
8376 <td></td><td></td>
8377 </tr>
8378 </table>
8379</div><div class="memdoc">
8380
8381<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00463">463</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
8382
8383<p class="reference">References <a class="el" href="_memory_sources_8hpp_source.html#l00047">CheckFlag()</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.html#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00061">ITensorHandleFactory::GetImportFlags()</a>, <a class="el" href="_layer_8hpp_source.html#l00115">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>.</p>
8384
8385<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
8386<div class="fragment"><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; Layer&amp; layer = slot.GetOwningLayer();</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; BOOST_ASSERT(layer.GetType() == LayerType::Input);</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"> 470</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="l00471"></a><span class="lineno"> 471</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="l00472"></a><span class="lineno"> 472</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="l00473"></a><span class="lineno"> 473</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="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">auto</span> frmBackend = backends.find(layer.GetBackendId());</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</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"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</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="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// fewest copies.</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordtype">int</span> topScore = 0;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">ITensorHandleFactory::FactoryId</a> topChoice = ITensorHandleFactory::LegacyFactoryId;</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"> 489</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : slot.GetConnections())</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span> (!toBackend-&gt;second.get()-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</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="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</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"> 505</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="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// support either the map/unmap API or Import API</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; ITensorHandleFactory* factory = registry.GetFactory(dst);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">if</span> (!factory-&gt;SupportsMapUnmap() &amp;&amp;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; !<a class="code" href="namespacearmnn.html#a84f86b4de5adf0b164e811c87051a0ee">CheckFlag</a>(factory-&gt;GetImportFlags(), MemorySource::Malloc)) <span class="comment">// Just support cpu mem imports for now</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</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="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">// strategy, move to the next one</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">continue</span>;</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"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keyword">auto</span> it = factoryScores.find(dst);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span> (it == factoryScores.end())</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; <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; factoryScores[dst] = 0;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (topChoice == ITensorHandleFactory::LegacyFactoryId)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; topChoice = dst;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// Increase the score</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; factoryScores[dst]++;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// Track the best option</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (factoryScores[dst] &gt; topScore)</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; topScore = factoryScores[dst];</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; topChoice = dst;</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"> 537</span>&#160; }</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; }</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; <span class="keywordflow">return</span> topChoice;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a84f86b4de5adf0b164e811c87051a0ee"><div class="ttname"><a href="namespacearmnn.html#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.html#l00047">MemorySources.hpp:47</a></div></div>
8387<div class="ttc" id="namespacearmnn_html_a947e07902b1b5d98b57eeae34053146b"><div class="ttname"><a href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">armnn::FactoryId</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId FactoryId</div><div class="ttdef"><b>Definition:</b> <a href="_cl_tensor_handle_factory_8cpp_source.html#l00020">ClTensorHandleFactory.cpp:20</a></div></div>
8388</div><!-- fragment -->
8389</div>
8390</div>
8391<a id="ab46c7f5f4736d550ab0e5e05a0fff4a9"></a>
8392<h2 class="memtitle"><span class="permalink"><a href="#ab46c7f5f4736d550ab0e5e05a0fff4a9">&#9670;&nbsp;</a></span>CalculateSlotOptionForOutput()</h2>
8393
8394<div class="memitem">
8395<div class="memproto">
8396 <table class="memname">
8397 <tr>
8398 <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForOutput </td>
8399 <td>(</td>
8400 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8401 <td class="paramname"><em>backends</em>, </td>
8402 </tr>
8403 <tr>
8404 <td class="paramkey"></td>
8405 <td></td>
8406 <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.html">OutputSlot</a> &amp;&#160;</td>
8407 <td class="paramname"><em>slot</em>, </td>
8408 </tr>
8409 <tr>
8410 <td class="paramkey"></td>
8411 <td></td>
8412 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8413 <td class="paramname"><em>registry</em>&#160;</td>
8414 </tr>
8415 <tr>
8416 <td></td>
8417 <td>)</td>
8418 <td></td><td></td>
8419 </tr>
8420 </table>
8421</div><div class="memdoc">
8422
8423<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00545">545</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
8424
8425<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00023">ITensorHandleFactory::DeferredFactoryId</a>.</p>
8426
8427<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
8428<div class="fragment"><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;{</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; boost::ignore_unused(backends, slot, registry);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::DeferredFactoryId;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;}</div></div><!-- fragment -->
8429</div>
8430</div>
8431<a id="a84f86b4de5adf0b164e811c87051a0ee"></a>
8432<h2 class="memtitle"><span class="permalink"><a href="#a84f86b4de5adf0b164e811c87051a0ee">&#9670;&nbsp;</a></span>CheckFlag()</h2>
8433
8434<div class="memitem">
8435<div class="memproto">
8436<table class="mlabels">
8437 <tr>
8438 <td class="mlabels-left">
8439 <table class="memname">
8440 <tr>
8441 <td class="memname">bool armnn::CheckFlag </td>
8442 <td>(</td>
8443 <td class="paramtype"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td>
8444 <td class="paramname"><em>flags</em>, </td>
8445 </tr>
8446 <tr>
8447 <td class="paramkey"></td>
8448 <td></td>
8449 <td class="paramtype"><a class="el" href="namespacearmnn.html#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a>&#160;</td>
8450 <td class="paramname"><em>source</em>&#160;</td>
8451 </tr>
8452 <tr>
8453 <td></td>
8454 <td>)</td>
8455 <td></td><td></td>
8456 </tr>
8457 </table>
8458 </td>
8459 <td class="mlabels-right">
8460<span class="mlabels"><span class="mlabel">inline</span></span> </td>
8461 </tr>
8462</table>
8463</div><div class="memdoc">
8464
8465<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00047">47</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
8466
8467<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00463">CalculateSlotOptionForInput()</a>, and <a class="el" href="_loaded_network_8cpp_source.html#l00412">LoadedNetwork::EnqueueWorkload()</a>.</p>
8468<div class="fragment"><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; <span class="keywordflow">return</span> (static_cast&lt;MemorySourceFlags&gt;(source) &amp; flags) != 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div></div><!-- fragment -->
8469</div>
8470</div>
8471<a id="a5a38bd982292180692711b0ae296bb34"></a>
8472<h2 class="memtitle"><span class="permalink"><a href="#a5a38bd982292180692711b0ae296bb34">&#9670;&nbsp;</a></span>CheckLayerBindingId()</h2>
8473
8474<div class="memitem">
8475<div class="memproto">
8476 <table class="memname">
8477 <tr>
8478 <td class="memname">void armnn::CheckLayerBindingId </td>
8479 <td>(</td>
8480 <td class="paramtype"><a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
8481 <td class="paramname"><em>visitorId</em>, </td>
8482 </tr>
8483 <tr>
8484 <td class="paramkey"></td>
8485 <td></td>
8486 <td class="paramtype"><a class="el" href="namespacearmnn.html#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
8487 <td class="paramname"><em>id</em>&#160;</td>
8488 </tr>
8489 <tr>
8490 <td></td>
8491 <td>)</td>
8492 <td></td><td></td>
8493 </tr>
8494 </table>
8495</div><div class="memdoc">
8496
8497<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html#l00013">13</a> of file <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html">TestInputOutputLayerVisitor.hpp</a>.</p>
8498
8499<p class="reference">Referenced by <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html#l00030">TestInputLayerVisitor::VisitInputLayer()</a>, and <a class="el" href="_test_input_output_layer_visitor_8hpp_source.html#l00051">TestOutputLayerVisitor::VisitOutputLayer()</a>.</p>
8500<div class="fragment"><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; BOOST_CHECK_EQUAL(visitorId, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;}</div></div><!-- fragment -->
8501</div>
8502</div>
8503<a id="af002111f64aee648e3258247075cae36"></a>
8504<h2 class="memtitle"><span class="permalink"><a href="#af002111f64aee648e3258247075cae36">&#9670;&nbsp;</a></span>CheckScaleSetOnQuantizedType()</h2>
8505
8506<div class="memitem">
8507<div class="memproto">
8508 <table class="memname">
8509 <tr>
8510 <td class="memname">bool armnn::CheckScaleSetOnQuantizedType </td>
8511 <td>(</td>
8512 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> *&#160;</td>
8513 <td class="paramname"><em>layer</em>, </td>
8514 </tr>
8515 <tr>
8516 <td class="paramkey"></td>
8517 <td></td>
8518 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
8519 <td class="paramname"><em>errMessages</em>&#160;</td>
8520 </tr>
8521 <tr>
8522 <td></td>
8523 <td>)</td>
8524 <td></td><td></td>
8525 </tr>
8526 </table>
8527</div><div class="memdoc">
8528
8529<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00098">98</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
8530
8531<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_internal_types_8cpp_source.html#l00013">GetLayerTypeAsCString()</a>, <a class="el" href="_layer_8hpp_source.html#l00216">Layer::GetNameStr()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="_network_8cpp_source.html#l00074">ReportError()</a>, <a class="el" href="_tensor_8cpp_source.html#l00275">TensorInfo::SetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>, <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
8532
8533<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>.</p>
8534<div class="fragment"><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; <span class="keywordtype">bool</span> noErrors = <span class="keyword">true</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = layer-&gt;GetNumOutputSlots();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</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="l00103"></a><span class="lineno"> 103</span>&#160; OutputSlot&amp; outputSlot = layer-&gt;GetOutputSlot(i);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = outputSlot.GetTensorInfo();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> (DataType::QAsymmU8 == info.GetDataType()) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (0.f == info.GetQuantizationScale()) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; noErrors = <span class="keyword">false</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</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.html#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; layer-&gt;GetNameStr() &lt;&lt; <span class="stringliteral">&quot;) is of type&quot;</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(ss.str(), errMessages);</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; <span class="comment">// Softmax under QuantisedAsymm8 must always be scale (1.0f/256.0f) and offset 0</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> ((info.GetQuantizationScale() != (1.0f / 256.0f) ||</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; info.GetQuantizationOffset() != 0) &amp;&amp;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; layer-&gt;GetType() == <a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a>)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</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="l00121"></a><span class="lineno"> 121</span>&#160; info.GetQuantizationScale() &lt;&lt; <span class="stringliteral">&quot; and Offset: &quot;</span> &lt;&lt; info.GetQuantizationOffset() &lt;&lt;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</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="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; ss.str();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; info.SetQuantizationScale((1.0f /256.0f));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; info.SetQuantizationOffset(0);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; outputSlot.SetTensorInfo(info);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</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; <span class="keywordflow">return</span> noErrors;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9da573d7a1fc03726fd41f2130cbcf92"><div class="ttname"><a href="namespacearmnn.html#a9da573d7a1fc03726fd41f2130cbcf92">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">char const * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.html#l00013">InternalTypes.cpp:13</a></div></div>
8535<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8536<div class="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
8537<div class="ttc" id="namespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a></div></div>
8538<div class="ttc" id="namespacearmnn_html_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.html#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.html#l00074">Network.cpp:74</a></div></div>
8539</div><!-- fragment -->
8540</div>
8541</div>
8542<a id="acea2d8c53b441e24b6d60b090fda37c9"></a>
8543<h2 class="memtitle"><span class="permalink"><a href="#acea2d8c53b441e24b6d60b090fda37c9">&#9670;&nbsp;</a></span>CheckSupportRule()</h2>
8544
8545<div class="memitem">
8546<div class="memproto">
8547 <table class="memname">
8548 <tr>
8549 <td class="memname">bool armnn::CheckSupportRule </td>
8550 <td>(</td>
8551 <td class="paramtype">F&#160;</td>
8552 <td class="paramname"><em>rule</em>, </td>
8553 </tr>
8554 <tr>
8555 <td class="paramkey"></td>
8556 <td></td>
8557 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
8558 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
8559 </tr>
8560 <tr>
8561 <td class="paramkey"></td>
8562 <td></td>
8563 <td class="paramtype">const char *&#160;</td>
8564 <td class="paramname"><em>reason</em>&#160;</td>
8565 </tr>
8566 <tr>
8567 <td></td>
8568 <td>)</td>
8569 <td></td><td></td>
8570 </tr>
8571 </table>
8572</div><div class="memdoc">
8573
8574<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00037">37</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
8575
8576<p class="reference">References <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
8577
8578<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.html#l00074">RefLayerSupport::IsActivationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00139">RefLayerSupport::IsAdditionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00175">RefLayerSupport::IsArgMinMaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00199">RefLayerSupport::IsBatchNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00244">RefLayerSupport::IsBatchToSpaceNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00292">RefLayerSupport::IsComparisonSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00321">RefLayerSupport::IsConcatSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00353">RefLayerSupport::IsConstantSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00410">RefLayerSupport::IsConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00481">RefLayerSupport::IsDebugSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00510">RefLayerSupport::IsDepthToSpaceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00538">RefLayerSupport::IsDepthwiseConvolutionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00609">RefLayerSupport::IsDequantizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00646">RefLayerSupport::IsDetectionPostProcessSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00686">RefLayerSupport::IsDivisionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00721">RefLayerSupport::IsElementwiseUnarySupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00766">RefLayerSupport::IsFakeQuantizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00784">RefLayerSupport::IsFloorSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00807">RefLayerSupport::IsFullyConnectedSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00865">RefLayerSupport::IsGatherSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00912">RefLayerSupport::IsInstanceNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00943">RefLayerSupport::IsL2NormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00976">RefLayerSupport::IsLogSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01002">RefLayerSupport::IsLstmSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01112">RefLayerSupport::IsMaximumSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01148">RefLayerSupport::IsMeanSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01217">RefLayerSupport::IsMemCopySupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01244">RefLayerSupport::IsMinimumSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01279">RefLayerSupport::IsMultiplicationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01315">RefLayerSupport::IsNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01352">RefLayerSupport::IsPadSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01381">RefLayerSupport::IsPermuteSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01409">RefLayerSupport::IsPooling2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01813">RefLayerSupport::IsPreluSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01439">RefLayerSupport::IsQuantizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01474">RefLayerSupport::IsReshapeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01496">RefLayerSupport::IsResizeBilinearSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01521">RefLayerSupport::IsResizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01559">RefLayerSupport::IsSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01586">RefLayerSupport::IsSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01615">RefLayerSupport::IsSpaceToBatchNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01642">RefLayerSupport::IsSpaceToDepthSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01671">RefLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01720">RefLayerSupport::IsStackSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01751">RefLayerSupport::IsStridedSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l01778">RefLayerSupport::IsSubtractionSupported()</a>, and <a class="el" href="_ref_layer_support_8cpp_source.html#l01846">RefLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
8579<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a> = rule();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (!supported &amp;&amp; reason)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; reasonIfUnsupported.value() += std::string(reason) + <span class="stringliteral">&quot;\n&quot;</span>; <span class="comment">// Append the reason on a new line</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">supported</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a02847c99a2acae3b267615479f93ab55"><div class="ttname"><a href="namespacearmnn.html#a02847c99a2acae3b267615479f93ab55">armnn::supported</a></div><div class="ttdeci">ISubgraphViewConverter supported</div><div class="ttdef"><b>Definition:</b> <a href="_i_subgraph_view_converter_8hpp_source.html#l00031">ISubgraphViewConverter.hpp:31</a></div></div>
8580</div><!-- fragment -->
8581</div>
8582</div>
8583<a id="ac7cce6c8c3c53b2feeba6548fc3fb00c"></a>
8584<h2 class="memtitle"><span class="permalink"><a href="#ac7cce6c8c3c53b2feeba6548fc3fb00c">&#9670;&nbsp;</a></span>CheckTensorDataTypesEqual()</h2>
8585
8586<div class="memitem">
8587<div class="memproto">
8588 <table class="memname">
8589 <tr>
8590 <td class="memname">bool armnn::CheckTensorDataTypesEqual </td>
8591 <td>(</td>
8592 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8593 <td class="paramname"><em>input0</em>, </td>
8594 </tr>
8595 <tr>
8596 <td class="paramkey"></td>
8597 <td></td>
8598 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8599 <td class="paramname"><em>input1</em>&#160;</td>
8600 </tr>
8601 <tr>
8602 <td></td>
8603 <td>)</td>
8604 <td></td><td></td>
8605 </tr>
8606 </table>
8607</div><div class="memdoc">
8608
8609<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00064">64</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
8610
8611<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
8612
8613<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00079">IsAdditionSupported()</a>.</p>
8614<div class="fragment"><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> input0.GetDataType() == input1.GetDataType();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
8615</div>
8616</div>
8617<a id="a1391582cd6e145b67c98f3410667968e"></a>
8618<h2 class="memtitle"><span class="permalink"><a href="#a1391582cd6e145b67c98f3410667968e">&#9670;&nbsp;</a></span>ClAbsWorkloadValidate()</h2>
8619
8620<div class="memitem">
8621<div class="memproto">
8622 <table class="memname">
8623 <tr>
8624 <td class="memname">arm_compute::Status ClAbsWorkloadValidate </td>
8625 <td>(</td>
8626 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8627 <td class="paramname"><em>input</em>, </td>
8628 </tr>
8629 <tr>
8630 <td class="paramkey"></td>
8631 <td></td>
8632 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8633 <td class="paramname"><em>output</em>&#160;</td>
8634 </tr>
8635 <tr>
8636 <td></td>
8637 <td>)</td>
8638 <td></td><td></td>
8639 </tr>
8640 </table>
8641</div><div class="memdoc">
8642
8643<p class="definition">Definition at line <a class="el" href="_cl_abs_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_abs_workload_8cpp_source.html">ClAbsWorkload.cpp</a>.</p>
8644
8645<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00400">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
8646<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLAbsLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
8647</div>
8648</div>
8649<a id="a42ef3cee193102dc7755193579209cca"></a>
8650<h2 class="memtitle"><span class="permalink"><a href="#a42ef3cee193102dc7755193579209cca">&#9670;&nbsp;</a></span>ClActivationWorkloadValidate()</h2>
8651
8652<div class="memitem">
8653<div class="memproto">
8654 <table class="memname">
8655 <tr>
8656 <td class="memname">arm_compute::Status ClActivationWorkloadValidate </td>
8657 <td>(</td>
8658 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8659 <td class="paramname"><em>input</em>, </td>
8660 </tr>
8661 <tr>
8662 <td class="paramkey"></td>
8663 <td></td>
8664 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8665 <td class="paramname"><em>output</em>, </td>
8666 </tr>
8667 <tr>
8668 <td class="paramkey"></td>
8669 <td></td>
8670 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
8671 <td class="paramname"><em>descriptor</em>&#160;</td>
8672 </tr>
8673 <tr>
8674 <td></td>
8675 <td>)</td>
8676 <td></td><td></td>
8677 </tr>
8678 </table>
8679</div><div class="memdoc">
8680
8681<p class="definition">Definition at line <a class="el" href="_cl_activation_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_activation_workload_8cpp_source.html">ClActivationWorkload.cpp</a>.</p>
8682
8683<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00160">ClLayerSupport::IsActivationSupported()</a>.</p>
8684<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::ActivationLayerInfo activationLayerInfo =</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a>(descriptor);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::CLActivationLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; activationLayerInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad701d0d29baa4266ab4d33b090aa661c"><div class="ttname"><a href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">armnn::ConvertActivationDescriptorToAclActivationLayerInfo</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo ConvertActivationDescriptorToAclActivationLayerInfo(const ActivationDescriptor &amp;actDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00073">ArmComputeUtils.hpp:73</a></div></div>
8685</div><!-- fragment -->
8686</div>
8687</div>
8688<a id="aefc82adf365ff14b0095dafdd2df6afc"></a>
8689<h2 class="memtitle"><span class="permalink"><a href="#aefc82adf365ff14b0095dafdd2df6afc">&#9670;&nbsp;</a></span>ClAdditionValidate()</h2>
8690
8691<div class="memitem">
8692<div class="memproto">
8693 <table class="memname">
8694 <tr>
8695 <td class="memname">arm_compute::Status ClAdditionValidate </td>
8696 <td>(</td>
8697 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8698 <td class="paramname"><em>input0</em>, </td>
8699 </tr>
8700 <tr>
8701 <td class="paramkey"></td>
8702 <td></td>
8703 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8704 <td class="paramname"><em>input1</em>, </td>
8705 </tr>
8706 <tr>
8707 <td class="paramkey"></td>
8708 <td></td>
8709 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8710 <td class="paramname"><em>output</em>&#160;</td>
8711 </tr>
8712 <tr>
8713 <td></td>
8714 <td>)</td>
8715 <td></td><td></td>
8716 </tr>
8717 </table>
8718</div><div class="memdoc">
8719
8720<p class="definition">Definition at line <a class="el" href="_cl_addition_workload_8cpp_source.html#l00038">38</a> of file <a class="el" href="_cl_addition_workload_8cpp_source.html">ClAdditionWorkload.cpp</a>.</p>
8721
8722<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00172">ClLayerSupport::IsAdditionSupported()</a>.</p>
8723<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLArithmeticAddition::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; g_AclConvertPolicy);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
8724</div><!-- fragment -->
8725</div>
8726</div>
8727<a id="ab80423b306d8e0436b9a316922911d4d"></a>
8728<h2 class="memtitle"><span class="permalink"><a href="#ab80423b306d8e0436b9a316922911d4d">&#9670;&nbsp;</a></span>ClArgMinMaxWorkloadValidate()</h2>
8729
8730<div class="memitem">
8731<div class="memproto">
8732 <table class="memname">
8733 <tr>
8734 <td class="memname">arm_compute::Status ClArgMinMaxWorkloadValidate </td>
8735 <td>(</td>
8736 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8737 <td class="paramname"><em>input</em>, </td>
8738 </tr>
8739 <tr>
8740 <td class="paramkey"></td>
8741 <td></td>
8742 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8743 <td class="paramname"><em>output</em>, </td>
8744 </tr>
8745 <tr>
8746 <td class="paramkey"></td>
8747 <td></td>
8748 <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;&#160;</td>
8749 <td class="paramname"><em>descriptor</em>&#160;</td>
8750 </tr>
8751 <tr>
8752 <td></td>
8753 <td>)</td>
8754 <td></td><td></td>
8755 </tr>
8756 </table>
8757</div><div class="memdoc">
8758
8759<p class="definition">Definition at line <a class="el" href="_cl_arg_min_max_workload_8cpp_source.html#l00030">30</a> of file <a class="el" href="_cl_arg_min_max_workload_8cpp_source.html">ClArgMinMaxWorkload.cpp</a>.</p>
8760
8761<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00184">ClLayerSupport::IsArgMinMaxSupported()</a>.</p>
8762<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">auto</span> numDims = input.GetNumDimensions();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">auto</span> unsignedAxis = <a class="code" href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(numDims, descriptor.m_Axis);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">int</span> aclAxis = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(CalcAclAxis(numDims, unsignedAxis));</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"> 41</span>&#160; <span class="keywordflow">if</span> (descriptor.m_Function == ArgMinMaxFunction::Max)</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; <span class="keywordflow">return</span> arm_compute::CLArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MAX);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MIN);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00127">TensorUtils.cpp:127</a></div></div>
8763</div><!-- fragment -->
8764</div>
8765</div>
8766<a id="adfe10e7086e3e3b98927cf84aee03dd0"></a>
8767<h2 class="memtitle"><span class="permalink"><a href="#adfe10e7086e3e3b98927cf84aee03dd0">&#9670;&nbsp;</a></span>ClBackendId()</h2>
8768
8769<div class="memitem">
8770<div class="memproto">
8771 <table class="memname">
8772 <tr>
8773 <td class="memname">constexpr const char* armnn::ClBackendId </td>
8774 <td>(</td>
8775 <td class="paramname"></td><td>)</td>
8776 <td></td>
8777 </tr>
8778 </table>
8779</div><div class="memdoc">
8780
8781<p class="definition">Definition at line <a class="el" href="_cl_backend_id_8hpp_source.html#l00010">10</a> of file <a class="el" href="_cl_backend_id_8hpp_source.html">ClBackendId.hpp</a>.</p>
8782
8783<p class="reference">Referenced by <a class="el" href="_cl_backend_8cpp_source.html#l00029">ClBackend::GetIdStatic()</a>.</p>
8784<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;GpuAcc&quot;</span>; }</div></div><!-- fragment -->
8785</div>
8786</div>
8787<a id="ad6cb42ca5150bb96c151e4a4e6557d70"></a>
8788<h2 class="memtitle"><span class="permalink"><a href="#ad6cb42ca5150bb96c151e4a4e6557d70">&#9670;&nbsp;</a></span>ClBatchNormalizationValidate()</h2>
8789
8790<div class="memitem">
8791<div class="memproto">
8792 <table class="memname">
8793 <tr>
8794 <td class="memname">arm_compute::Status ClBatchNormalizationValidate </td>
8795 <td>(</td>
8796 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8797 <td class="paramname"><em>input</em>, </td>
8798 </tr>
8799 <tr>
8800 <td class="paramkey"></td>
8801 <td></td>
8802 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8803 <td class="paramname"><em>output</em>, </td>
8804 </tr>
8805 <tr>
8806 <td class="paramkey"></td>
8807 <td></td>
8808 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8809 <td class="paramname"><em>mean</em>, </td>
8810 </tr>
8811 <tr>
8812 <td class="paramkey"></td>
8813 <td></td>
8814 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8815 <td class="paramname"><em>var</em>, </td>
8816 </tr>
8817 <tr>
8818 <td class="paramkey"></td>
8819 <td></td>
8820 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8821 <td class="paramname"><em>beta</em>, </td>
8822 </tr>
8823 <tr>
8824 <td class="paramkey"></td>
8825 <td></td>
8826 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8827 <td class="paramname"><em>gamma</em>, </td>
8828 </tr>
8829 <tr>
8830 <td class="paramkey"></td>
8831 <td></td>
8832 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;&#160;</td>
8833 <td class="paramname"><em>desc</em>&#160;</td>
8834 </tr>
8835 <tr>
8836 <td></td>
8837 <td>)</td>
8838 <td></td><td></td>
8839 </tr>
8840 </table>
8841</div><div class="memdoc">
8842
8843<p class="definition">Definition at line <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.html">ClBatchNormalizationFloatWorkload.cpp</a>.</p>
8844
8845<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00197">ClLayerSupport::IsBatchNormalizationSupported()</a>.</p>
8846<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(input, desc.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(output, desc.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclMeanInfo =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(mean, desc.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclVarInfo =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(var, desc.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBetaInfo =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(beta, desc.m_DataLayout);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclGammaInfo =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(gamma, desc.m_DataLayout);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> arm_compute::CLBatchNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; &amp;aclMeanInfo,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclVarInfo,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclBetaInfo,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclGammaInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; desc.m_Eps);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div></div><!-- fragment -->
8847</div>
8848</div>
8849<a id="a67957983877fb2c720a2ad7f88c45a3c"></a>
8850<h2 class="memtitle"><span class="permalink"><a href="#a67957983877fb2c720a2ad7f88c45a3c">&#9670;&nbsp;</a></span>ClBatchToSpaceNdWorkloadValidate()</h2>
8851
8852<div class="memitem">
8853<div class="memproto">
8854 <table class="memname">
8855 <tr>
8856 <td class="memname">arm_compute::Status ClBatchToSpaceNdWorkloadValidate </td>
8857 <td>(</td>
8858 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8859 <td class="paramname"><em>input</em>, </td>
8860 </tr>
8861 <tr>
8862 <td class="paramkey"></td>
8863 <td></td>
8864 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8865 <td class="paramname"><em>output</em>, </td>
8866 </tr>
8867 <tr>
8868 <td class="paramkey"></td>
8869 <td></td>
8870 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
8871 <td class="paramname"><em>desc</em>&#160;</td>
8872 </tr>
8873 <tr>
8874 <td></td>
8875 <td>)</td>
8876 <td></td><td></td>
8877 </tr>
8878 </table>
8879</div><div class="memdoc">
8880
8881<p class="definition">Definition at line <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.html#l00045">45</a> of file <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.html">ClBatchToSpaceNdWorkload.cpp</a>.</p>
8882
8883<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00684">BatchToSpaceNdDescriptor::m_DataLayout</a>.</p>
8884
8885<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00217">ClLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
8886<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[0]);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[1]);</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; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLBatchToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; blockWidth,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; blockHeight,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
8887<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
8888</div><!-- fragment -->
8889</div>
8890</div>
8891<a id="a7782f0809076f14363eacb4a38964b9f"></a>
8892<h2 class="memtitle"><span class="permalink"><a href="#a7782f0809076f14363eacb4a38964b9f">&#9670;&nbsp;</a></span>ClConcatWorkloadValidate()</h2>
8893
8894<div class="memitem">
8895<div class="memproto">
8896 <table class="memname">
8897 <tr>
8898 <td class="memname">arm_compute::Status ClConcatWorkloadValidate </td>
8899 <td>(</td>
8900 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
8901 <td class="paramname"><em>inputs</em>, </td>
8902 </tr>
8903 <tr>
8904 <td class="paramkey"></td>
8905 <td></td>
8906 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8907 <td class="paramname"><em>output</em>, </td>
8908 </tr>
8909 <tr>
8910 <td class="paramkey"></td>
8911 <td></td>
8912 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
8913 <td class="paramname"><em>descriptor</em>&#160;</td>
8914 </tr>
8915 <tr>
8916 <td></td>
8917 <td>)</td>
8918 <td></td><td></td>
8919 </tr>
8920 </table>
8921</div><div class="memdoc">
8922
8923<p class="definition">Definition at line <a class="el" href="_cl_concat_workload_8cpp_source.html#l00029">29</a> of file <a class="el" href="_cl_concat_workload_8cpp_source.html">ClConcatWorkload.cpp</a>.</p>
8924
8925<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00247">ClLayerSupport::IsConcatSupported()</a>.</p>
8926<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; aclInputs.emplace_back(aclInputInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</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; aclInputPtrs.emplace_back(&amp;input);</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"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">size_t</span> aclAxis = CalcAxis(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::CLConcatenateLayer::validate(aclInputPtrs, &amp;aclOutputInfo, aclAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
8927</div><!-- fragment -->
8928</div>
8929</div>
8930<a id="a46efae0191388fd33db4e95c5d79e2be"></a>
8931<h2 class="memtitle"><span class="permalink"><a href="#a46efae0191388fd33db4e95c5d79e2be">&#9670;&nbsp;</a></span>ClConvertFp16ToFp32WorkloadValidate()</h2>
8932
8933<div class="memitem">
8934<div class="memproto">
8935 <table class="memname">
8936 <tr>
8937 <td class="memname">arm_compute::Status ClConvertFp16ToFp32WorkloadValidate </td>
8938 <td>(</td>
8939 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8940 <td class="paramname"><em>input</em>, </td>
8941 </tr>
8942 <tr>
8943 <td class="paramkey"></td>
8944 <td></td>
8945 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8946 <td class="paramname"><em>output</em>&#160;</td>
8947 </tr>
8948 <tr>
8949 <td></td>
8950 <td>)</td>
8951 <td></td><td></td>
8952 </tr>
8953 </table>
8954</div><div class="memdoc">
8955
8956<p class="definition">Definition at line <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.html#l00035">35</a> of file <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.html">ClConvertFp16ToFp32Workload.cpp</a>.</p>
8957
8958<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
8959
8960<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00297">ClLayerSupport::IsConvertFp16ToFp32Supported()</a>.</p>
8961<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (input.GetDataType() != DataType::Float16)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Input should be Float16&quot;</span>);</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"> 41</span>&#160; <span class="keywordflow">if</span> (output.GetDataType() != DataType::Float32)</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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Output should be Float32&quot;</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"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthConvertLayer::validate(</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclInputInfo, &amp;aclOutputInfo, g_AclConvertPolicy, 0);</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> aclStatus;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
8962</div><!-- fragment -->
8963</div>
8964</div>
8965<a id="a37f6946bfb7a9c7d64881b7a2e13945f"></a>
8966<h2 class="memtitle"><span class="permalink"><a href="#a37f6946bfb7a9c7d64881b7a2e13945f">&#9670;&nbsp;</a></span>ClConvertFp32ToFp16WorkloadValidate()</h2>
8967
8968<div class="memitem">
8969<div class="memproto">
8970 <table class="memname">
8971 <tr>
8972 <td class="memname">arm_compute::Status ClConvertFp32ToFp16WorkloadValidate </td>
8973 <td>(</td>
8974 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8975 <td class="paramname"><em>input</em>, </td>
8976 </tr>
8977 <tr>
8978 <td class="paramkey"></td>
8979 <td></td>
8980 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
8981 <td class="paramname"><em>output</em>&#160;</td>
8982 </tr>
8983 <tr>
8984 <td></td>
8985 <td>)</td>
8986 <td></td><td></td>
8987 </tr>
8988 </table>
8989</div><div class="memdoc">
8990
8991<p class="definition">Definition at line <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.html#l00035">35</a> of file <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.html">ClConvertFp32ToFp16Workload.cpp</a>.</p>
8992
8993<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
8994
8995<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00307">ClLayerSupport::IsConvertFp32ToFp16Supported()</a>.</p>
8996<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (input.GetDataType() != DataType::Float32)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Input should be Float32&quot;</span>);</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"> 41</span>&#160; <span class="keywordflow">if</span> (output.GetDataType() != DataType::Float16)</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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Output should be Float16&quot;</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"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthConvertLayer::validate(</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclInputInfo, &amp;aclOutputInfo, g_AclConvertPolicy, 0);</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> aclStatus;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
8997</div><!-- fragment -->
8998</div>
8999</div>
9000<a id="acd1146eb56f1473a0bf4561bcc1d1529"></a>
9001<h2 class="memtitle"><span class="permalink"><a href="#acd1146eb56f1473a0bf4561bcc1d1529">&#9670;&nbsp;</a></span>ClConvolution2dWorkloadValidate()</h2>
9002
9003<div class="memitem">
9004<div class="memproto">
9005 <table class="memname">
9006 <tr>
9007 <td class="memname">arm_compute::Status ClConvolution2dWorkloadValidate </td>
9008 <td>(</td>
9009 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9010 <td class="paramname"><em>input</em>, </td>
9011 </tr>
9012 <tr>
9013 <td class="paramkey"></td>
9014 <td></td>
9015 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9016 <td class="paramname"><em>output</em>, </td>
9017 </tr>
9018 <tr>
9019 <td class="paramkey"></td>
9020 <td></td>
9021 <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;&#160;</td>
9022 <td class="paramname"><em>descriptor</em>, </td>
9023 </tr>
9024 <tr>
9025 <td class="paramkey"></td>
9026 <td></td>
9027 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9028 <td class="paramname"><em>weights</em>, </td>
9029 </tr>
9030 <tr>
9031 <td class="paramkey"></td>
9032 <td></td>
9033 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
9034 <td class="paramname"><em>biases</em>&#160;</td>
9035 </tr>
9036 <tr>
9037 <td></td>
9038 <td>)</td>
9039 <td></td><td></td>
9040 </tr>
9041 </table>
9042</div><div class="memdoc">
9043
9044<p class="definition">Definition at line <a class="el" href="_cl_convolution2d_workload_8cpp_source.html#l00023">23</a> of file <a class="el" href="_cl_convolution2d_workload_8cpp_source.html">ClConvolution2dWorkload.cpp</a>.</p>
9045
9046<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00317">ClLayerSupport::IsConvolution2dSupported()</a>.</p>
9047<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; descriptor.m_DilationY);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</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"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</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; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</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; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</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; <span class="keywordflow">return</span> arm_compute::CLConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; layerInfo,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; arm_compute::WeightsInfo(),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div></div><!-- fragment -->
9048</div>
9049</div>
9050<a id="a5634af98b603236c6748adb5ac92e766"></a>
9051<h2 class="memtitle"><span class="permalink"><a href="#a5634af98b603236c6748adb5ac92e766">&#9670;&nbsp;</a></span>ClDepthToSpaceWorkloadValidate()</h2>
9052
9053<div class="memitem">
9054<div class="memproto">
9055 <table class="memname">
9056 <tr>
9057 <td class="memname">arm_compute::Status ClDepthToSpaceWorkloadValidate </td>
9058 <td>(</td>
9059 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9060 <td class="paramname"><em>input</em>, </td>
9061 </tr>
9062 <tr>
9063 <td class="paramkey"></td>
9064 <td></td>
9065 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9066 <td class="paramname"><em>output</em>, </td>
9067 </tr>
9068 <tr>
9069 <td class="paramkey"></td>
9070 <td></td>
9071 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
9072 <td class="paramname"><em>desc</em>&#160;</td>
9073 </tr>
9074 <tr>
9075 <td></td>
9076 <td>)</td>
9077 <td></td><td></td>
9078 </tr>
9079 </table>
9080</div><div class="memdoc">
9081
9082<p class="definition">Definition at line <a class="el" href="_cl_depth_to_space_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_cl_depth_to_space_workload_8cpp_source.html">ClDepthToSpaceWorkload.cpp</a>.</p>
9083
9084<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
9085
9086<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00343">ClLayerSupport::IsDepthToSpaceSupported()</a>.</p>
9087<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</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; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockSize);</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="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; blockSize);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
9088<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
9089</div><!-- fragment -->
9090</div>
9091</div>
9092<a id="a4ec5dfcb3e419ddce1fcb3b799f312e1"></a>
9093<h2 class="memtitle"><span class="permalink"><a href="#a4ec5dfcb3e419ddce1fcb3b799f312e1">&#9670;&nbsp;</a></span>ClDepthwiseConvolutionWorkloadValidate()</h2>
9094
9095<div class="memitem">
9096<div class="memproto">
9097 <table class="memname">
9098 <tr>
9099 <td class="memname">arm_compute::Status ClDepthwiseConvolutionWorkloadValidate </td>
9100 <td>(</td>
9101 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9102 <td class="paramname"><em>input</em>, </td>
9103 </tr>
9104 <tr>
9105 <td class="paramkey"></td>
9106 <td></td>
9107 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9108 <td class="paramname"><em>output</em>, </td>
9109 </tr>
9110 <tr>
9111 <td class="paramkey"></td>
9112 <td></td>
9113 <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
9114 <td class="paramname"><em>descriptor</em>, </td>
9115 </tr>
9116 <tr>
9117 <td class="paramkey"></td>
9118 <td></td>
9119 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9120 <td class="paramname"><em>weights</em>, </td>
9121 </tr>
9122 <tr>
9123 <td class="paramkey"></td>
9124 <td></td>
9125 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
9126 <td class="paramname"><em>biases</em>&#160;</td>
9127 </tr>
9128 <tr>
9129 <td></td>
9130 <td>)</td>
9131 <td></td><td></td>
9132 </tr>
9133 </table>
9134</div><div class="memdoc">
9135
9136<p class="definition">Definition at line <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html">ClDepthwiseConvolutionWorkload.cpp</a>.</p>
9137
9138<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00355">ClLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_cl_layer_support_8cpp_source.html#l00371">ClLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
9139<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// ArmNN&#39;s weight format is [ M, I, H, W ]</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclDepthMultiplier = weights.GetShape()[0];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; TensorInfo weightsPermuted = <a class="code" href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a>(weights, descriptor.m_DataLayout);</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; <span class="comment">// Convert the weights into the compute library format</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weightsPermuted, descriptor.m_DataLayout);</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; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; BOOST_ASSERT(biases.has_value());</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"> 50</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</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; <span class="keyword">const</span> arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; descriptor.m_DilationX,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; descriptor.m_DilationY);</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> arm_compute::CLDepthwiseConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; aclPadStrideInfo,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; aclDepthMultiplier,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; arm_compute::ActivationLayerInfo(),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; aclDilationInfo);</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="ttc" id="namespacearmnn_html_a1e8288eac7e909fdb58b6113d816763a"><div class="ttname"><a href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">armnn::ConvertWeightTensorInfoFromArmnnToAcl</a></div><div class="ttdeci">TensorInfo ConvertWeightTensorInfoFromArmnnToAcl(const TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00109">WorkloadUtils.cpp:109</a></div></div>
9140</div><!-- fragment -->
9141</div>
9142</div>
9143<a id="a75045734c29d7d6635342c05adbc151b"></a>
9144<h2 class="memtitle"><span class="permalink"><a href="#a75045734c29d7d6635342c05adbc151b">&#9670;&nbsp;</a></span>ClDequantizeWorkloadValidate()</h2>
9145
9146<div class="memitem">
9147<div class="memproto">
9148 <table class="memname">
9149 <tr>
9150 <td class="memname">arm_compute::Status ClDequantizeWorkloadValidate </td>
9151 <td>(</td>
9152 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9153 <td class="paramname"><em>input</em>, </td>
9154 </tr>
9155 <tr>
9156 <td class="paramkey"></td>
9157 <td></td>
9158 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9159 <td class="paramname"><em>output</em>&#160;</td>
9160 </tr>
9161 <tr>
9162 <td></td>
9163 <td>)</td>
9164 <td></td><td></td>
9165 </tr>
9166 </table>
9167</div><div class="memdoc">
9168
9169<p class="definition">Definition at line <a class="el" href="_cl_dequantize_workload_8cpp_source.html#l00023">23</a> of file <a class="el" href="_cl_dequantize_workload_8cpp_source.html">ClDequantizeWorkload.cpp</a>.</p>
9170
9171<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00333">ClLayerSupport::IsDequantizeSupported()</a>.</p>
9172<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLDequantizationLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
9173</div>
9174</div>
9175<a id="a6a0edac987d58b405636df2eb2ee525d"></a>
9176<h2 class="memtitle"><span class="permalink"><a href="#a6a0edac987d58b405636df2eb2ee525d">&#9670;&nbsp;</a></span>ClDivisionWorkloadValidate()</h2>
9177
9178<div class="memitem">
9179<div class="memproto">
9180 <table class="memname">
9181 <tr>
9182 <td class="memname">arm_compute::Status ClDivisionWorkloadValidate </td>
9183 <td>(</td>
9184 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9185 <td class="paramname"><em>input0</em>, </td>
9186 </tr>
9187 <tr>
9188 <td class="paramkey"></td>
9189 <td></td>
9190 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9191 <td class="paramname"><em>input1</em>, </td>
9192 </tr>
9193 <tr>
9194 <td class="paramkey"></td>
9195 <td></td>
9196 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9197 <td class="paramname"><em>output</em>&#160;</td>
9198 </tr>
9199 <tr>
9200 <td></td>
9201 <td>)</td>
9202 <td></td><td></td>
9203 </tr>
9204 </table>
9205</div><div class="memdoc">
9206
9207<p class="definition">Definition at line <a class="el" href="_cl_division_float_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_cl_division_float_workload_8cpp_source.html">ClDivisionFloatWorkload.cpp</a>.</p>
9208
9209<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00388">ClLayerSupport::IsDivisionSupported()</a>.</p>
9210<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArithmeticDivision::validate(&amp;aclInput1, &amp;aclInput2, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
9211</div>
9212</div>
9213<a id="a8874961260f35da85229554f92e16ca9"></a>
9214<h2 class="memtitle"><span class="permalink"><a href="#a8874961260f35da85229554f92e16ca9">&#9670;&nbsp;</a></span>ClFloorWorkloadValidate()</h2>
9215
9216<div class="memitem">
9217<div class="memproto">
9218 <table class="memname">
9219 <tr>
9220 <td class="memname">arm_compute::Status ClFloorWorkloadValidate </td>
9221 <td>(</td>
9222 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9223 <td class="paramname"><em>input</em>, </td>
9224 </tr>
9225 <tr>
9226 <td class="paramkey"></td>
9227 <td></td>
9228 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9229 <td class="paramname"><em>output</em>&#160;</td>
9230 </tr>
9231 <tr>
9232 <td></td>
9233 <td>)</td>
9234 <td></td><td></td>
9235 </tr>
9236 </table>
9237</div><div class="memdoc">
9238
9239<p class="definition">Definition at line <a class="el" href="_cl_floor_float_workload_8cpp_source.html#l00014">14</a> of file <a class="el" href="_cl_floor_float_workload_8cpp_source.html">ClFloorFloatWorkload.cpp</a>.</p>
9240
9241<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00423">ClLayerSupport::IsFloorSupported()</a>.</p>
9242<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</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="keywordflow">return</span> arm_compute::CLFloor::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;}</div></div><!-- fragment -->
9243</div>
9244</div>
9245<a id="a00ef2c55913f952924a3e23556655285"></a>
9246<h2 class="memtitle"><span class="permalink"><a href="#a00ef2c55913f952924a3e23556655285">&#9670;&nbsp;</a></span>ClFullyConnectedWorkloadValidate()</h2>
9247
9248<div class="memitem">
9249<div class="memproto">
9250 <table class="memname">
9251 <tr>
9252 <td class="memname">arm_compute::Status ClFullyConnectedWorkloadValidate </td>
9253 <td>(</td>
9254 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9255 <td class="paramname"><em>input</em>, </td>
9256 </tr>
9257 <tr>
9258 <td class="paramkey"></td>
9259 <td></td>
9260 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9261 <td class="paramname"><em>output</em>, </td>
9262 </tr>
9263 <tr>
9264 <td class="paramkey"></td>
9265 <td></td>
9266 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9267 <td class="paramname"><em>weights</em>, </td>
9268 </tr>
9269 <tr>
9270 <td class="paramkey"></td>
9271 <td></td>
9272 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9273 <td class="paramname"><em>biases</em>, </td>
9274 </tr>
9275 <tr>
9276 <td class="paramkey"></td>
9277 <td></td>
9278 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
9279 <td class="paramname"><em>descriptor</em>&#160;</td>
9280 </tr>
9281 <tr>
9282 <td></td>
9283 <td>)</td>
9284 <td></td><td></td>
9285 </tr>
9286 </table>
9287</div><div class="memdoc">
9288
9289<p class="definition">Definition at line <a class="el" href="_cl_fully_connected_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_fully_connected_workload_8cpp_source.html">ClFullyConnectedWorkload.cpp</a>.</p>
9290
9291<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00433">ClLayerSupport::IsFullyConnectedSupported()</a>.</p>
9292<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeights = BuildArmComputeTensorInfo(weights);</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; arm_compute::TensorInfo aclBiases;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::TensorInfo *optionalAclBiases = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; aclBiases = BuildArmComputeTensorInfo(biases);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; optionalAclBiases = &amp;aclBiases;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> arm_compute::FullyConnectedLayerInfo fullyConnectedLayerInfo =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a>(descriptor);</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; <span class="keywordflow">return</span> arm_compute::CLFullyConnectedLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; &amp;aclWeights,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; optionalAclBiases,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; fullyConnectedLayerInfo);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abccab9266ab13dbd806445af31ddbba7"><div class="ttname"><a href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a></div><div class="ttdeci">arm_compute::FullyConnectedLayerInfo ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo(const FullyConnectedDescriptor &amp;fullyConnectedDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00118">ArmComputeUtils.hpp:118</a></div></div>
9293</div><!-- fragment -->
9294</div>
9295</div>
9296<a id="acf69869c2242e5e3741c4f9252099393"></a>
9297<h2 class="memtitle"><span class="permalink"><a href="#acf69869c2242e5e3741c4f9252099393">&#9670;&nbsp;</a></span>ClGreaterWorkloadValidate()</h2>
9298
9299<div class="memitem">
9300<div class="memproto">
9301 <table class="memname">
9302 <tr>
9303 <td class="memname">arm_compute::Status ClGreaterWorkloadValidate </td>
9304 <td>(</td>
9305 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9306 <td class="paramname"><em>input0</em>, </td>
9307 </tr>
9308 <tr>
9309 <td class="paramkey"></td>
9310 <td></td>
9311 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9312 <td class="paramname"><em>input1</em>, </td>
9313 </tr>
9314 <tr>
9315 <td class="paramkey"></td>
9316 <td></td>
9317 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9318 <td class="paramname"><em>output</em>&#160;</td>
9319 </tr>
9320 <tr>
9321 <td></td>
9322 <td>)</td>
9323 <td></td><td></td>
9324 </tr>
9325 </table>
9326</div><div class="memdoc">
9327
9328<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_greater_workload_8cpp_source.html">ClGreaterWorkload.cpp</a>.</p>
9329
9330<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00229">ClLayerSupport::IsComparisonSupported()</a>.</p>
9331<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLComparison::validate(</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput0Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::ComparisonOperation::Greater);</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="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
9332</div><!-- fragment -->
9333</div>
9334</div>
9335<a id="a79d362f0c6e04d51807e0d81b5b05f3a"></a>
9336<h2 class="memtitle"><span class="permalink"><a href="#a79d362f0c6e04d51807e0d81b5b05f3a">&#9670;&nbsp;</a></span>ClInstanceNormalizationWorkloadValidate()</h2>
9337
9338<div class="memitem">
9339<div class="memproto">
9340 <table class="memname">
9341 <tr>
9342 <td class="memname">arm_compute::Status ClInstanceNormalizationWorkloadValidate </td>
9343 <td>(</td>
9344 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9345 <td class="paramname"><em>input</em>, </td>
9346 </tr>
9347 <tr>
9348 <td class="paramkey"></td>
9349 <td></td>
9350 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9351 <td class="paramname"><em>output</em>, </td>
9352 </tr>
9353 <tr>
9354 <td class="paramkey"></td>
9355 <td></td>
9356 <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
9357 <td class="paramname"><em>descriptor</em>&#160;</td>
9358 </tr>
9359 <tr>
9360 <td></td>
9361 <td>)</td>
9362 <td></td><td></td>
9363 </tr>
9364 </table>
9365</div><div class="memdoc">
9366
9367<p class="definition">Definition at line <a class="el" href="_cl_instance_normalization_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_instance_normalization_workload_8cpp_source.html">ClInstanceNormalizationWorkload.cpp</a>.</p>
9368
9369<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00464">ClLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
9370<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLInstanceNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; descriptor.m_Gamma,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_Beta,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
9371</div>
9372</div>
9373<a id="aef334cdb24000c330f4d2e5f1b384784"></a>
9374<h2 class="memtitle"><span class="permalink"><a href="#aef334cdb24000c330f4d2e5f1b384784">&#9670;&nbsp;</a></span>ClL2NormalizationWorkloadValidate()</h2>
9375
9376<div class="memitem">
9377<div class="memproto">
9378 <table class="memname">
9379 <tr>
9380 <td class="memname">arm_compute::Status ClL2NormalizationWorkloadValidate </td>
9381 <td>(</td>
9382 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9383 <td class="paramname"><em>input</em>, </td>
9384 </tr>
9385 <tr>
9386 <td class="paramkey"></td>
9387 <td></td>
9388 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9389 <td class="paramname"><em>output</em>, </td>
9390 </tr>
9391 <tr>
9392 <td class="paramkey"></td>
9393 <td></td>
9394 <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;&#160;</td>
9395 <td class="paramname"><em>descriptor</em>&#160;</td>
9396 </tr>
9397 <tr>
9398 <td></td>
9399 <td>)</td>
9400 <td></td><td></td>
9401 </tr>
9402 </table>
9403</div><div class="memdoc">
9404
9405<p class="definition">Definition at line <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.html">ClL2NormalizationFloatWorkload.cpp</a>.</p>
9406
9407<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00476">ClLayerSupport::IsL2NormalizationSupported()</a>.</p>
9408<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">int</span> axis = (descriptor.m_DataLayout == DataLayout::NCHW) ? 2 : 0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::CLL2NormalizeLayer::validate(&amp;aclInput, &amp;aclOutput, axis, descriptor.m_Eps);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
9409</div>
9410</div>
9411<a id="a90ab88fe4c7aa9466c4653404a6b2213"></a>
9412<h2 class="memtitle"><span class="permalink"><a href="#a90ab88fe4c7aa9466c4653404a6b2213">&#9670;&nbsp;</a></span>ClLstmFloatWorkloadValidate()</h2>
9413
9414<div class="memitem">
9415<div class="memproto">
9416 <table class="memname">
9417 <tr>
9418 <td class="memname">arm_compute::Status ClLstmFloatWorkloadValidate </td>
9419 <td>(</td>
9420 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9421 <td class="paramname"><em>input</em>, </td>
9422 </tr>
9423 <tr>
9424 <td class="paramkey"></td>
9425 <td></td>
9426 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9427 <td class="paramname"><em>outputStateIn</em>, </td>
9428 </tr>
9429 <tr>
9430 <td class="paramkey"></td>
9431 <td></td>
9432 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9433 <td class="paramname"><em>cellStateIn</em>, </td>
9434 </tr>
9435 <tr>
9436 <td class="paramkey"></td>
9437 <td></td>
9438 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9439 <td class="paramname"><em>scratchBuffer</em>, </td>
9440 </tr>
9441 <tr>
9442 <td class="paramkey"></td>
9443 <td></td>
9444 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9445 <td class="paramname"><em>outputStateOut</em>, </td>
9446 </tr>
9447 <tr>
9448 <td class="paramkey"></td>
9449 <td></td>
9450 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9451 <td class="paramname"><em>cellStateOut</em>, </td>
9452 </tr>
9453 <tr>
9454 <td class="paramkey"></td>
9455 <td></td>
9456 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9457 <td class="paramname"><em>output</em>, </td>
9458 </tr>
9459 <tr>
9460 <td class="paramkey"></td>
9461 <td></td>
9462 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;&#160;</td>
9463 <td class="paramname"><em>descriptor</em>, </td>
9464 </tr>
9465 <tr>
9466 <td class="paramkey"></td>
9467 <td></td>
9468 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;&#160;</td>
9469 <td class="paramname"><em>paramsInfo</em>&#160;</td>
9470 </tr>
9471 <tr>
9472 <td></td>
9473 <td>)</td>
9474 <td></td><td></td>
9475 </tr>
9476 </table>
9477</div><div class="memdoc">
9478
9479<p class="definition">Definition at line <a class="el" href="_cl_lstm_float_workload_8cpp_source.html#l00256">256</a> of file <a class="el" href="_cl_lstm_float_workload_8cpp_source.html">ClLstmFloatWorkload.cpp</a>.</p>
9480
9481<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00488">ClLayerSupport::IsLstmSupported()</a>.</p>
9482<div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; arm_compute::LSTMParams&lt;arm_compute::ITensorInfo&gt; lstm_params_info;</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="comment">// The inputs and the outputs</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScratchBufferInfo = BuildArmComputeTensorInfo(scratchBuffer);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</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; arm_compute::TensorInfo aclInputToInputWeightsInfo;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; arm_compute::TensorInfo aclRecurrentToInputWeightsInfo;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; arm_compute::TensorInfo aclCellToInputWeightsInfo;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; arm_compute::TensorInfo aclInputGateBiasInfo;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; arm_compute::TensorInfo aclProjectionWeightsInfo;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; arm_compute::TensorInfo aclProjectionBiasInfo;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; arm_compute::TensorInfo aclCellToForgetWeightsInfo;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; arm_compute::TensorInfo aclCellToOutputWeightsInfo;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; arm_compute::TensorInfo aclInputLayerNormWeightsInfo;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; arm_compute::TensorInfo aclForgetLayerNormWeightsInfo;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; arm_compute::TensorInfo aclCellLayerNormWeightsInfo;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; arm_compute::TensorInfo aclOutputLayerNormWeightsInfo;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; aclInputToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; aclRecurrentToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_CellToInputWeights != <span class="keyword">nullptr</span>)</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; aclCellToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToInputWeights());</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; aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; lstm_params_info.set_cifg_params(&amp;aclInputToInputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; paramsInfo.m_CellToInputWeights != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; &amp;aclCellToInputWeightsInfo: <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; &amp;aclInputGateBiasInfo);</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"> 319</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; aclProjectionWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionWeights());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span>)</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"> 325</span>&#160; aclProjectionBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; lstm_params_info.set_projection_params(&amp;aclProjectionWeightsInfo,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; &amp;aclProjectionBiasInfo: <span class="keyword">nullptr</span>);</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"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</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; aclCellToForgetWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToForgetWeights());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; aclCellToOutputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToOutputWeights());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; lstm_params_info.set_peephole_params(&amp;aclCellToForgetWeightsInfo, &amp;aclCellToOutputWeightsInfo);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordtype">float</span> cell_threshold = descriptor.m_ClippingThresCell;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordtype">float</span> projection_threshold = descriptor.m_ClippingThresProj;</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; <span class="comment">// for preparing the object for the class ActivationLayerInfo, we need to consider 5 situations</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; arm_compute::ActivationLayerInfo activationLayerInfo;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 0)</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="comment">// no activation, do nothing</span></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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 1)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::RELU);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 3)</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"> 355</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.0);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 4)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::TANH, 1.0, 1.0);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 6)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::LOGISTIC);</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">else</span></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; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;Wrong Type of Activation Function!&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</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">if</span> (descriptor.m_LayerNormEnabled)</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; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; aclInputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputLayerNormWeights());</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</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; aclForgetLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetLayerNormWeights());</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; aclCellLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellLayerNormWeights());</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; aclOutputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputLayerNormWeights());</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"> 386</span>&#160; lstm_params_info.set_layer_normalization_params(descriptor.m_CifgEnabled ?</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">nullptr</span> : &amp;aclInputLayerNormWeightsInfo,</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; &amp;aclForgetLayerNormWeightsInfo,</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; &amp;aclCellLayerNormWeightsInfo,</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; &amp;aclOutputLayerNormWeightsInfo);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> arm_compute::CLLSTMLayer::validate(&amp;aclInputInfo, &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; &amp;aclOutputStateInInfo, &amp;aclCellStateInInfo,</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; &amp;aclScratchBufferInfo, &amp;aclOutputStateOutInfo,</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; &amp;aclCellStateOutInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; lstm_params_info, activationLayerInfo,</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; cell_threshold, projection_threshold);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
9483</div><!-- fragment -->
9484</div>
9485</div>
9486<a id="a553706c6338ffc52b0d916859f642587"></a>
9487<h2 class="memtitle"><span class="permalink"><a href="#a553706c6338ffc52b0d916859f642587">&#9670;&nbsp;</a></span>ClMaximumWorkloadValidate()</h2>
9488
9489<div class="memitem">
9490<div class="memproto">
9491 <table class="memname">
9492 <tr>
9493 <td class="memname">arm_compute::Status ClMaximumWorkloadValidate </td>
9494 <td>(</td>
9495 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9496 <td class="paramname"><em>input0</em>, </td>
9497 </tr>
9498 <tr>
9499 <td class="paramkey"></td>
9500 <td></td>
9501 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9502 <td class="paramname"><em>input1</em>, </td>
9503 </tr>
9504 <tr>
9505 <td class="paramkey"></td>
9506 <td></td>
9507 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9508 <td class="paramname"><em>output</em>&#160;</td>
9509 </tr>
9510 <tr>
9511 <td></td>
9512 <td>)</td>
9513 <td></td><td></td>
9514 </tr>
9515 </table>
9516</div><div class="memdoc">
9517
9518<p class="definition">Definition at line <a class="el" href="_cl_maximum_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_maximum_workload_8cpp_source.html">ClMaximumWorkload.cpp</a>.</p>
9519
9520<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00512">ClLayerSupport::IsMaximumSupported()</a>.</p>
9521<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLElementwiseMax::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
9522</div><!-- fragment -->
9523</div>
9524</div>
9525<a id="aa1fff3c5bdebee27ad33aacc6d110d32"></a>
9526<h2 class="memtitle"><span class="permalink"><a href="#aa1fff3c5bdebee27ad33aacc6d110d32">&#9670;&nbsp;</a></span>ClMeanValidate()</h2>
9527
9528<div class="memitem">
9529<div class="memproto">
9530 <table class="memname">
9531 <tr>
9532 <td class="memname">arm_compute::Status ClMeanValidate </td>
9533 <td>(</td>
9534 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9535 <td class="paramname"><em>input</em>, </td>
9536 </tr>
9537 <tr>
9538 <td class="paramkey"></td>
9539 <td></td>
9540 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9541 <td class="paramname"><em>output</em>, </td>
9542 </tr>
9543 <tr>
9544 <td class="paramkey"></td>
9545 <td></td>
9546 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;&#160;</td>
9547 <td class="paramname"><em>desc</em>&#160;</td>
9548 </tr>
9549 <tr>
9550 <td></td>
9551 <td>)</td>
9552 <td></td><td></td>
9553 </tr>
9554 </table>
9555</div><div class="memdoc">
9556
9557<p class="definition">Definition at line <a class="el" href="_cl_mean_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_mean_workload_8cpp_source.html">ClMeanWorkload.cpp</a>.</p>
9558
9559<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00524">ClLayerSupport::IsMeanSupported()</a>.</p>
9560<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> coords = BuildArmComputeReductionCoordinates(aclInputInfo.num_dimensions(),</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; input.GetNumDimensions(),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; desc.m_Axis);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLReduceMean::validate(&amp;aclInputInfo, coords, desc.m_KeepDims, &amp;aclOutputInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
9561</div><!-- fragment -->
9562</div>
9563</div>
9564<a id="a8c04c8e796a4fbec706df42ed9c27e4e"></a>
9565<h2 class="memtitle"><span class="permalink"><a href="#a8c04c8e796a4fbec706df42ed9c27e4e">&#9670;&nbsp;</a></span>ClMinimumWorkloadValidate()</h2>
9566
9567<div class="memitem">
9568<div class="memproto">
9569 <table class="memname">
9570 <tr>
9571 <td class="memname">arm_compute::Status ClMinimumWorkloadValidate </td>
9572 <td>(</td>
9573 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9574 <td class="paramname"><em>input0</em>, </td>
9575 </tr>
9576 <tr>
9577 <td class="paramkey"></td>
9578 <td></td>
9579 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9580 <td class="paramname"><em>input1</em>, </td>
9581 </tr>
9582 <tr>
9583 <td class="paramkey"></td>
9584 <td></td>
9585 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9586 <td class="paramname"><em>output</em>&#160;</td>
9587 </tr>
9588 <tr>
9589 <td></td>
9590 <td>)</td>
9591 <td></td><td></td>
9592 </tr>
9593 </table>
9594</div><div class="memdoc">
9595
9596<p class="definition">Definition at line <a class="el" href="_cl_minimum_workload_8cpp_source.html#l00024">24</a> of file <a class="el" href="_cl_minimum_workload_8cpp_source.html">ClMinimumWorkload.cpp</a>.</p>
9597
9598<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00544">ClLayerSupport::IsMinimumSupported()</a>.</p>
9599<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLElementwiseMin::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
9600</div><!-- fragment -->
9601</div>
9602</div>
9603<a id="a674a280a55c3760374a05ee24e9e3e74"></a>
9604<h2 class="memtitle"><span class="permalink"><a href="#a674a280a55c3760374a05ee24e9e3e74">&#9670;&nbsp;</a></span>ClMultiplicationWorkloadValidate()</h2>
9605
9606<div class="memitem">
9607<div class="memproto">
9608 <table class="memname">
9609 <tr>
9610 <td class="memname">arm_compute::Status ClMultiplicationWorkloadValidate </td>
9611 <td>(</td>
9612 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9613 <td class="paramname"><em>input0</em>, </td>
9614 </tr>
9615 <tr>
9616 <td class="paramkey"></td>
9617 <td></td>
9618 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9619 <td class="paramname"><em>input1</em>, </td>
9620 </tr>
9621 <tr>
9622 <td class="paramkey"></td>
9623 <td></td>
9624 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9625 <td class="paramname"><em>output</em>&#160;</td>
9626 </tr>
9627 <tr>
9628 <td></td>
9629 <td>)</td>
9630 <td></td><td></td>
9631 </tr>
9632 </table>
9633</div><div class="memdoc">
9634
9635<p class="definition">Definition at line <a class="el" href="_cl_multiplication_workload_8cpp_source.html#l00014">14</a> of file <a class="el" href="_cl_multiplication_workload_8cpp_source.html">ClMultiplicationWorkload.cpp</a>.</p>
9636
9637<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00556">ClLayerSupport::IsMultiplicationSupported()</a>.</p>
9638<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">// At the time of writing, configure() will fail if a rounding policy other than TO_ZERO is supplied to it,</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// when providing a scale of 1.0 for F32 tensors, even though the provided rounding policy appears to be</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// ignored for F32 tensors.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPixelWiseMultiplication::validate(&amp;aclInput1,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput2,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; 1.0f,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::ConvertPolicy::SATURATE,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::RoundingPolicy::TO_ZERO);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
9639</div>
9640</div>
9641<a id="a144c2e243a255715f309999077ed1792"></a>
9642<h2 class="memtitle"><span class="permalink"><a href="#a144c2e243a255715f309999077ed1792">&#9670;&nbsp;</a></span>ClNormalizationWorkloadValidate()</h2>
9643
9644<div class="memitem">
9645<div class="memproto">
9646 <table class="memname">
9647 <tr>
9648 <td class="memname">arm_compute::Status ClNormalizationWorkloadValidate </td>
9649 <td>(</td>
9650 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9651 <td class="paramname"><em>input</em>, </td>
9652 </tr>
9653 <tr>
9654 <td class="paramkey"></td>
9655 <td></td>
9656 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9657 <td class="paramname"><em>output</em>, </td>
9658 </tr>
9659 <tr>
9660 <td class="paramkey"></td>
9661 <td></td>
9662 <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;&#160;</td>
9663 <td class="paramname"><em>descriptor</em>&#160;</td>
9664 </tr>
9665 <tr>
9666 <td></td>
9667 <td>)</td>
9668 <td></td><td></td>
9669 </tr>
9670 </table>
9671</div><div class="memdoc">
9672
9673<p class="definition">Definition at line <a class="el" href="_cl_normalization_float_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_normalization_float_workload_8cpp_source.html">ClNormalizationFloatWorkload.cpp</a>.</p>
9674
9675<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00568">ClLayerSupport::IsNormalizationSupported()</a>.</p>
9676<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; arm_compute::NormalizationLayerInfo layerInfo = BuildArmComputeNormalizationLayerInfo(descriptor);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLNormalizationLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
9677</div>
9678</div>
9679<a id="adcf7b7d939bac1cfaeb333c7b3175bb8"></a>
9680<h2 class="memtitle"><span class="permalink"><a href="#adcf7b7d939bac1cfaeb333c7b3175bb8">&#9670;&nbsp;</a></span>ClPadValidate()</h2>
9681
9682<div class="memitem">
9683<div class="memproto">
9684 <table class="memname">
9685 <tr>
9686 <td class="memname">arm_compute::Status ClPadValidate </td>
9687 <td>(</td>
9688 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9689 <td class="paramname"><em>input</em>, </td>
9690 </tr>
9691 <tr>
9692 <td class="paramkey"></td>
9693 <td></td>
9694 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9695 <td class="paramname"><em>output</em>, </td>
9696 </tr>
9697 <tr>
9698 <td class="paramkey"></td>
9699 <td></td>
9700 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;&#160;</td>
9701 <td class="paramname"><em>descriptor</em>&#160;</td>
9702 </tr>
9703 <tr>
9704 <td></td>
9705 <td>)</td>
9706 <td></td><td></td>
9707 </tr>
9708 </table>
9709</div><div class="memdoc">
9710
9711<p class="definition">Definition at line <a class="el" href="_cl_pad_workload_8cpp_source.html#l00045">45</a> of file <a class="el" href="_cl_pad_workload_8cpp_source.html">ClPadWorkload.cpp</a>.</p>
9712
9713<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00582">ClLayerSupport::IsPadSupported()</a>.</p>
9714<div class="fragment"><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; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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; std::vector&lt;std::pair&lt;unsigned int, unsigned int&gt;&gt; reversed_PadList(descriptor.m_PadList.size());</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; std::reverse_copy(std::begin(descriptor.m_PadList),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::end(descriptor.m_PadList),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; std::begin(reversed_PadList));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; arm_compute::PaddingList padList = <span class="keyword">static_cast&lt;</span>arm_compute::PaddingList<span class="keyword">&gt;</span>(reversed_PadList);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLPadLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; padList);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
9715</div><!-- fragment -->
9716</div>
9717</div>
9718<a id="a26c25df9e2271333ab4d4ef71db41dca"></a>
9719<h2 class="memtitle"><span class="permalink"><a href="#a26c25df9e2271333ab4d4ef71db41dca">&#9670;&nbsp;</a></span>ClPermuteWorkloadValidate()</h2>
9720
9721<div class="memitem">
9722<div class="memproto">
9723 <table class="memname">
9724 <tr>
9725 <td class="memname">arm_compute::Status ClPermuteWorkloadValidate </td>
9726 <td>(</td>
9727 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9728 <td class="paramname"><em>input</em>, </td>
9729 </tr>
9730 <tr>
9731 <td class="paramkey"></td>
9732 <td></td>
9733 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9734 <td class="paramname"><em>output</em>, </td>
9735 </tr>
9736 <tr>
9737 <td class="paramkey"></td>
9738 <td></td>
9739 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;&#160;</td>
9740 <td class="paramname"><em>descriptor</em>&#160;</td>
9741 </tr>
9742 <tr>
9743 <td></td>
9744 <td>)</td>
9745 <td></td><td></td>
9746 </tr>
9747 </table>
9748</div><div class="memdoc">
9749
9750<p class="definition">Definition at line <a class="el" href="_cl_permute_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_cl_permute_workload_8cpp_source.html">ClPermuteWorkload.cpp</a>.</p>
9751
9752<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00594">ClLayerSupport::IsPermuteSupported()</a>.</p>
9753<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; armcomputetensorutils::BuildArmComputePermutationVector(mappings));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
9754</div><!-- fragment -->
9755</div>
9756</div>
9757<a id="a8a21bb33f7f054ce7b48a8c7df9e6d4a"></a>
9758<h2 class="memtitle"><span class="permalink"><a href="#a8a21bb33f7f054ce7b48a8c7df9e6d4a">&#9670;&nbsp;</a></span>ClPooling2dWorkloadValidate()</h2>
9759
9760<div class="memitem">
9761<div class="memproto">
9762 <table class="memname">
9763 <tr>
9764 <td class="memname">arm_compute::Status ClPooling2dWorkloadValidate </td>
9765 <td>(</td>
9766 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9767 <td class="paramname"><em>input</em>, </td>
9768 </tr>
9769 <tr>
9770 <td class="paramkey"></td>
9771 <td></td>
9772 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9773 <td class="paramname"><em>output</em>, </td>
9774 </tr>
9775 <tr>
9776 <td class="paramkey"></td>
9777 <td></td>
9778 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
9779 <td class="paramname"><em>descriptor</em>&#160;</td>
9780 </tr>
9781 <tr>
9782 <td></td>
9783 <td>)</td>
9784 <td></td><td></td>
9785 </tr>
9786 </table>
9787</div><div class="memdoc">
9788
9789<p class="definition">Definition at line <a class="el" href="_cl_pooling2d_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_pooling2d_workload_8cpp_source.html">ClPooling2dWorkload.cpp</a>.</p>
9790
9791<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00602">ClLayerSupport::IsPooling2dSupported()</a>.</p>
9792<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(descriptor);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPoolingLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
9793</div>
9794</div>
9795<a id="ae58d1f4437a779274037bc86efac9e26"></a>
9796<h2 class="memtitle"><span class="permalink"><a href="#ae58d1f4437a779274037bc86efac9e26">&#9670;&nbsp;</a></span>ClPreluWorkloadValidate()</h2>
9797
9798<div class="memitem">
9799<div class="memproto">
9800 <table class="memname">
9801 <tr>
9802 <td class="memname">arm_compute::Status ClPreluWorkloadValidate </td>
9803 <td>(</td>
9804 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9805 <td class="paramname"><em>input</em>, </td>
9806 </tr>
9807 <tr>
9808 <td class="paramkey"></td>
9809 <td></td>
9810 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9811 <td class="paramname"><em>alpha</em>, </td>
9812 </tr>
9813 <tr>
9814 <td class="paramkey"></td>
9815 <td></td>
9816 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9817 <td class="paramname"><em>output</em>&#160;</td>
9818 </tr>
9819 <tr>
9820 <td></td>
9821 <td>)</td>
9822 <td></td><td></td>
9823 </tr>
9824 </table>
9825</div><div class="memdoc">
9826
9827<p class="definition">Definition at line <a class="el" href="_cl_prelu_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_cl_prelu_workload_8cpp_source.html">ClPreluWorkload.cpp</a>.</p>
9828
9829<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00610">ClLayerSupport::IsPreluSupported()</a>.</p>
9830<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAlpha = armcomputetensorutils::BuildArmComputeTensorInfo(alpha);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPReluLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; &amp;aclAlpha,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
9831</div>
9832</div>
9833<a id="a5fb7fe07abfb2373103d842b47a24726"></a>
9834<h2 class="memtitle"><span class="permalink"><a href="#a5fb7fe07abfb2373103d842b47a24726">&#9670;&nbsp;</a></span>ClQuantizedLstmWorkloadValidate()</h2>
9835
9836<div class="memitem">
9837<div class="memproto">
9838 <table class="memname">
9839 <tr>
9840 <td class="memname">arm_compute::Status ClQuantizedLstmWorkloadValidate </td>
9841 <td>(</td>
9842 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9843 <td class="paramname"><em>input</em>, </td>
9844 </tr>
9845 <tr>
9846 <td class="paramkey"></td>
9847 <td></td>
9848 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9849 <td class="paramname"><em>previousCellStateIn</em>, </td>
9850 </tr>
9851 <tr>
9852 <td class="paramkey"></td>
9853 <td></td>
9854 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9855 <td class="paramname"><em>previousOutputIn</em>, </td>
9856 </tr>
9857 <tr>
9858 <td class="paramkey"></td>
9859 <td></td>
9860 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9861 <td class="paramname"><em>cellStateOut</em>, </td>
9862 </tr>
9863 <tr>
9864 <td class="paramkey"></td>
9865 <td></td>
9866 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9867 <td class="paramname"><em>output</em>, </td>
9868 </tr>
9869 <tr>
9870 <td class="paramkey"></td>
9871 <td></td>
9872 <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
9873 <td class="paramname"><em>paramsInfo</em>&#160;</td>
9874 </tr>
9875 <tr>
9876 <td></td>
9877 <td>)</td>
9878 <td></td><td></td>
9879 </tr>
9880 </table>
9881</div><div class="memdoc">
9882
9883<p class="definition">Definition at line <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.html">ClQuantizedLstmWorkload.cpp</a>.</p>
9884
9885<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00618">ClLayerSupport::IsQuantizedLstmSupported()</a>.</p>
9886<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// Inputs</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclPreviousCellStateInInfo = BuildArmComputeTensorInfo(previousCellStateIn);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclPreviousOutputInInfo = BuildArmComputeTensorInfo(previousOutputIn);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">// Outputs</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToInputWeightsInfo</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToInputWeightsInfo</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</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; <span class="keywordflow">return</span> arm_compute::CLLSTMLayerQuantized::validate(&amp;aclInputInfo, &amp;aclInputToInputWeightsInfo,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &amp;aclInputToForgetWeightsInfo, &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;aclInputToOutputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;aclRecurrentToForgetWeightsInfo, &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;aclRecurrentToOutputWeightsInfo, &amp;aclInputGateBiasInfo,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; &amp;aclForgetGateBiasInfo, &amp;aclCellBiasInfo, &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclPreviousCellStateInInfo, &amp;aclPreviousOutputInInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; &amp;aclCellStateOutInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div></div><!-- fragment -->
9887</div>
9888</div>
9889<a id="a9c1b478e30a1e8a4ecac874cf15f13d4"></a>
9890<h2 class="memtitle"><span class="permalink"><a href="#a9c1b478e30a1e8a4ecac874cf15f13d4">&#9670;&nbsp;</a></span>ClQuantizeWorkloadValidate()</h2>
9891
9892<div class="memitem">
9893<div class="memproto">
9894 <table class="memname">
9895 <tr>
9896 <td class="memname">arm_compute::Status ClQuantizeWorkloadValidate </td>
9897 <td>(</td>
9898 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9899 <td class="paramname"><em>input</em>, </td>
9900 </tr>
9901 <tr>
9902 <td class="paramkey"></td>
9903 <td></td>
9904 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9905 <td class="paramname"><em>output</em>&#160;</td>
9906 </tr>
9907 <tr>
9908 <td></td>
9909 <td>)</td>
9910 <td></td><td></td>
9911 </tr>
9912 </table>
9913</div><div class="memdoc">
9914
9915<p class="definition">Definition at line <a class="el" href="_cl_quantize_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_cl_quantize_workload_8cpp_source.html">ClQuantizeWorkload.cpp</a>.</p>
9916
9917<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00636">ClLayerSupport::IsQuantizeSupported()</a>.</p>
9918<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLQuantizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
9919</div>
9920</div>
9921<a id="af5bb7a834a74983cbbc249785d0c392b"></a>
9922<h2 class="memtitle"><span class="permalink"><a href="#af5bb7a834a74983cbbc249785d0c392b">&#9670;&nbsp;</a></span>ClReshapeWorkloadValidate()</h2>
9923
9924<div class="memitem">
9925<div class="memproto">
9926 <table class="memname">
9927 <tr>
9928 <td class="memname">arm_compute::Status ClReshapeWorkloadValidate </td>
9929 <td>(</td>
9930 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9931 <td class="paramname"><em>input</em>, </td>
9932 </tr>
9933 <tr>
9934 <td class="paramkey"></td>
9935 <td></td>
9936 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9937 <td class="paramname"><em>output</em>&#160;</td>
9938 </tr>
9939 <tr>
9940 <td></td>
9941 <td>)</td>
9942 <td></td><td></td>
9943 </tr>
9944 </table>
9945</div><div class="memdoc">
9946
9947<p class="definition">Definition at line <a class="el" href="_cl_reshape_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_cl_reshape_workload_8cpp_source.html">ClReshapeWorkload.cpp</a>.</p>
9948
9949<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00646">ClLayerSupport::IsReshapeSupported()</a>.</p>
9950<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::CLReshapeLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div></div><!-- fragment -->
9951</div>
9952</div>
9953<a id="a95b187d3c6b7b46f4fbdc60be69fc02c"></a>
9954<h2 class="memtitle"><span class="permalink"><a href="#a95b187d3c6b7b46f4fbdc60be69fc02c">&#9670;&nbsp;</a></span>ClResizeWorkloadValidate()</h2>
9955
9956<div class="memitem">
9957<div class="memproto">
9958 <table class="memname">
9959 <tr>
9960 <td class="memname">arm_compute::Status ClResizeWorkloadValidate </td>
9961 <td>(</td>
9962 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9963 <td class="paramname"><em>input</em>, </td>
9964 </tr>
9965 <tr>
9966 <td class="paramkey"></td>
9967 <td></td>
9968 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
9969 <td class="paramname"><em>output</em>, </td>
9970 </tr>
9971 <tr>
9972 <td class="paramkey"></td>
9973 <td></td>
9974 <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;&#160;</td>
9975 <td class="paramname"><em>descriptor</em>&#160;</td>
9976 </tr>
9977 <tr>
9978 <td></td>
9979 <td>)</td>
9980 <td></td><td></td>
9981 </tr>
9982 </table>
9983</div><div class="memdoc">
9984
9985<p class="definition">Definition at line <a class="el" href="_cl_resize_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_cl_resize_workload_8cpp_source.html">ClResizeWorkload.cpp</a>.</p>
9986
9987<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00655">ClLayerSupport::IsResizeSupported()</a>.</p>
9988<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">arm_compute::DataLayout</a> aclDataLayout = ConvertDataLayout(descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; aclInputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; aclOutputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; arm_compute::InterpolationPolicy aclInterpolationPolicy =</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a>(descriptor.m_Method);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> arm_compute::CLScale::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; aclInterpolationPolicy,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; arm_compute::BorderMode::REPLICATE,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; arm_compute::PixelValue(0.f),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; arm_compute::SamplingPolicy::TOP_LEFT,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">true</span>,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; descriptor.m_BilinearAlignCorners);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae9bdcb8ac91731109dc423d6ed476204"><div class="ttname"><a href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">armnn::ConvertResizeMethodToAclInterpolationPolicy</a></div><div class="ttdeci">arm_compute::InterpolationPolicy ConvertResizeMethodToAclInterpolationPolicy(ResizeMethod resizeMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00125">ArmComputeUtils.hpp:125</a></div></div>
9989<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
9990</div><!-- fragment -->
9991</div>
9992</div>
9993<a id="a3f6f9f0d3567ae04b49ea88727845900"></a>
9994<h2 class="memtitle"><span class="permalink"><a href="#a3f6f9f0d3567ae04b49ea88727845900">&#9670;&nbsp;</a></span>ClRsqrtWorkloadValidate()</h2>
9995
9996<div class="memitem">
9997<div class="memproto">
9998 <table class="memname">
9999 <tr>
10000 <td class="memname">arm_compute::Status ClRsqrtWorkloadValidate </td>
10001 <td>(</td>
10002 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10003 <td class="paramname"><em>input</em>, </td>
10004 </tr>
10005 <tr>
10006 <td class="paramkey"></td>
10007 <td></td>
10008 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10009 <td class="paramname"><em>output</em>&#160;</td>
10010 </tr>
10011 <tr>
10012 <td></td>
10013 <td>)</td>
10014 <td></td><td></td>
10015 </tr>
10016 </table>
10017</div><div class="memdoc">
10018
10019<p class="definition">Definition at line <a class="el" href="_cl_rsqrt_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_rsqrt_workload_8cpp_source.html">ClRsqrtWorkload.cpp</a>.</p>
10020
10021<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00400">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
10022<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLRsqrtLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
10023</div>
10024</div>
10025<a id="a6d85d2806d0a90140832ad8113c1d350"></a>
10026<h2 class="memtitle"><span class="permalink"><a href="#a6d85d2806d0a90140832ad8113c1d350">&#9670;&nbsp;</a></span>ClSliceWorkloadValidate()</h2>
10027
10028<div class="memitem">
10029<div class="memproto">
10030 <table class="memname">
10031 <tr>
10032 <td class="memname">arm_compute::Status ClSliceWorkloadValidate </td>
10033 <td>(</td>
10034 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10035 <td class="paramname"><em>input</em>, </td>
10036 </tr>
10037 <tr>
10038 <td class="paramkey"></td>
10039 <td></td>
10040 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10041 <td class="paramname"><em>output</em>, </td>
10042 </tr>
10043 <tr>
10044 <td class="paramkey"></td>
10045 <td></td>
10046 <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;&#160;</td>
10047 <td class="paramname"><em>descriptor</em>&#160;</td>
10048 </tr>
10049 <tr>
10050 <td></td>
10051 <td>)</td>
10052 <td></td><td></td>
10053 </tr>
10054 </table>
10055</div><div class="memdoc">
10056
10057<p class="definition">Definition at line <a class="el" href="_cl_slice_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_cl_slice_workload_8cpp_source.html">ClSliceWorkload.cpp</a>.</p>
10058
10059<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00686">ClLayerSupport::IsSliceSupported()</a>.</p>
10060<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</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; std::tie(starts, ends) = <a class="code" href="namespacearmnn.html#a460e01ad4cd0bfa6bde4eccaf0e77220">SetClSliceData</a>(descriptor.m_Begin, descriptor.m_Size);</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="keywordflow">return</span> arm_compute::CLSlice::validate(&amp;aclInput, &amp;aclOutput, starts, ends);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
10061<div class="ttc" id="namespacearmnn_html_a460e01ad4cd0bfa6bde4eccaf0e77220"><div class="ttname"><a href="namespacearmnn.html#a460e01ad4cd0bfa6bde4eccaf0e77220">armnn::SetClSliceData</a></div><div class="ttdeci">auto SetClSliceData(const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00066">ClWorkloadUtils.hpp:66</a></div></div>
10062</div><!-- fragment -->
10063</div>
10064</div>
10065<a id="abc6f7e5fe77e5aed3f7842755dd34073"></a>
10066<h2 class="memtitle"><span class="permalink"><a href="#abc6f7e5fe77e5aed3f7842755dd34073">&#9670;&nbsp;</a></span>ClSoftmaxWorkloadValidate()</h2>
10067
10068<div class="memitem">
10069<div class="memproto">
10070 <table class="memname">
10071 <tr>
10072 <td class="memname">arm_compute::Status ClSoftmaxWorkloadValidate </td>
10073 <td>(</td>
10074 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10075 <td class="paramname"><em>input</em>, </td>
10076 </tr>
10077 <tr>
10078 <td class="paramkey"></td>
10079 <td></td>
10080 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10081 <td class="paramname"><em>output</em>, </td>
10082 </tr>
10083 <tr>
10084 <td class="paramkey"></td>
10085 <td></td>
10086 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
10087 <td class="paramname"><em>descriptor</em>&#160;</td>
10088 </tr>
10089 <tr>
10090 <td></td>
10091 <td>)</td>
10092 <td></td><td></td>
10093 </tr>
10094 </table>
10095</div><div class="memdoc">
10096
10097<p class="definition">Definition at line <a class="el" href="_cl_softmax_base_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_cl_softmax_base_workload_8cpp_source.html">ClSoftmaxBaseWorkload.cpp</a>.</p>
10098
10099<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00694">ClLayerSupport::IsSoftmaxSupported()</a>.</p>
10100<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a>(descriptor, input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSoftmaxLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, descriptor.m_Beta, aclAxis);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa70ebe7b7898fe69ce24db803caa373e"><div class="ttname"><a href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">armnn::ComputeSoftmaxAclAxis</a></div><div class="ttdeci">unsigned int ComputeSoftmaxAclAxis(const SoftmaxDescriptor &amp;softmaxDesc, const armnn::TensorInfo &amp;tensor)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00138">ArmComputeUtils.hpp:138</a></div></div>
10101</div><!-- fragment -->
10102</div>
10103</div>
10104<a id="a534b28fd4b345bbc938d055ff5b8970f"></a>
10105<h2 class="memtitle"><span class="permalink"><a href="#a534b28fd4b345bbc938d055ff5b8970f">&#9670;&nbsp;</a></span>ClSpaceToBatchNdWorkloadValidate()</h2>
10106
10107<div class="memitem">
10108<div class="memproto">
10109 <table class="memname">
10110 <tr>
10111 <td class="memname">arm_compute::Status ClSpaceToBatchNdWorkloadValidate </td>
10112 <td>(</td>
10113 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10114 <td class="paramname"><em>input</em>, </td>
10115 </tr>
10116 <tr>
10117 <td class="paramkey"></td>
10118 <td></td>
10119 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10120 <td class="paramname"><em>output</em>, </td>
10121 </tr>
10122 <tr>
10123 <td class="paramkey"></td>
10124 <td></td>
10125 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
10126 <td class="paramname"><em>descriptor</em>&#160;</td>
10127 </tr>
10128 <tr>
10129 <td></td>
10130 <td>)</td>
10131 <td></td><td></td>
10132 </tr>
10133 </table>
10134</div><div class="memdoc">
10135
10136<p class="definition">Definition at line <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.html#l00023">23</a> of file <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.html">ClSpaceToBatchNdWorkload.cpp</a>.</p>
10137
10138<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00702">ClLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
10139<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[0]);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[1]);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; arm_compute::Size2D paddingLeftTop = BuildArmComputeSize2D(</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; descriptor.m_PadList[1].first, descriptor.m_PadList[0].first);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::Size2D paddingRightBottom = BuildArmComputeSize2D(</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; descriptor.m_PadList[1].second, descriptor.m_PadList[0].second);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSpaceToBatchLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; blockWidth,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; blockHeight,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; paddingLeftTop,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; paddingRightBottom,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div></div><!-- fragment -->
10140</div>
10141</div>
10142<a id="a5f81bc4e5533cfe99932865bd102735c"></a>
10143<h2 class="memtitle"><span class="permalink"><a href="#a5f81bc4e5533cfe99932865bd102735c">&#9670;&nbsp;</a></span>ClSpaceToDepthWorkloadValidate()</h2>
10144
10145<div class="memitem">
10146<div class="memproto">
10147 <table class="memname">
10148 <tr>
10149 <td class="memname">arm_compute::Status ClSpaceToDepthWorkloadValidate </td>
10150 <td>(</td>
10151 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10152 <td class="paramname"><em>input</em>, </td>
10153 </tr>
10154 <tr>
10155 <td class="paramkey"></td>
10156 <td></td>
10157 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10158 <td class="paramname"><em>output</em>, </td>
10159 </tr>
10160 <tr>
10161 <td class="paramkey"></td>
10162 <td></td>
10163 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
10164 <td class="paramname"><em>desc</em>&#160;</td>
10165 </tr>
10166 <tr>
10167 <td></td>
10168 <td>)</td>
10169 <td></td><td></td>
10170 </tr>
10171 </table>
10172</div><div class="memdoc">
10173
10174<p class="definition">Definition at line <a class="el" href="_cl_space_to_depth_workload_8cpp_source.html#l00044">44</a> of file <a class="el" href="_cl_space_to_depth_workload_8cpp_source.html">ClSpaceToDepthWorkload.cpp</a>.</p>
10175
10176<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
10177
10178<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00714">ClLayerSupport::IsSpaceToDepthSupported()</a>.</p>
10179<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockSize);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</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; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLSpaceToDepthLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; blockSize);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
10180<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
10181</div><!-- fragment -->
10182</div>
10183</div>
10184<a id="a3ac8a60f837b19b20987e4fd238ce0cd"></a>
10185<h2 class="memtitle"><span class="permalink"><a href="#a3ac8a60f837b19b20987e4fd238ce0cd">&#9670;&nbsp;</a></span>ClSplitterWorkloadValidate()</h2>
10186
10187<div class="memitem">
10188<div class="memproto">
10189 <table class="memname">
10190 <tr>
10191 <td class="memname">arm_compute::Status ClSplitterWorkloadValidate </td>
10192 <td>(</td>
10193 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10194 <td class="paramname"><em>input</em>, </td>
10195 </tr>
10196 <tr>
10197 <td class="paramkey"></td>
10198 <td></td>
10199 <td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
10200 <td class="paramname"><em>outputs</em>, </td>
10201 </tr>
10202 <tr>
10203 <td class="paramkey"></td>
10204 <td></td>
10205 <td class="paramtype">unsigned int&#160;</td>
10206 <td class="paramname"><em>splitAxis</em>&#160;</td>
10207 </tr>
10208 <tr>
10209 <td></td>
10210 <td>)</td>
10211 <td></td><td></td>
10212 </tr>
10213 </table>
10214</div><div class="memdoc">
10215
10216<p class="definition">Definition at line <a class="el" href="_cl_splitter_workload_8cpp_source.html#l00031">31</a> of file <a class="el" href="_cl_splitter_workload_8cpp_source.html">ClSplitterWorkload.cpp</a>.</p>
10217
10218<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00737">ClLayerSupport::IsSplitterSupported()</a>.</p>
10219<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">size_t</span> numOutputs = outputs.size();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclOutputs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; aclOutputs.reserve(numOutputs);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclOutputPtr;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclOutputPtr.reserve(numOutputs);</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"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0u; i &lt; outputs.size(); ++i)</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; aclOutputs.emplace_back(BuildArmComputeTensorInfo(outputs[i]));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; aclOutputPtr.emplace_back(&amp;aclOutputs.back());</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"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = CalcAclAxis(input.GetNumDimensions(), splitAxis);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSplit::validate(&amp;aclInputInfo, aclOutputPtr, aclAxis);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
10220</div>
10221</div>
10222<a id="a8c9fec997dbb5db4cdb433c36d075782"></a>
10223<h2 class="memtitle"><span class="permalink"><a href="#a8c9fec997dbb5db4cdb433c36d075782">&#9670;&nbsp;</a></span>ClStackWorkloadValidate()</h2>
10224
10225<div class="memitem">
10226<div class="memproto">
10227 <table class="memname">
10228 <tr>
10229 <td class="memname">arm_compute::Status ClStackWorkloadValidate </td>
10230 <td>(</td>
10231 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
10232 <td class="paramname"><em>inputs</em>, </td>
10233 </tr>
10234 <tr>
10235 <td class="paramkey"></td>
10236 <td></td>
10237 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10238 <td class="paramname"><em>output</em>, </td>
10239 </tr>
10240 <tr>
10241 <td class="paramkey"></td>
10242 <td></td>
10243 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;&#160;</td>
10244 <td class="paramname"><em>descriptor</em>&#160;</td>
10245 </tr>
10246 <tr>
10247 <td></td>
10248 <td>)</td>
10249 <td></td><td></td>
10250 </tr>
10251 </table>
10252</div><div class="memdoc">
10253
10254<p class="definition">Definition at line <a class="el" href="_cl_stack_workload_8cpp_source.html#l00030">30</a> of file <a class="el" href="_cl_stack_workload_8cpp_source.html">ClStackWorkload.cpp</a>.</p>
10255
10256<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00770">ClLayerSupport::IsStackSupported()</a>.</p>
10257<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclInputInfo;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</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; aclInputInfo = BuildArmComputeTensorInfo(*input);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; aclInputPtrs.emplace_back(&amp;aclInputInfo);</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"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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; <span class="keywordtype">int</span> aclAxis = CalcAxis(descriptor.m_Axis, descriptor.m_InputShape.GetNumDimensions());</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"> 45</span>&#160; <span class="keywordflow">return</span> arm_compute::CLStackLayer::validate(aclInputPtrs, aclAxis, &amp;aclOutputInfo);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div></div><!-- fragment -->
10258</div>
10259</div>
10260<a id="a157e0508f6d6d08e3ca4cf6c661242e6"></a>
10261<h2 class="memtitle"><span class="permalink"><a href="#a157e0508f6d6d08e3ca4cf6c661242e6">&#9670;&nbsp;</a></span>ClStridedSliceWorkloadValidate()</h2>
10262
10263<div class="memitem">
10264<div class="memproto">
10265 <table class="memname">
10266 <tr>
10267 <td class="memname">arm_compute::Status ClStridedSliceWorkloadValidate </td>
10268 <td>(</td>
10269 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10270 <td class="paramname"><em>input</em>, </td>
10271 </tr>
10272 <tr>
10273 <td class="paramkey"></td>
10274 <td></td>
10275 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10276 <td class="paramname"><em>output</em>, </td>
10277 </tr>
10278 <tr>
10279 <td class="paramkey"></td>
10280 <td></td>
10281 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
10282 <td class="paramname"><em>descriptor</em>&#160;</td>
10283 </tr>
10284 <tr>
10285 <td></td>
10286 <td>)</td>
10287 <td></td><td></td>
10288 </tr>
10289 </table>
10290</div><div class="memdoc">
10291
10292<p class="definition">Definition at line <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00026">26</a> of file <a class="el" href="_cl_strided_slice_workload_8cpp_source.html">ClStridedSliceWorkload.cpp</a>.</p>
10293
10294<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00782">ClLayerSupport::IsStridedSliceSupported()</a>.</p>
10295<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; std::tie(starts, ends, strides) = <a class="code" href="namespacearmnn.html#a6d4bdf4368a1422943f8f2b1740ec491">SetClStridedSliceData</a>(descriptor.m_Begin, descriptor.m_End, descriptor.m_Stride);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">auto</span> numDimensions = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(input.GetNumDimensions());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; int32_t begin_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_BeginMask, numDimensions);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; int32_t end_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_EndMask, numDimensions);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; int32_t shrink_axis_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_ShrinkAxisMask, numDimensions);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> arm_compute::CLStridedSlice::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; starts,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; ends,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; strides,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; begin_mask,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; end_mask,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; shrink_axis_mask);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a6d4bdf4368a1422943f8f2b1740ec491"><div class="ttname"><a href="namespacearmnn.html#a6d4bdf4368a1422943f8f2b1740ec491">armnn::SetClStridedSliceData</a></div><div class="ttdeci">auto SetClStridedSliceData(const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00045">ClWorkloadUtils.hpp:45</a></div></div>
10296<div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
10297<div class="ttc" id="namespacearmnn_html_ad69ffa576a596b9eb20ab6a41420c541"><div class="ttname"><a href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">armnn::ConvertMaskToACLFormat</a></div><div class="ttdeci">int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00192">WorkloadUtils.cpp:192</a></div></div>
10298</div><!-- fragment -->
10299</div>
10300</div>
10301<a id="a3bbbf958387c788549b0d8481232875f"></a>
10302<h2 class="memtitle"><span class="permalink"><a href="#a3bbbf958387c788549b0d8481232875f">&#9670;&nbsp;</a></span>ClSubtractionValidate()</h2>
10303
10304<div class="memitem">
10305<div class="memproto">
10306 <table class="memname">
10307 <tr>
10308 <td class="memname">arm_compute::Status ClSubtractionValidate </td>
10309 <td>(</td>
10310 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10311 <td class="paramname"><em>input0</em>, </td>
10312 </tr>
10313 <tr>
10314 <td class="paramkey"></td>
10315 <td></td>
10316 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10317 <td class="paramname"><em>input1</em>, </td>
10318 </tr>
10319 <tr>
10320 <td class="paramkey"></td>
10321 <td></td>
10322 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10323 <td class="paramname"><em>output</em>&#160;</td>
10324 </tr>
10325 <tr>
10326 <td></td>
10327 <td>)</td>
10328 <td></td><td></td>
10329 </tr>
10330 </table>
10331</div><div class="memdoc">
10332
10333<p class="definition">Definition at line <a class="el" href="_cl_subtraction_workload_8cpp_source.html#l00038">38</a> of file <a class="el" href="_cl_subtraction_workload_8cpp_source.html">ClSubtractionWorkload.cpp</a>.</p>
10334
10335<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00794">ClLayerSupport::IsSubtractionSupported()</a>.</p>
10336<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLArithmeticSubtraction::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; g_AclConvertPolicy);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
10337</div><!-- fragment -->
10338</div>
10339</div>
10340<a id="ac86fc56b9a27576bfe930a7012a402d5"></a>
10341<h2 class="memtitle"><span class="permalink"><a href="#ac86fc56b9a27576bfe930a7012a402d5">&#9670;&nbsp;</a></span>ClTensorHandleFactoryId()</h2>
10342
10343<div class="memitem">
10344<div class="memproto">
10345 <table class="memname">
10346 <tr>
10347 <td class="memname">constexpr const char* armnn::ClTensorHandleFactoryId </td>
10348 <td>(</td>
10349 <td class="paramname"></td><td>)</td>
10350 <td></td>
10351 </tr>
10352 </table>
10353</div><div class="memdoc">
10354
10355<p class="definition">Definition at line <a class="el" href="_cl_tensor_handle_factory_8hpp_source.html#l00015">15</a> of file <a class="el" href="_cl_tensor_handle_factory_8hpp_source.html">ClTensorHandleFactory.hpp</a>.</p>
10356
10357<p class="reference">Referenced by <a class="el" href="_cl_tensor_handle_factory_8cpp_source.html#l00082">ClTensorHandleFactory::GetIdStatic()</a>.</p>
10358<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Cl/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
10359</div>
10360</div>
10361<a id="a719ea81939d6a25f8636b52c59165d66"></a>
10362<h2 class="memtitle"><span class="permalink"><a href="#a719ea81939d6a25f8636b52c59165d66">&#9670;&nbsp;</a></span>ClTransposeConvolution2dWorkloadValidate()</h2>
10363
10364<div class="memitem">
10365<div class="memproto">
10366 <table class="memname">
10367 <tr>
10368 <td class="memname">arm_compute::Status ClTransposeConvolution2dWorkloadValidate </td>
10369 <td>(</td>
10370 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10371 <td class="paramname"><em>input</em>, </td>
10372 </tr>
10373 <tr>
10374 <td class="paramkey"></td>
10375 <td></td>
10376 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10377 <td class="paramname"><em>output</em>, </td>
10378 </tr>
10379 <tr>
10380 <td class="paramkey"></td>
10381 <td></td>
10382 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
10383 <td class="paramname"><em>descriptor</em>, </td>
10384 </tr>
10385 <tr>
10386 <td class="paramkey"></td>
10387 <td></td>
10388 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10389 <td class="paramname"><em>weights</em>, </td>
10390 </tr>
10391 <tr>
10392 <td class="paramkey"></td>
10393 <td></td>
10394 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
10395 <td class="paramname"><em>biases</em>&#160;</td>
10396 </tr>
10397 <tr>
10398 <td></td>
10399 <td>)</td>
10400 <td></td><td></td>
10401 </tr>
10402 </table>
10403</div><div class="memdoc">
10404
10405<p class="definition">Definition at line <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.html#l00026">26</a> of file <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.html">ClTransposeConvolution2dWorkload.cpp</a>.</p>
10406
10407<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00806">ClLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
10408<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</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"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</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; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</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; arm_compute::PadStrideInfo padStrideInfo = BuildArmComputePadStrideInfo(descriptor);</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; <span class="keywordflow">return</span> arm_compute::CLDeconvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; padStrideInfo);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
10409</div>
10410</div>
10411<a id="a5d94c2125c725df5b619d16db9d4a8e9"></a>
10412<h2 class="memtitle"><span class="permalink"><a href="#a5d94c2125c725df5b619d16db9d4a8e9">&#9670;&nbsp;</a></span>Combine() <span class="overload">[1/2]</span></h2>
10413
10414<div class="memitem">
10415<div class="memproto">
10416 <table class="memname">
10417 <tr>
10418 <td class="memname"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
10419 <td>(</td>
10420 <td class="paramtype">Arg&#160;</td>
10421 <td class="paramname"><em>sourceA</em>, </td>
10422 </tr>
10423 <tr>
10424 <td class="paramkey"></td>
10425 <td></td>
10426 <td class="paramtype">Arg&#160;</td>
10427 <td class="paramname"><em>sourceB</em>&#160;</td>
10428 </tr>
10429 <tr>
10430 <td></td>
10431 <td>)</td>
10432 <td></td><td></td>
10433 </tr>
10434 </table>
10435</div><div class="memdoc">
10436
10437<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00036">36</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
10438
10439<p class="reference">Referenced by <a class="el" href="_memory_sources_8hpp_source.html#l00042">Combine()</a>.</p>
10440<div class="fragment"><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="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(sourceA) | static_cast&lt;MemorySourceFlags&gt;(sourceB);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5b05f3b7208ec7cea3338e30057c0bac"><div class="ttname"><a href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">armnn::MemorySourceFlags</a></div><div class="ttdeci">unsigned int MemorySourceFlags</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.html#l00021">MemorySources.hpp:21</a></div></div>
10441</div><!-- fragment -->
10442</div>
10443</div>
10444<a id="ae91e1849e95350c8e50912a217999eac"></a>
10445<h2 class="memtitle"><span class="permalink"><a href="#ae91e1849e95350c8e50912a217999eac">&#9670;&nbsp;</a></span>Combine() <span class="overload">[2/2]</span></h2>
10446
10447<div class="memitem">
10448<div class="memproto">
10449 <table class="memname">
10450 <tr>
10451 <td class="memname"><a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
10452 <td>(</td>
10453 <td class="paramtype">Arg&#160;</td>
10454 <td class="paramname"><em>source</em>, </td>
10455 </tr>
10456 <tr>
10457 <td class="paramkey"></td>
10458 <td></td>
10459 <td class="paramtype">Args...&#160;</td>
10460 <td class="paramname"><em>rest</em>&#160;</td>
10461 </tr>
10462 <tr>
10463 <td></td>
10464 <td>)</td>
10465 <td></td><td></td>
10466 </tr>
10467 </table>
10468</div><div class="memdoc">
10469
10470<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.html#l00042">42</a> of file <a class="el" href="_memory_sources_8hpp_source.html">MemorySources.hpp</a>.</p>
10471
10472<p class="reference">References <a class="el" href="_memory_sources_8hpp_source.html#l00036">Combine()</a>.</p>
10473<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(source) | <a class="code" href="namespacearmnn.html#ae91e1849e95350c8e50912a217999eac">Combine</a>(rest...);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5b05f3b7208ec7cea3338e30057c0bac"><div class="ttname"><a href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">armnn::MemorySourceFlags</a></div><div class="ttdeci">unsigned int MemorySourceFlags</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.html#l00021">MemorySources.hpp:21</a></div></div>
10474<div class="ttc" id="namespacearmnn_html_ae91e1849e95350c8e50912a217999eac"><div class="ttname"><a href="namespacearmnn.html#ae91e1849e95350c8e50912a217999eac">armnn::Combine</a></div><div class="ttdeci">MemorySourceFlags Combine(Arg source, Args... rest)</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.html#l00042">MemorySources.hpp:42</a></div></div>
10475</div><!-- fragment -->
10476</div>
10477</div>
10478<a id="a238a74871f634b778176e5dc8391888a"></a>
10479<h2 class="memtitle"><span class="permalink"><a href="#a238a74871f634b778176e5dc8391888a">&#9670;&nbsp;</a></span>CompatibleTypes()</h2>
10480
10481<div class="memitem">
10482<div class="memproto">
10483 <table class="memname">
10484 <tr>
10485 <td class="memname">bool armnn::CompatibleTypes </td>
10486 <td>(</td>
10487 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
10488 <td class="paramname"></td><td>)</td>
10489 <td></td>
10490 </tr>
10491 </table>
10492</div><div class="memdoc">
10493
10494<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00015">15</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
10495<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;}</div></div><!-- fragment -->
10496</div>
10497</div>
10498<a id="a7296af8a86f22ef7f144dc02c4c94324"></a>
10499<h2 class="memtitle"><span class="permalink"><a href="#a7296af8a86f22ef7f144dc02c4c94324">&#9670;&nbsp;</a></span>CompatibleTypes< float >()</h2>
10500
10501<div class="memitem">
10502<div class="memproto">
10503<table class="mlabels">
10504 <tr>
10505 <td class="mlabels-left">
10506 <table class="memname">
10507 <tr>
10508 <td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; float &gt; </td>
10509 <td>(</td>
10510 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
10511 <td class="paramname"><em>dataType</em></td><td>)</td>
10512 <td></td>
10513 </tr>
10514 </table>
10515 </td>
10516 <td class="mlabels-right">
10517<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10518 </tr>
10519</table>
10520</div><div class="memdoc">
10521
10522<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00021">21</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
10523
10524<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
10525<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Float32;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
10526</div>
10527</div>
10528<a id="a7b224e4c135fa1fdb3e54dfe945e07f8"></a>
10529<h2 class="memtitle"><span class="permalink"><a href="#a7b224e4c135fa1fdb3e54dfe945e07f8">&#9670;&nbsp;</a></span>CompatibleTypes< Half >()</h2>
10530
10531<div class="memitem">
10532<div class="memproto">
10533<table class="mlabels">
10534 <tr>
10535 <td class="mlabels-left">
10536 <table class="memname">
10537 <tr>
10538 <td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
10539 <td>(</td>
10540 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
10541 <td class="paramname"><em>dataType</em></td><td>)</td>
10542 <td></td>
10543 </tr>
10544 </table>
10545 </td>
10546 <td class="mlabels-right">
10547<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10548 </tr>
10549</table>
10550</div><div class="memdoc">
10551
10552<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00027">27</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
10553
10554<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>.</p>
10555<div class="fragment"><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="keywordflow">return</span> dataType == DataType::Float16;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
10556</div>
10557</div>
10558<a id="a6a0a86fe227d22c1cf7381798ad8550f"></a>
10559<h2 class="memtitle"><span class="permalink"><a href="#a6a0a86fe227d22c1cf7381798ad8550f">&#9670;&nbsp;</a></span>CompatibleTypes< int16_t >()</h2>
10560
10561<div class="memitem">
10562<div class="memproto">
10563<table class="mlabels">
10564 <tr>
10565 <td class="mlabels-left">
10566 <table class="memname">
10567 <tr>
10568 <td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int16_t &gt; </td>
10569 <td>(</td>
10570 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
10571 <td class="paramname"><em>dataType</em></td><td>)</td>
10572 <td></td>
10573 </tr>
10574 </table>
10575 </td>
10576 <td class="mlabels-right">
10577<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10578 </tr>
10579</table>
10580</div><div class="memdoc">
10581
10582<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00049">49</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
10583
10584<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
10585<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS16;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div></div><!-- fragment -->
10586</div>
10587</div>
10588<a id="a000bb59f20fa937e2acff1c2aaba7944"></a>
10589<h2 class="memtitle"><span class="permalink"><a href="#a000bb59f20fa937e2acff1c2aaba7944">&#9670;&nbsp;</a></span>CompatibleTypes< int32_t >()</h2>
10590
10591<div class="memitem">
10592<div class="memproto">
10593<table class="mlabels">
10594 <tr>
10595 <td class="mlabels-left">
10596 <table class="memname">
10597 <tr>
10598 <td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int32_t &gt; </td>
10599 <td>(</td>
10600 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
10601 <td class="paramname"><em>dataType</em></td><td>)</td>
10602 <td></td>
10603 </tr>
10604 </table>
10605 </td>
10606 <td class="mlabels-right">
10607<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10608 </tr>
10609</table>
10610</div><div class="memdoc">
10611
10612<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00055">55</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
10613
10614<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
10615<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Signed32;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div></div><!-- fragment -->
10616</div>
10617</div>
10618<a id="a2bcd446605a7ee354be1038983358e04"></a>
10619<h2 class="memtitle"><span class="permalink"><a href="#a2bcd446605a7ee354be1038983358e04">&#9670;&nbsp;</a></span>CompatibleTypes< int8_t >()</h2>
10620
10621<div class="memitem">
10622<div class="memproto">
10623<table class="mlabels">
10624 <tr>
10625 <td class="mlabels-left">
10626 <table class="memname">
10627 <tr>
10628 <td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int8_t &gt; </td>
10629 <td>(</td>
10630 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
10631 <td class="paramname"><em>dataType</em></td><td>)</td>
10632 <td></td>
10633 </tr>
10634 </table>
10635 </td>
10636 <td class="mlabels-right">
10637<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10638 </tr>
10639</table>
10640</div><div class="memdoc">
10641
10642<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00039">39</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
10643
10644<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>.</p>
10645<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS8</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; || dataType == DataType::QuantizedSymm8PerAxis</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; || dataType == DataType::QAsymmS8;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
10646<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
10647</div><!-- fragment -->
10648</div>
10649</div>
10650<a id="ad23bcbfd1876f1ae11c926d0e3e8c3e5"></a>
10651<h2 class="memtitle"><span class="permalink"><a href="#ad23bcbfd1876f1ae11c926d0e3e8c3e5">&#9670;&nbsp;</a></span>CompatibleTypes< uint8_t >()</h2>
10652
10653<div class="memitem">
10654<div class="memproto">
10655<table class="mlabels">
10656 <tr>
10657 <td class="mlabels-left">
10658 <table class="memname">
10659 <tr>
10660 <td class="memname">bool <a class="el" href="namespacearmnn.html#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; uint8_t &gt; </td>
10661 <td>(</td>
10662 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
10663 <td class="paramname"><em>dataType</em></td><td>)</td>
10664 <td></td>
10665 </tr>
10666 </table>
10667 </td>
10668 <td class="mlabels-right">
10669<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10670 </tr>
10671</table>
10672</div><div class="memdoc">
10673
10674<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.html#l00033">33</a> of file <a class="el" href="_compatible_types_8hpp_source.html">CompatibleTypes.hpp</a>.</p>
10675
10676<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>.</p>
10677<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Boolean || dataType == DataType::QAsymmU8;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;}</div></div><!-- fragment -->
10678</div>
10679</div>
10680<a id="a6fff4b4b1b5d4d37c9cf53d0e31c05dd"></a>
10681<h2 class="memtitle"><span class="permalink"><a href="#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">&#9670;&nbsp;</a></span>CompleteLeakyReluNetwork()</h2>
10682
10683<div class="memitem">
10684<div class="memproto">
10685 <table class="memname">
10686 <tr>
10687 <td class="memname">void armnn::CompleteLeakyReluNetwork </td>
10688 <td>(</td>
10689 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *&#160;</td>
10690 <td class="paramname"><em>network</em>, </td>
10691 </tr>
10692 <tr>
10693 <td class="paramkey"></td>
10694 <td></td>
10695 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *&#160;</td>
10696 <td class="paramname"><em>activation</em>, </td>
10697 </tr>
10698 <tr>
10699 <td class="paramkey"></td>
10700 <td></td>
10701 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a> *&#160;</td>
10702 <td class="paramname"><em>layerUnderTest</em>, </td>
10703 </tr>
10704 <tr>
10705 <td class="paramkey"></td>
10706 <td></td>
10707 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
10708 <td class="paramname"><em>info</em>&#160;</td>
10709 </tr>
10710 <tr>
10711 <td></td>
10712 <td>)</td>
10713 <td></td><td></td>
10714 </tr>
10715 </table>
10716</div><div class="memdoc">
10717
10718<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01495">1495</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
10719
10720<p class="reference">References <a class="el" href="classarmnn_1_1_i_network.html#ad8582fba2ebeb65da43a56bc22d4f88b">INetwork::AddOutputLayer()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
10721
10722<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01511">BOOST_AUTO_TEST_CASE()</a>.</p>
10723<div class="fragment"><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;{</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="comment">// Add the output Layer</span></div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(3);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; activation-&gt;GetOutputSlot(0).Connect(layerUnderTest-&gt;GetInputSlot(0));</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; layerUnderTest-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="comment">//Set TensorInfo</span></div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; layerUnderTest-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;}</div></div><!-- fragment -->
10724</div>
10725</div>
10726<a id="aa70ebe7b7898fe69ce24db803caa373e"></a>
10727<h2 class="memtitle"><span class="permalink"><a href="#aa70ebe7b7898fe69ce24db803caa373e">&#9670;&nbsp;</a></span>ComputeSoftmaxAclAxis()</h2>
10728
10729<div class="memitem">
10730<div class="memproto">
10731<table class="mlabels">
10732 <tr>
10733 <td class="mlabels-left">
10734 <table class="memname">
10735 <tr>
10736 <td class="memname">unsigned int armnn::ComputeSoftmaxAclAxis </td>
10737 <td>(</td>
10738 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
10739 <td class="paramname"><em>softmaxDesc</em>, </td>
10740 </tr>
10741 <tr>
10742 <td class="paramkey"></td>
10743 <td></td>
10744 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
10745 <td class="paramname"><em>tensor</em>&#160;</td>
10746 </tr>
10747 <tr>
10748 <td></td>
10749 <td>)</td>
10750 <td></td><td></td>
10751 </tr>
10752 </table>
10753 </td>
10754 <td class="mlabels-right">
10755<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10756 </tr>
10757</table>
10758</div><div class="memdoc">
10759
10760<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00138">138</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
10761
10762<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00138">SoftmaxDescriptor::m_Axis</a>.</p>
10763
10764<p class="reference">Referenced by <a class="el" href="_cl_softmax_float_workload_8cpp_source.html#l00016">ClSoftmaxFloatWorkload::ClSoftmaxFloatWorkload()</a>, <a class="el" href="_cl_softmax_uint8_workload_8cpp_source.html#l00016">ClSoftmaxUint8Workload::ClSoftmaxUint8Workload()</a>, <a class="el" href="_neon_softmax_float_workload_8cpp_source.html#l00016">NeonSoftmaxFloatWorkload::NeonSoftmaxFloatWorkload()</a>, and <a class="el" href="_neon_softmax_uint8_workload_8cpp_source.html#l00016">NeonSoftmaxUint8Workload::NeonSoftmaxUint8Workload()</a>.</p>
10765<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Detect the Android default value of -1 and return the ACL default value of 1.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (softmaxDesc.m_Axis == -1)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> 1;</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"> 146</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim = tensor.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</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; BOOST_ASSERT(dim != 0);</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; <span class="comment">// Currently ArmNN support axis 1.</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> dim - 1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00092">Tensor.hpp:92</a></div></div>
10766</div><!-- fragment -->
10767</div>
10768</div>
10769<a id="a8cbabc875597b3bed0ccdc0adb289fde"></a>
10770<h2 class="memtitle"><span class="permalink"><a href="#a8cbabc875597b3bed0ccdc0adb289fde">&#9670;&nbsp;</a></span>ComputeSplitAxis()</h2>
10771
10772<div class="memitem">
10773<div class="memproto">
10774<table class="mlabels">
10775 <tr>
10776 <td class="mlabels-left">
10777 <table class="memname">
10778 <tr>
10779 <td class="memname">std::set&lt;unsigned int&gt; armnn::ComputeSplitAxis </td>
10780 <td>(</td>
10781 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a> &amp;&#160;</td>
10782 <td class="paramname"><em>desc</em>, </td>
10783 </tr>
10784 <tr>
10785 <td class="paramkey"></td>
10786 <td></td>
10787 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
10788 <td class="paramname"><em>input</em>&#160;</td>
10789 </tr>
10790 <tr>
10791 <td></td>
10792 <td>)</td>
10793 <td></td><td></td>
10794 </tr>
10795 </table>
10796 </td>
10797 <td class="mlabels-right">
10798<span class="mlabels"><span class="mlabel">inline</span></span> </td>
10799 </tr>
10800</table>
10801</div><div class="memdoc">
10802
10803<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00154">154</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
10804
10805<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00292">ViewsDescriptor::GetNumDimensions()</a>, <a class="el" href="_descriptors_8cpp_source.html#l00287">ViewsDescriptor::GetNumViews()</a>, and <a class="el" href="_descriptors_8cpp_source.html#l00332">ViewsDescriptor::GetViewSizes()</a>.</p>
10806
10807<p class="reference">Referenced by <a class="el" href="_cl_splitter_workload_8cpp_source.html#l00055">ClSplitterWorkload::ClSplitterWorkload()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00737">ClLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00721">NeonLayerSupport::IsSplitterSupported()</a>, and <a class="el" href="_neon_splitter_workload_8cpp_source.html#l00055">NeonSplitterWorkload::NeonSplitterWorkload()</a>.</p>
10808<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;{</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSplit = desc.<a class="code" href="structarmnn_1_1_views_descriptor.html#a35546e7b56e6e972a495b48748478ede">GetNumViews</a>();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = desc.<a class="code" href="structarmnn_1_1_views_descriptor.html#a78e8266be865fdd92cadd04d6e25ae1f">GetNumDimensions</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; std::set&lt;unsigned int&gt; splitAxis;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numSplit; ++i)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimIdx = 0; dimIdx &lt; numDimensions; ++dimIdx)</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">if</span> (desc.<a class="code" href="structarmnn_1_1_views_descriptor.html#a3c1ab47a0a319413b3a4b5757ed5b80b">GetViewSizes</a>(i)[dimIdx] != input[dimIdx])</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; splitAxis.insert(dimIdx);</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"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> splitAxis;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_views_descriptor_html_a78e8266be865fdd92cadd04d6e25ae1f"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.html#a78e8266be865fdd92cadd04d6e25ae1f">armnn::ViewsDescriptor::GetNumDimensions</a></div><div class="ttdeci">uint32_t GetNumDimensions() const</div><div class="ttdoc">Get the number of dimensions. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00292">Descriptors.cpp:292</a></div></div>
10809<div class="ttc" id="structarmnn_1_1_views_descriptor_html_a3c1ab47a0a319413b3a4b5757ed5b80b"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.html#a3c1ab47a0a319413b3a4b5757ed5b80b">armnn::ViewsDescriptor::GetViewSizes</a></div><div class="ttdeci">const uint32_t * GetViewSizes(uint32_t idx) const</div><div class="ttdoc">Get the view sizes at the int value idx. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00332">Descriptors.cpp:332</a></div></div>
10810<div class="ttc" id="structarmnn_1_1_views_descriptor_html_a35546e7b56e6e972a495b48748478ede"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.html#a35546e7b56e6e972a495b48748478ede">armnn::ViewsDescriptor::GetNumViews</a></div><div class="ttdeci">uint32_t GetNumViews() const</div><div class="ttdoc">Get the number of views. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00287">Descriptors.cpp:287</a></div></div>
10811</div><!-- fragment -->
10812</div>
10813</div>
10814<a id="a1deafe1b2777bcaadefe2371b3ebbb27"></a>
10815<h2 class="memtitle"><span class="permalink"><a href="#a1deafe1b2777bcaadefe2371b3ebbb27">&#9670;&nbsp;</a></span>Concatenate()</h2>
10816
10817<div class="memitem">
10818<div class="memproto">
10819 <table class="memname">
10820 <tr>
10821 <td class="memname">void Concatenate </td>
10822 <td>(</td>
10823 <td class="paramtype">const <a class="el" href="structarmnn_1_1_concat_queue_descriptor.html">ConcatQueueDescriptor</a> &amp;&#160;</td>
10824 <td class="paramname"><em>data</em></td><td>)</td>
10825 <td></td>
10826 </tr>
10827 </table>
10828</div><div class="memdoc">
10829
10830<p class="definition">Definition at line <a class="el" href="_concatenate_8cpp_source.html#l00014">14</a> of file <a class="el" href="_concatenate_8cpp_source.html">Concatenate.cpp</a>.</p>
10831
10832<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00110">ConcatQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00115">ConcatQueueDescriptor::m_ViewOrigins</a>, and <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>.</p>
10833
10834<p class="reference">Referenced by <a class="el" href="_ref_concat_workload_8cpp_source.html#l00015">RefConcatWorkload::Execute()</a>.</p>
10835<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo0 = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; std::unique_ptr&lt;Encoder&lt;float&gt;&gt; encoderPtr = MakeEncoder&lt;float&gt;(outputInfo0, data.m_Outputs[0]-&gt;Map());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; Encoder&lt;float&gt;&amp; encoder = *encoderPtr;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0 ; index &lt; outputInfo0.GetNumElements(); ++index)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = outputInfo0.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; outputInfo0.GetNumDimensions(); i++)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; dimensionStride /= outputInfo0.GetShape()[i];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; indexRemainder -= indices[i] * dimensionStride;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; ConcatQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[viewIdx]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(inputInfo.GetNumDimensions() == outputInfo0.GetNumDimensions());</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; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputInfo.GetNumDimensions(); i++)</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">if</span> (indices[i] &lt; view.m_Origin[i])</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; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + inputInfo.GetShape()[i])</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; insideView = <span class="keyword">false</span>;</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"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (insideView)</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; std::unique_ptr&lt;Decoder&lt;float&gt;&gt; decoderPtr =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; MakeDecoder&lt;float&gt;(inputInfo, data.m_Inputs[viewIdx]-&gt;Map());</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; Decoder&lt;float&gt;&amp; decoder = *decoderPtr;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inIndex = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = inputInfo.GetNumDimensions(); i-- &gt; 0;)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; inIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; dimensionStride *= inputInfo.GetShape()[i];</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"> 70</span>&#160; decoder += inIndex;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; encoder.Set(decoder.Get());</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="comment">//What should we do if input views overlap on the output tensor?</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">//We could error, take the average, or shm else...</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">//For now just stop after finding first view (input) that matches.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; ++encoder;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
10836<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
10837</div><!-- fragment -->
10838</div>
10839</div>
10840<a id="ae4ab3bf0697ad13316a6bcba0a8fade5"></a>
10841<h2 class="memtitle"><span class="permalink"><a href="#ae4ab3bf0697ad13316a6bcba0a8fade5">&#9670;&nbsp;</a></span>ConditionalThrow()</h2>
10842
10843<div class="memitem">
10844<div class="memproto">
10845 <table class="memname">
10846 <tr>
10847 <td class="memname">void armnn::ConditionalThrow </td>
10848 <td>(</td>
10849 <td class="paramtype">bool&#160;</td>
10850 <td class="paramname"><em>condition</em>, </td>
10851 </tr>
10852 <tr>
10853 <td class="paramkey"></td>
10854 <td></td>
10855 <td class="paramtype">const std::string &amp;&#160;</td>
10856 <td class="paramname"><em>message</em>&#160;</td>
10857 </tr>
10858 <tr>
10859 <td></td>
10860 <td>)</td>
10861 <td></td><td></td>
10862 </tr>
10863 </table>
10864</div><div class="memdoc">
10865
10866<p class="definition">Definition at line <a class="el" href="_exceptions_8hpp_source.html#l00141">141</a> of file <a class="el" href="_exceptions_8hpp_source.html">Exceptions.hpp</a>.</p>
10867<div class="fragment"><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (!condition)</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; <span class="keywordflow">throw</span> ExceptionType(message);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div></div><!-- fragment -->
10868</div>
10869</div>
10870<a id="ae57b7f9e2cb7080bf10b28d1f72b558e"></a>
10871<h2 class="memtitle"><span class="permalink"><a href="#ae57b7f9e2cb7080bf10b28d1f72b558e">&#9670;&nbsp;</a></span>ConditionalThrowIfNotEqual()</h2>
10872
10873<div class="memitem">
10874<div class="memproto">
10875 <table class="memname">
10876 <tr>
10877 <td class="memname">void armnn::ConditionalThrowIfNotEqual </td>
10878 <td>(</td>
10879 <td class="paramtype">const std::string &amp;&#160;</td>
10880 <td class="paramname"><em>message</em>, </td>
10881 </tr>
10882 <tr>
10883 <td class="paramkey"></td>
10884 <td></td>
10885 <td class="paramtype">const ComparedType &amp;&#160;</td>
10886 <td class="paramname"><em>leftHandSide</em>, </td>
10887 </tr>
10888 <tr>
10889 <td class="paramkey"></td>
10890 <td></td>
10891 <td class="paramtype">const ComparedType &amp;&#160;</td>
10892 <td class="paramname"><em>rightHandSide</em>&#160;</td>
10893 </tr>
10894 <tr>
10895 <td></td>
10896 <td>)</td>
10897 <td></td><td></td>
10898 </tr>
10899 </table>
10900</div><div class="memdoc">
10901<p>ComparedType must support: operator==(const ComparedType&amp;) operator&lt;&lt;(ostream&amp;, const ComparedType&amp;) </p>
10902
10903<p class="definition">Definition at line <a class="el" href="_exceptions_8hpp_source.html#l00155">155</a> of file <a class="el" href="_exceptions_8hpp_source.html">Exceptions.hpp</a>.</p>
10904<div class="fragment"><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; <span class="keywordflow">if</span> (!(leftHandSide == rightHandSide))</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"> 161</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; ss &lt;&lt; message &lt;&lt; <span class="stringliteral">&quot; : &quot;</span> &lt;&lt; leftHandSide &lt;&lt; <span class="stringliteral">&quot; != &quot;</span> &lt;&lt; rightHandSide;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">throw</span> ExceptionType(ss.str());</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div></div><!-- fragment -->
10905</div>
10906</div>
10907<a id="aa59f7a819c3e29d10ffc41e5c0616872"></a>
10908<h2 class="memtitle"><span class="permalink"><a href="#aa59f7a819c3e29d10ffc41e5c0616872">&#9670;&nbsp;</a></span>ConfigureLogging()</h2>
10909
10910<div class="memitem">
10911<div class="memproto">
10912 <table class="memname">
10913 <tr>
10914 <td class="memname">void ConfigureLogging </td>
10915 <td>(</td>
10916 <td class="paramtype">bool&#160;</td>
10917 <td class="paramname"><em>printToStandardOutput</em>, </td>
10918 </tr>
10919 <tr>
10920 <td class="paramkey"></td>
10921 <td></td>
10922 <td class="paramtype">bool&#160;</td>
10923 <td class="paramname"><em>printToDebugOutput</em>, </td>
10924 </tr>
10925 <tr>
10926 <td class="paramkey"></td>
10927 <td></td>
10928 <td class="paramtype"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
10929 <td class="paramname"><em>severity</em>&#160;</td>
10930 </tr>
10931 <tr>
10932 <td></td>
10933 <td>)</td>
10934 <td></td><td></td>
10935 </tr>
10936 </table>
10937</div><div class="memdoc">
10938<p>Configures the logging behaviour of the ARMNN library. printToStandardOutput: Set to true if log messages should be printed to the standard output. printToDebugOutput: Set to true if log messages be printed to a platform-specific debug output (where supported). severity: All log messages that are at this severity level or higher will be printed, others will be ignored. </p>
10939
10940<p class="definition">Definition at line <a class="el" href="_utils_8cpp_source.html#l00010">10</a> of file <a class="el" href="_utils_8cpp_source.html">Utils.cpp</a>.</p>
10941
10942<p class="reference">References <a class="el" href="_logging_8cpp_source.html#l00147">SetAllLoggingSinks()</a>, <a class="el" href="_logging_8cpp_source.html#l00029">SetLogFilter()</a>, and <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>.</p>
10943
10944<p class="reference">Referenced by <a class="el" href="_unit_tests_8hpp_source.html#l00015">ConfigureLoggingTest()</a>, <a class="el" href="_inference_test_8inl_source.html#l00301">armnn::test::InferenceTestMain()</a>, <a class="el" href="_profiling_tests_8hpp_source.html#l00031">LogLevelSwapper::LogLevelSwapper()</a>, <a class="el" href="_armnn_converter_8cpp_source.html#l00359">main()</a>, and <a class="el" href="_profiling_tests_8hpp_source.html#l00036">LogLevelSwapper::~LogLevelSwapper()</a>.</p>
10945<div class="fragment"><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <a class="code" href="namespacearmnn.html#a7f8325a4bc02f2f687ba1968b595ec0a">SetAllLoggingSinks</a>(printToStandardOutput, printToDebugOutput, <span class="keyword">false</span>);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <a class="code" href="namespacearmnn.html#ac9aad76a34137b6359a867b282ea7cfb">SetLogFilter</a>(severity);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac9aad76a34137b6359a867b282ea7cfb"><div class="ttname"><a href="namespacearmnn.html#ac9aad76a34137b6359a867b282ea7cfb">armnn::SetLogFilter</a></div><div class="ttdeci">void SetLogFilter(LogSeverity level)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8cpp_source.html#l00029">Logging.cpp:29</a></div></div>
10946<div class="ttc" id="namespacearmnn_html_a7f8325a4bc02f2f687ba1968b595ec0a"><div class="ttname"><a href="namespacearmnn.html#a7f8325a4bc02f2f687ba1968b595ec0a">armnn::SetAllLoggingSinks</a></div><div class="ttdeci">void SetAllLoggingSinks(bool standardOut, bool debugOut, bool coloured)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8cpp_source.html#l00147">Logging.cpp:147</a></div></div>
10947</div><!-- fragment -->
10948</div>
10949</div>
10950<a id="ab562537b5c1ef1e6cde9db9f5fa322bd"></a>
10951<h2 class="memtitle"><span class="permalink"><a href="#ab562537b5c1ef1e6cde9db9f5fa322bd">&#9670;&nbsp;</a></span>ConfigureTuner()</h2>
10952
10953<div class="memitem">
10954<div class="memproto">
10955 <table class="memname">
10956 <tr>
10957 <td class="memname">void armnn::ConfigureTuner </td>
10958 <td>(</td>
10959 <td class="paramtype">arm_compute::CLTuner &amp;&#160;</td>
10960 <td class="paramname"><em>tuner</em>, </td>
10961 </tr>
10962 <tr>
10963 <td class="paramkey"></td>
10964 <td></td>
10965 <td class="paramtype"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
10966 <td class="paramname"><em>level</em>&#160;</td>
10967 </tr>
10968 <tr>
10969 <td></td>
10970 <td>)</td>
10971 <td></td><td></td>
10972 </tr>
10973 </table>
10974</div><div class="memdoc">
10975
10976<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00131">131</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
10977
10978<p class="reference">References <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>, and <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>.</p>
10979
10980<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
10981<div class="fragment"><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; tuner.set_tune_new_kernels(<span class="keyword">true</span>); <span class="comment">// Turn on tuning initially.</span></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"> 135</span>&#160; <span class="keywordflow">switch</span> (level)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">case</span> TuningLevel::Rapid:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::RAPID);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">case</span> TuningLevel::Normal:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::NORMAL);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">case</span> TuningLevel::Exhaustive:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::EXHAUSTIVE);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">case</span> TuningLevel::None:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; tuner.set_tune_new_kernels(<span class="keyword">false</span>); <span class="comment">// Turn off tuning. Set to &quot;use&quot; only mode.</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">break</span>;</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><!-- fragment -->
10982</div>
10983</div>
10984<a id="ad701d0d29baa4266ab4d33b090aa661c"></a>
10985<h2 class="memtitle"><span class="permalink"><a href="#ad701d0d29baa4266ab4d33b090aa661c">&#9670;&nbsp;</a></span>ConvertActivationDescriptorToAclActivationLayerInfo()</h2>
10986
10987<div class="memitem">
10988<div class="memproto">
10989<table class="mlabels">
10990 <tr>
10991 <td class="mlabels-left">
10992 <table class="memname">
10993 <tr>
10994 <td class="memname">arm_compute::ActivationLayerInfo armnn::ConvertActivationDescriptorToAclActivationLayerInfo </td>
10995 <td>(</td>
10996 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
10997 <td class="paramname"><em>actDesc</em></td><td>)</td>
10998 <td></td>
10999 </tr>
11000 </table>
11001 </td>
11002 <td class="mlabels-right">
11003<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11004 </tr>
11005</table>
11006</div><div class="memdoc">
11007
11008<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00073">73</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11009
11010<p class="reference">References <a class="el" href="_arm_compute_utils_8hpp_source.html#l00051">ConvertActivationFunctionToAclActivationFunction()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>.</p>
11011
11012<p class="reference">Referenced by <a class="el" href="_cl_activation_workload_8cpp_source.html#l00032">ClActivationWorkload::ClActivationWorkload()</a>, and <a class="el" href="_neon_activation_workload_8cpp_source.html#l00030">NeonActivationWorkload::NeonActivationWorkload()</a>.</p>
11013<div class="fragment"><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; <span class="keywordflow">return</span> arm_compute::ActivationLayerInfo(<a class="code" href="namespacearmnn.html#afdba36f125621d775d471f0daf613df2">ConvertActivationFunctionToAclActivationFunction</a>(actDesc.m_Function),</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; actDesc.m_A, actDesc.m_B);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afdba36f125621d775d471f0daf613df2"><div class="ttname"><a href="namespacearmnn.html#afdba36f125621d775d471f0daf613df2">armnn::ConvertActivationFunctionToAclActivationFunction</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo::ActivationFunction ConvertActivationFunctionToAclActivationFunction(ActivationFunction armnnFunction)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00051">ArmComputeUtils.hpp:51</a></div></div>
11014</div><!-- fragment -->
11015</div>
11016</div>
11017<a id="afdba36f125621d775d471f0daf613df2"></a>
11018<h2 class="memtitle"><span class="permalink"><a href="#afdba36f125621d775d471f0daf613df2">&#9670;&nbsp;</a></span>ConvertActivationFunctionToAclActivationFunction()</h2>
11019
11020<div class="memitem">
11021<div class="memproto">
11022<table class="mlabels">
11023 <tr>
11024 <td class="mlabels-left">
11025 <table class="memname">
11026 <tr>
11027 <td class="memname">arm_compute::ActivationLayerInfo::ActivationFunction armnn::ConvertActivationFunctionToAclActivationFunction </td>
11028 <td>(</td>
11029 <td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
11030 <td class="paramname"><em>armnnFunction</em></td><td>)</td>
11031 <td></td>
11032 </tr>
11033 </table>
11034 </td>
11035 <td class="mlabels-right">
11036<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11037 </tr>
11038</table>
11039</div><div class="memdoc">
11040
11041<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00051">51</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11042
11043<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
11044
11045<p class="reference">Referenced by <a class="el" href="_arm_compute_utils_8hpp_source.html#l00073">ConvertActivationDescriptorToAclActivationLayerInfo()</a>.</p>
11046<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">using</span> AclActivationFunction = <a class="code" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">arm_compute::ActivationLayerInfo::ActivationFunction</a>;</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; <span class="keywordflow">switch</span> (armnnFunction)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear: <span class="keywordflow">return</span> AclActivationFunction::LINEAR;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Arm compute&#39;s &#39;logistic&#39; function is non-parameterized, so it is exactly a sigmoid function.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid: <span class="keywordflow">return</span> AclActivationFunction::LOGISTIC;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu: <span class="keywordflow">return</span> AclActivationFunction::RELU;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu: <span class="keywordflow">return</span> AclActivationFunction::LU_BOUNDED_RELU;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu: <span class="keywordflow">return</span> AclActivationFunction::SOFT_RELU;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu: <span class="keywordflow">return</span> AclActivationFunction::LEAKY_RELU;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs: <span class="keywordflow">return</span> AclActivationFunction::ABS;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt: <span class="keywordflow">return</span> AclActivationFunction::SQRT;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square: <span class="keywordflow">return</span> AclActivationFunction::SQUARE;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH: <span class="keywordflow">return</span> AclActivationFunction::TANH;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported activation function&quot;</span>);</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"> 70</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a56297e0f7b215eea46c818cb7528d9ea"><div class="ttname"><a href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">armnn::ActivationFunction</a></div><div class="ttdeci">ActivationFunction</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00054">Types.hpp:54</a></div></div>
11047</div><!-- fragment -->
11048</div>
11049</div>
11050<a id="abccab9266ab13dbd806445af31ddbba7"></a>
11051<h2 class="memtitle"><span class="permalink"><a href="#abccab9266ab13dbd806445af31ddbba7">&#9670;&nbsp;</a></span>ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo()</h2>
11052
11053<div class="memitem">
11054<div class="memproto">
11055<table class="mlabels">
11056 <tr>
11057 <td class="mlabels-left">
11058 <table class="memname">
11059 <tr>
11060 <td class="memname">arm_compute::FullyConnectedLayerInfo armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo </td>
11061 <td>(</td>
11062 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
11063 <td class="paramname"><em>fullyConnectedDesc</em></td><td>)</td>
11064 <td></td>
11065 </tr>
11066 </table>
11067 </td>
11068 <td class="mlabels-right">
11069<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11070 </tr>
11071</table>
11072</div><div class="memdoc">
11073
11074<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00118">118</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11075
11076<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
11077<div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; arm_compute::FullyConnectedLayerInfo fc_info;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; fc_info.transpose_weights = fullyConnectedDesc.m_TransposeWeightMatrix;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> fc_info;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div></div><!-- fragment -->
11078</div>
11079</div>
11080<a id="a9cdee30c21f3dd630b4e460527105b74"></a>
11081<h2 class="memtitle"><span class="permalink"><a href="#a9cdee30c21f3dd630b4e460527105b74">&#9670;&nbsp;</a></span>ConvertLogSeverity()</h2>
11082
11083<div class="memitem">
11084<div class="memproto">
11085 <table class="memname">
11086 <tr>
11087 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> armnn::ConvertLogSeverity </td>
11088 <td>(</td>
11089 <td class="paramtype"><a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a>&#160;</td>
11090 <td class="paramname"><em>severity</em></td><td>)</td>
11091 <td></td>
11092 </tr>
11093 </table>
11094</div><div class="memdoc">
11095
11096<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.html#l00157">157</a> of file <a class="el" href="_logging_8hpp_source.html">Logging.hpp</a>.</p>
11097<div class="fragment"><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; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a><span class="keyword">&gt;</span>(severity);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a93a3ba385cad27c4774e5fe64c025d3d"><div class="ttname"><a href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">armnn::LogSeverity</a></div><div class="ttdeci">LogSeverity</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00012">Utils.hpp:12</a></div></div>
11098</div><!-- fragment -->
11099</div>
11100</div>
11101<a id="ad69ffa576a596b9eb20ab6a41420c541"></a>
11102<h2 class="memtitle"><span class="permalink"><a href="#ad69ffa576a596b9eb20ab6a41420c541">&#9670;&nbsp;</a></span>ConvertMaskToACLFormat()</h2>
11103
11104<div class="memitem">
11105<div class="memproto">
11106 <table class="memname">
11107 <tr>
11108 <td class="memname">int32_t ConvertMaskToACLFormat </td>
11109 <td>(</td>
11110 <td class="paramtype">int32_t&#160;</td>
11111 <td class="paramname"><em>mask</em>, </td>
11112 </tr>
11113 <tr>
11114 <td class="paramkey"></td>
11115 <td></td>
11116 <td class="paramtype">int32_t&#160;</td>
11117 <td class="paramname"><em>numDim</em>&#160;</td>
11118 </tr>
11119 <tr>
11120 <td></td>
11121 <td>)</td>
11122 <td></td><td></td>
11123 </tr>
11124 </table>
11125</div><div class="memdoc">
11126
11127<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00192">192</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
11128
11129<p class="reference">Referenced by <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>, <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>, and <a class="el" href="_neon_strided_slice_workload_8cpp_source.html#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>.</p>
11130<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; int32_t reversedMask = 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; boost::numeric_cast&lt;unsigned int&gt;(numDim); ++i)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// Check if bit set in mask for each dimension</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; int32_t bit = (mask &amp; 1 &lt;&lt; i) != 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Increment the new mask with the bits reversed</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; reversedMask += (bit &lt;&lt; std::max(numDim-(boost::numeric_cast&lt;int&gt;(i)+1), 0));</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</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> reversedMask;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div></div><!-- fragment -->
11131</div>
11132</div>
11133<a id="aa5baabb8e3a4aa6cbdcab419d743e747"></a>
11134<h2 class="memtitle"><span class="permalink"><a href="#aa5baabb8e3a4aa6cbdcab419d743e747">&#9670;&nbsp;</a></span>ConvertNormalizationAlgorithmChannelToAclNormType()</h2>
11135
11136<div class="memitem">
11137<div class="memproto">
11138<table class="mlabels">
11139 <tr>
11140 <td class="mlabels-left">
11141 <table class="memname">
11142 <tr>
11143 <td class="memname">arm_compute::NormType armnn::ConvertNormalizationAlgorithmChannelToAclNormType </td>
11144 <td>(</td>
11145 <td class="paramtype"><a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
11146 <td class="paramname"><em>channelType</em></td><td>)</td>
11147 <td></td>
11148 </tr>
11149 </table>
11150 </td>
11151 <td class="mlabels-right">
11152<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11153 </tr>
11154</table>
11155</div><div class="memdoc">
11156
11157<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00106">106</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11158
11159<p class="reference">References <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
11160<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">using</span> arm_compute::NormType;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">switch</span> (channelType)</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">case</span> NormalizationAlgorithmChannel::Across: <span class="keywordflow">return</span> NormType::CROSS_MAP;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Within: <span class="keywordflow">return</span> NormType::IN_MAP_2D;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported normalization algorithm channel type&quot;</span>);</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"> 115</span>&#160;}</div></div><!-- fragment -->
11161</div>
11162</div>
11163<a id="a8f3bfacadfd6d2146d6ccd299dabc7aa"></a>
11164<h2 class="memtitle"><span class="permalink"><a href="#a8f3bfacadfd6d2146d6ccd299dabc7aa">&#9670;&nbsp;</a></span>ConvertOutputShapeRoundingToAclDimensionRoundingType()</h2>
11165
11166<div class="memitem">
11167<div class="memproto">
11168<table class="mlabels">
11169 <tr>
11170 <td class="mlabels-left">
11171 <table class="memname">
11172 <tr>
11173 <td class="memname">arm_compute::DimensionRoundingType armnn::ConvertOutputShapeRoundingToAclDimensionRoundingType </td>
11174 <td>(</td>
11175 <td class="paramtype"><a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
11176 <td class="paramname"><em>rounding</em></td><td>)</td>
11177 <td></td>
11178 </tr>
11179 </table>
11180 </td>
11181 <td class="mlabels-right">
11182<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11183 </tr>
11184</table>
11185</div><div class="memdoc">
11186
11187<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00092">92</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11188
11189<p class="reference">References <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
11190<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">using</span> arm_compute::DimensionRoundingType;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">switch</span> (rounding)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Ceiling: <span class="keywordflow">return</span> DimensionRoundingType::CEIL;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Floor: <span class="keywordflow">return</span> DimensionRoundingType::FLOOR;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported Output Shape Rounding type&quot;</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div></div><!-- fragment -->
11191</div>
11192</div>
11193<a id="ad256fcf8c7f4d5a240fa47f0b56d50af"></a>
11194<h2 class="memtitle"><span class="permalink"><a href="#ad256fcf8c7f4d5a240fa47f0b56d50af">&#9670;&nbsp;</a></span>ConvertPoolingAlgorithmToAclPoolingType()</h2>
11195
11196<div class="memitem">
11197<div class="memproto">
11198<table class="mlabels">
11199 <tr>
11200 <td class="mlabels-left">
11201 <table class="memname">
11202 <tr>
11203 <td class="memname">arm_compute::PoolingType armnn::ConvertPoolingAlgorithmToAclPoolingType </td>
11204 <td>(</td>
11205 <td class="paramtype"><a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
11206 <td class="paramname"><em>poolingAlgorithm</em></td><td>)</td>
11207 <td></td>
11208 </tr>
11209 </table>
11210 </td>
11211 <td class="mlabels-right">
11212<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11213 </tr>
11214</table>
11215</div><div class="memdoc">
11216
11217<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00079">79</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11218
11219<p class="reference">References <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a>, <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>.</p>
11220<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">using</span> arm_compute::PoolingType;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">switch</span> (poolingAlgorithm)</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; <span class="keywordflow">case</span> PoolingAlgorithm::Max: <span class="keywordflow">return</span> PoolingType::MAX;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Average: <span class="keywordflow">return</span> PoolingType::AVG;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::L2: <span class="keywordflow">return</span> PoolingType::L2;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported pooling algorithm&quot;</span>);</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;}</div></div><!-- fragment -->
11221</div>
11222</div>
11223<a id="ae9bdcb8ac91731109dc423d6ed476204"></a>
11224<h2 class="memtitle"><span class="permalink"><a href="#ae9bdcb8ac91731109dc423d6ed476204">&#9670;&nbsp;</a></span>ConvertResizeMethodToAclInterpolationPolicy()</h2>
11225
11226<div class="memitem">
11227<div class="memproto">
11228<table class="mlabels">
11229 <tr>
11230 <td class="mlabels-left">
11231 <table class="memname">
11232 <tr>
11233 <td class="memname">arm_compute::InterpolationPolicy armnn::ConvertResizeMethodToAclInterpolationPolicy </td>
11234 <td>(</td>
11235 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
11236 <td class="paramname"><em>resizeMethod</em></td><td>)</td>
11237 <td></td>
11238 </tr>
11239 </table>
11240 </td>
11241 <td class="mlabels-right">
11242<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11243 </tr>
11244</table>
11245</div><div class="memdoc">
11246
11247<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00125">125</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11248
11249<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
11250<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">switch</span> (resizeMethod)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">case</span> ResizeMethod::Bilinear:</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> arm_compute::InterpolationPolicy::BILINEAR;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">case</span> ResizeMethod::NearestNeighbor:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> arm_compute::InterpolationPolicy::NEAREST_NEIGHBOR;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported resize method&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div></div><!-- fragment -->
11251</div>
11252</div>
11253<a id="a51e8b95a429e11678ffa8b9fdc88351b"></a>
11254<h2 class="memtitle"><span class="permalink"><a href="#a51e8b95a429e11678ffa8b9fdc88351b">&#9670;&nbsp;</a></span>ConvertWeightTensorFromArmnnToAcl()</h2>
11255
11256<div class="memitem">
11257<div class="memproto">
11258 <table class="memname">
11259 <tr>
11260 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> ConvertWeightTensorFromArmnnToAcl </td>
11261 <td>(</td>
11262 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
11263 <td class="paramname"><em>weightTensor</em>, </td>
11264 </tr>
11265 <tr>
11266 <td class="paramkey"></td>
11267 <td></td>
11268 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
11269 <td class="paramname"><em>dataLayout</em>, </td>
11270 </tr>
11271 <tr>
11272 <td class="paramkey"></td>
11273 <td></td>
11274 <td class="paramtype">void *&#160;</td>
11275 <td class="paramname"><em>permuteBuffer</em>&#160;</td>
11276 </tr>
11277 <tr>
11278 <td></td>
11279 <td>)</td>
11280 <td></td><td></td>
11281 </tr>
11282 </table>
11283</div><div class="memdoc">
11284
11285<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00132">132</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
11286
11287<p class="reference">References <a class="el" href="_utils_8hpp_source.html#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00172">BaseTensor&lt; MemoryType &gt;::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00013">PermuteTensor()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00036">ReshapeWeightsForAcl()</a>.</p>
11288
11289<p class="reference">Referenced by <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html#l00070">ClDepthwiseConvolutionWorkload::ClDepthwiseConvolutionWorkload()</a>, <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>, and <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.html#l00072">NeonDepthwiseConvolutionWorkload::NeonDepthwiseConvolutionWorkload()</a>.</p>
11290<div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; BOOST_ASSERT_MSG(weightTensor, <span class="stringliteral">&quot;Invalid input tensor&quot;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BOOST_ASSERT_MSG(permuteBuffer, <span class="stringliteral">&quot;Invalid permute buffer&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">auto</span> multiplier = weightTensor-&gt;GetTensorInfo().GetShape()[0];</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">auto</span> inputChannels = weightTensor-&gt;GetTensorInfo().GetShape()[1];</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></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; <span class="comment">// 1. Permute the weights if necessary</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// If the data layout is NCHW no permutation is necessary, as a reshape to [ 1, I * M, H, W ] can be better done</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// starting from the current shape of [ M, I, H, W ]</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// If no permutation is necessary, leave the permutation vector empty</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; PermutationVector permutationVector{};</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</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"> 152</span>&#160; <span class="comment">// The data layout is NHWC, then permute the weights from [ M, I, H, W ] to [ H, W, I, M ]</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; permutationVector = { 3, 2, 0, 1 };</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; ConstTensor weightPermuted = <a class="code" href="namespacearmnn.html#a2a9ac8ebb69307ad4ec894ffa0523dbf">PermuteTensor</a>(weightTensor, permutationVector, permuteBuffer);</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="comment">// Shuffle the weights data to obtain the channel order needed used by Acl</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (multiplier &gt; 1 &amp;&amp; inputChannels &gt; 1 &amp;&amp; dataLayout == DataLayout::NCHW)</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; <span class="keywordflow">switch</span> (weightPermuted.GetDataType())</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;float&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; weightPermuted =</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; ReorderWeightChannelsForAcl&lt;half_float::half&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;uint8_t&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;int8_t&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">break</span>;</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"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// 2. Reshape the weights</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a>(weightPermuted.GetInfo(), dataLayout);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">// 3. Return both the tensor and the allocated storage to ensure that the data stays alive</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> weightPermuted;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a2a9ac8ebb69307ad4ec894ffa0523dbf"><div class="ttname"><a href="namespacearmnn.html#a2a9ac8ebb69307ad4ec894ffa0523dbf">armnn::PermuteTensor</a></div><div class="ttdeci">armnn::ConstTensor PermuteTensor(const ConstCpuTensorHandle *tensor, const PermutationVector &amp;permutationVector, void *permuteBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00013">WorkloadUtils.cpp:13</a></div></div>
11291<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
11292<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
11293<div class="ttc" id="namespacearmnn_html_a3170fdd696155a247ecd81d445c0e2e1"><div class="ttname"><a href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">armnn::ReshapeWeightsForAcl</a></div><div class="ttdeci">void ReshapeWeightsForAcl(TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00036">WorkloadUtils.cpp:36</a></div></div>
11294<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
11295</div><!-- fragment -->
11296</div>
11297</div>
11298<a id="a1e8288eac7e909fdb58b6113d816763a"></a>
11299<h2 class="memtitle"><span class="permalink"><a href="#a1e8288eac7e909fdb58b6113d816763a">&#9670;&nbsp;</a></span>ConvertWeightTensorInfoFromArmnnToAcl()</h2>
11300
11301<div class="memitem">
11302<div class="memproto">
11303 <table class="memname">
11304 <tr>
11305 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> ConvertWeightTensorInfoFromArmnnToAcl </td>
11306 <td>(</td>
11307 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
11308 <td class="paramname"><em>weightInfo</em>, </td>
11309 </tr>
11310 <tr>
11311 <td class="paramkey"></td>
11312 <td></td>
11313 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
11314 <td class="paramname"><em>dataLayout</em>&#160;</td>
11315 </tr>
11316 <tr>
11317 <td></td>
11318 <td>)</td>
11319 <td></td><td></td>
11320 </tr>
11321 </table>
11322</div><div class="memdoc">
11323
11324<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00109">109</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
11325
11326<p class="reference">References <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_permute_8cpp_source.html#l00098">armnnUtils::Permuted()</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00036">ReshapeWeightsForAcl()</a>.</p>
11327
11328<p class="reference">Referenced by <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>.</p>
11329<div class="fragment"><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="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></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; <span class="comment">// 1. Permute the weights if necessary</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// If the data layout is NCHW no permutation is necessary, as a reshape to [ 1, I * M, H, W ] can be better done</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// starting from the current shape of [ M, I, H, W ]</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; TensorInfo weightPermutedInfo(weightInfo);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// The data layout is NHWC, then permute the weights from [ M, I, H, W ] to [ H, W, I, M ]</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; PermutationVector permutationVector{ 3, 2, 0, 1 };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; weightPermutedInfo = <a class="code" href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(weightInfo, permutationVector);</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"> 125</span>&#160; <span class="comment">// 2. Reshape the weights</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a>(weightPermutedInfo, dataLayout);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// 3. Return the permuted weight info</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> weightPermutedInfo;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_abeaf4f6785039866fd075f4569ba8e84"><div class="ttname"><a href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a></div><div class="ttdeci">armnn::TensorShape Permuted(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00098">Permute.cpp:98</a></div></div>
11330<div class="ttc" id="namespacearmnn_html_a3170fdd696155a247ecd81d445c0e2e1"><div class="ttname"><a href="namespacearmnn.html#a3170fdd696155a247ecd81d445c0e2e1">armnn::ReshapeWeightsForAcl</a></div><div class="ttdeci">void ReshapeWeightsForAcl(TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00036">WorkloadUtils.cpp:36</a></div></div>
11331</div><!-- fragment -->
11332</div>
11333</div>
11334<a id="af98115cd07776d3fa8424434d2a7a897"></a>
11335<h2 class="memtitle"><span class="permalink"><a href="#af98115cd07776d3fa8424434d2a7a897">&#9670;&nbsp;</a></span>Convolve()</h2>
11336
11337<div class="memitem">
11338<div class="memproto">
11339 <table class="memname">
11340 <tr>
11341 <td class="memname">void Convolve </td>
11342 <td>(</td>
11343 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
11344 <td class="paramname"><em>rInputShape</em>, </td>
11345 </tr>
11346 <tr>
11347 <td class="paramkey"></td>
11348 <td></td>
11349 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
11350 <td class="paramname"><em>rInputDecoder</em>, </td>
11351 </tr>
11352 <tr>
11353 <td class="paramkey"></td>
11354 <td></td>
11355 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
11356 <td class="paramname"><em>rOutputShape</em>, </td>
11357 </tr>
11358 <tr>
11359 <td class="paramkey"></td>
11360 <td></td>
11361 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
11362 <td class="paramname"><em>rOutputEncoder</em>, </td>
11363 </tr>
11364 <tr>
11365 <td class="paramkey"></td>
11366 <td></td>
11367 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
11368 <td class="paramname"><em>rFilterShape</em>, </td>
11369 </tr>
11370 <tr>
11371 <td class="paramkey"></td>
11372 <td></td>
11373 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
11374 <td class="paramname"><em>rFilterDecoder</em>, </td>
11375 </tr>
11376 <tr>
11377 <td class="paramkey"></td>
11378 <td></td>
11379 <td class="paramtype">bool&#160;</td>
11380 <td class="paramname"><em>biasEnabled</em>, </td>
11381 </tr>
11382 <tr>
11383 <td class="paramkey"></td>
11384 <td></td>
11385 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *&#160;</td>
11386 <td class="paramname"><em>pBiasDecoder</em>, </td>
11387 </tr>
11388 <tr>
11389 <td class="paramkey"></td>
11390 <td></td>
11391 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
11392 <td class="paramname"><em>dataLayout</em>, </td>
11393 </tr>
11394 <tr>
11395 <td class="paramkey"></td>
11396 <td></td>
11397 <td class="paramtype">unsigned int&#160;</td>
11398 <td class="paramname"><em>paddingTop</em>, </td>
11399 </tr>
11400 <tr>
11401 <td class="paramkey"></td>
11402 <td></td>
11403 <td class="paramtype">unsigned int&#160;</td>
11404 <td class="paramname"><em>paddingLeft</em>, </td>
11405 </tr>
11406 <tr>
11407 <td class="paramkey"></td>
11408 <td></td>
11409 <td class="paramtype">unsigned int&#160;</td>
11410 <td class="paramname"><em>xStride</em>, </td>
11411 </tr>
11412 <tr>
11413 <td class="paramkey"></td>
11414 <td></td>
11415 <td class="paramtype">unsigned int&#160;</td>
11416 <td class="paramname"><em>yStride</em>, </td>
11417 </tr>
11418 <tr>
11419 <td class="paramkey"></td>
11420 <td></td>
11421 <td class="paramtype">unsigned int&#160;</td>
11422 <td class="paramname"><em>xDilation</em>, </td>
11423 </tr>
11424 <tr>
11425 <td class="paramkey"></td>
11426 <td></td>
11427 <td class="paramtype">unsigned int&#160;</td>
11428 <td class="paramname"><em>yDilation</em>, </td>
11429 </tr>
11430 <tr>
11431 <td class="paramkey"></td>
11432 <td></td>
11433 <td class="paramtype">bool&#160;</td>
11434 <td class="paramname"><em>depthwise</em>&#160;</td>
11435 </tr>
11436 <tr>
11437 <td></td>
11438 <td>)</td>
11439 <td></td><td></td>
11440 </tr>
11441 </table>
11442</div><div class="memdoc">
11443
11444<p class="definition">Definition at line <a class="el" href="_conv_impl_8cpp_source.html#l00071">71</a> of file <a class="el" href="_conv_impl_8cpp_source.html">ConvImpl.cpp</a>.</p>
11445
11446<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">BaseIterator::SetIndex()</a>.</p>
11447
11448<p class="reference">Referenced by <a class="el" href="_ref_depthwise_convolution2d_workload_8cpp_source.html#l00046">RefDepthwiseConvolution2dWorkload::Execute()</a>, and <a class="el" href="_ref_convolution2d_workload_8cpp_source.html#l00044">RefConvolution2dWorkload::Execute()</a>.</p>
11449<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (biasEnabled &amp;&amp; !pBiasDecoder)</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; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Bias is enabled but the bias data is invalid&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayoutIndexed(dataLayout);</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelsIndex = dataLayoutIndexed.GetChannelsIndex();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> heightIndex = dataLayoutIndexed.GetHeightIndex();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> widthIndex = dataLayoutIndexed.GetWidthIndex();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthMultiplier = depthwise ? rFilterShape[0] : 1;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = depthwise ? rFilterShape[1] : rFilterShape[channelsIndex];</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = depthwise ? inputChannels * depthMultiplier : rFilterShape[0];</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchSize = rOutputShape[0];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = rOutputShape[heightIndex];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = rOutputShape[widthIndex];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = rInputShape[heightIndex];</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = rInputShape[widthIndex];</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"> 108</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterHeight = depthwise ? rFilterShape[2] : rFilterShape[heightIndex];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterWidth = depthwise ? rFilterShape[3] : rFilterShape[widthIndex];</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIdx = 0; batchIdx &lt; batchSize; batchIdx++)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cOutput = 0; cOutput &lt; outputChannels; cOutput++)</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"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = 0; yOutput &lt; outputHeight; yOutput++)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = 0; xOutput &lt; outputWidth; xOutput++)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// This loop goes over each output element.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// For depthwise, each output channel corresponds to exactly one input channel.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// For normal, must loop over each input channel.</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cInput = 0; cInput &lt; (depthwise ? 1 : inputChannels); cInput++)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthwiseMultiplierIdx = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (depthwise)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; cInput = cOutput / depthMultiplier;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; depthwiseMultiplierIdx = cOutput % depthMultiplier;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yFilter = 0; yFilter &lt; filterHeight; yFilter++)</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"> 135</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xFilter = 0; xFilter &lt; filterWidth; xFilter++)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// This loop goes over each input element for each output element.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterIndex = 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Since dimensionality of kernel depends on depthwiseness, so does index.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (depthwise)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; filterIndex = depthwiseMultiplierIdx * filterWidth * filterHeight * inputChannels +</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; cInput * filterWidth * filterHeight +</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; yFilter * filterWidth +</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; xFilter;</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">else</span></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; <span class="comment">// Keep this implementation, as using DataLayoutIndexed::GetIndex causes great</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// performance regression.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; filterIndex = cOutput * filterHeight * filterWidth * inputChannels +</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; yFilter * filterWidth * inputChannels +</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; xFilter * inputChannels +</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; cInput;</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; <span class="keywordflow">else</span></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"> 161</span>&#160; filterIndex = cOutput * filterWidth * filterHeight * inputChannels +</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; cInput * filterWidth * filterHeight +</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; yFilter * filterWidth +</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; xFilter;</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"> 168</span>&#160; rFilterDecoder.<a class="code" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(filterIndex, cOutput);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> filterValue = rFilterDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> yInput = yOutput * yStride + yFilter * yDilation;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xInput = xOutput * xStride + xFilter * xDilation;</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; <span class="keywordtype">float</span> inputValue;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// Check if we&#39;re in the padding.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (yInput &lt; paddingTop || yInput &gt;= inputHeight + paddingTop ||</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; xInput &lt; paddingLeft || xInput &gt;= inputWidth + paddingLeft )</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; inputValue = 0.0f;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex = 0;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// Keep this implementation, as using DataLayoutIndexed::GetIndex causes great</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// performance regression.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</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; inputIndex = batchIdx * inputHeight * inputWidth * inputChannels +</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; (yInput - paddingTop) * inputWidth * inputChannels +</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; (xInput - paddingLeft) * inputChannels +</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; cInput;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; inputIndex = batchIdx * inputWidth * inputHeight * inputChannels +</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; inputWidth * inputHeight * cInput +</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; inputWidth * (yInput - paddingTop) +</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; xInput - paddingLeft;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</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; rInputDecoder[inputIndex];</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; inputValue = rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</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"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; sum += filterValue * inputValue;</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; }</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"> 212</span>&#160; <span class="keywordflow">if</span> (biasEnabled)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; (*pBiasDecoder).SetIndex(cOutput, cOutput);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; sum += pBiasDecoder-&gt;<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</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"> 218</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIdx = dataLayoutIndexed.GetIndex(rOutputShape, batchIdx, cOutput, yOutput, xOutput);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; rOutputEncoder[outIdx];</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(sum);</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"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_base_iterator_html_a1ec75b077d774dbfebf3662e8e4363c9"><div class="ttname"><a href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">armnn::BaseIterator::SetIndex</a></div><div class="ttdeci">virtual BaseIterator &amp; SetIndex(unsigned int index, unsigned int axisIndex=0)=0</div></div>
11450<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
11451<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
11452<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
11453</div><!-- fragment -->
11454</div>
11455</div>
11456<a id="a73447f827b995cf90d4029151514b4ba"></a>
11457<h2 class="memtitle"><span class="permalink"><a href="#a73447f827b995cf90d4029151514b4ba">&#9670;&nbsp;</a></span>CopyArmComputeClTensorData()</h2>
11458
11459<div class="memitem">
11460<div class="memproto">
11461 <table class="memname">
11462 <tr>
11463 <td class="memname">void armnn::CopyArmComputeClTensorData </td>
11464 <td>(</td>
11465 <td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
11466 <td class="paramname"><em>dstTensor</em>, </td>
11467 </tr>
11468 <tr>
11469 <td class="paramkey"></td>
11470 <td></td>
11471 <td class="paramtype">const T *&#160;</td>
11472 <td class="paramname"><em>srcData</em>&#160;</td>
11473 </tr>
11474 <tr>
11475 <td></td>
11476 <td>)</td>
11477 <td></td><td></td>
11478 </tr>
11479 </table>
11480</div><div class="memdoc">
11481
11482<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00030">30</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
11483
11484<p class="reference">References <a class="el" href="_cl_workload_utils_8hpp_source.html#l00020">ARMNN_SCOPED_PROFILING_EVENT_CL</a>.</p>
11485
11486<p class="reference">Referenced by <a class="el" href="_cl_constant_workload_8cpp_source.html#l00024">ClConstantWorkload::Execute()</a>.</p>
11487<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="_cl_workload_utils_8hpp.html#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a>(<span class="stringliteral">&quot;MapClTensorForWriting&quot;</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; dstTensor.map(<span class="keyword">true</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</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; <a class="code" href="_cl_workload_utils_8hpp.html#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a>(<span class="stringliteral">&quot;CopyToClTensor&quot;</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; armcomputetensorutils::CopyArmComputeITensorData&lt;T&gt;(srcData, dstTensor);</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"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; dstTensor.unmap();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div><div class="ttc" id="_cl_workload_utils_8hpp_html_a9166fc90a3ea47a2c9499a810b204daf"><div class="ttname"><a href="_cl_workload_utils_8hpp.html#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT_CL(name)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00020">ClWorkloadUtils.hpp:20</a></div></div>
11488</div><!-- fragment -->
11489</div>
11490</div>
11491<a id="a1351e01f9fb983937caf79e353142b41"></a>
11492<h2 class="memtitle"><span class="permalink"><a href="#a1351e01f9fb983937caf79e353142b41">&#9670;&nbsp;</a></span>CopyArmComputeTensorData()</h2>
11493
11494<div class="memitem">
11495<div class="memproto">
11496 <table class="memname">
11497 <tr>
11498 <td class="memname">void armnn::CopyArmComputeTensorData </td>
11499 <td>(</td>
11500 <td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
11501 <td class="paramname"><em>dstTensor</em>, </td>
11502 </tr>
11503 <tr>
11504 <td class="paramkey"></td>
11505 <td></td>
11506 <td class="paramtype">const T *&#160;</td>
11507 <td class="paramname"><em>srcData</em>&#160;</td>
11508 </tr>
11509 <tr>
11510 <td></td>
11511 <td>)</td>
11512 <td></td><td></td>
11513 </tr>
11514 </table>
11515</div><div class="memdoc">
11516
11517<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00029">29</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
11518
11519<p class="reference">Referenced by <a class="el" href="_neon_workload_utils_8hpp_source.html#l00035">InitializeArmComputeTensorData()</a>.</p>
11520<div class="fragment"><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; InitialiseArmComputeTensorEmpty(dstTensor);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; CopyArmComputeITensorData(srcData, dstTensor);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div></div><!-- fragment -->
11521</div>
11522</div>
11523<a id="a92c91193007aa49f4732d6dba5397f8d"></a>
11524<h2 class="memtitle"><span class="permalink"><a href="#a92c91193007aa49f4732d6dba5397f8d">&#9670;&nbsp;</a></span>CopyTensorContentsGeneric()</h2>
11525
11526<div class="memitem">
11527<div class="memproto">
11528 <table class="memname">
11529 <tr>
11530 <td class="memname">void armnn::CopyTensorContentsGeneric </td>
11531 <td>(</td>
11532 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *&#160;</td>
11533 <td class="paramname"><em>srcTensor</em>, </td>
11534 </tr>
11535 <tr>
11536 <td class="paramkey"></td>
11537 <td></td>
11538 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *&#160;</td>
11539 <td class="paramname"><em>dstTensor</em>, </td>
11540 </tr>
11541 <tr>
11542 <td class="paramkey"></td>
11543 <td></td>
11544 <td class="paramtype">CopyFunc&#160;</td>
11545 <td class="paramname"><em>copy</em>&#160;</td>
11546 </tr>
11547 <tr>
11548 <td></td>
11549 <td>)</td>
11550 <td></td><td></td>
11551 </tr>
11552 </table>
11553</div><div class="memdoc">
11554
11555<p class="definition">Definition at line <a class="el" href="_workload_utils_8hpp_source.html#l00049">49</a> of file <a class="el" href="_workload_utils_8hpp_source.html">WorkloadUtils.hpp</a>.</p>
11556
11557<p class="reference">References <a class="el" href="_profiling_8hpp_source.html#l00170">ARMNN_SCOPED_PROFILING_EVENT</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#affd5aae75cad90f472f96cfd25a13f29">ITensorHandle::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a30c3e09ce55369b66469443a4ca5ef03">ITensorHandle::GetStrides()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>, <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a563609828050f1b3a7868c23f3365923">ITensorHandle::Unmap()</a>.</p>
11558
11559<p class="reference">Referenced by <a class="el" href="_neon_convert_fp16_to_fp32_workload_8cpp_source.html#l00025">NeonConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_neon_convert_fp32_to_fp16_workload_8cpp_source.html#l00026">NeonConvertFp32ToFp16Workload::Execute()</a>, and <a class="el" href="_mem_copy_workload_8cpp_source.html#l00049">CopyMemGenericWorkload::Execute()</a>.</p>
11560<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// For ease of understanding, names are assigned to the dimensions</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// of the tensor as if NHWC, however this routine works with any 5D tensor</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; static_assert(<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> == 5, <span class="stringliteral">&quot;Please update CopyTensorContents&quot;</span>);</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; TensorShape srcStrides = srcTensor-&gt;GetStrides();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> TensorShape&amp; srcShape = srcTensor-&gt;GetShape();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> srcSize = srcTensor-&gt;GetStrides()[0] * srcShape[0];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; boost::ignore_unused(srcSize); <span class="comment">// Only used for asserts</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; TensorShape dstStrides = dstTensor-&gt;GetStrides();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> TensorShape&amp; dstShape = dstTensor-&gt;GetShape();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> dstSize = dstTensor-&gt;GetStrides()[0] * dstShape[0];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; boost::ignore_unused(dstSize); <span class="comment">// Only used for asserts</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">size_t</span> srcDepth = 1;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">size_t</span> srcBatches = 1;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">size_t</span> srcHeight = 1;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">size_t</span> srcWidth = 1;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">size_t</span> srcChannels = 1;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; AssignValues(srcShape.GetNumDimensions(),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; srcShape,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; srcChannels,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; srcWidth,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; srcHeight,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; srcBatches,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; srcDepth);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">size_t</span> srcDepthStride = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> srcBatchStride = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">size_t</span> srcHeightStride = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">size_t</span> srcWidthStride = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">size_t</span> srcChannelStride = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; AssignValues(srcStrides.GetNumDimensions(),</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; 0,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; srcStrides,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; srcChannelStride,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; srcWidthStride,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; srcHeightStride,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; srcBatchStride,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; srcDepthStride);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">size_t</span> dstDepth = 1;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">size_t</span> dstBatches = 1;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">size_t</span> dstHeight = 1;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">size_t</span> dstWidth = 1;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">size_t</span> dstChannels = 1;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; AssignValues(dstShape.GetNumDimensions(),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; dstShape,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; dstChannels,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; dstWidth,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; dstHeight,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; dstBatches,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; dstDepth);</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; <span class="keywordtype">size_t</span> dstDepthStride = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">size_t</span> dstBatchStride = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">size_t</span> dstHeightStride = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">size_t</span> dstWidthStride = 0;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">size_t</span> dstChannelStride = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; AssignValues(dstStrides.GetNumDimensions(),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; dstStrides,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; dstChannelStride,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; dstWidthStride,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; dstHeightStride,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; dstBatchStride,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; dstDepthStride);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* srcDataStart;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* dstDataStart;</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; <a class="code" href="_profiling_8hpp.html#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(Compute::Undefined, <span class="stringliteral">&quot;Synchronize buffers&quot;</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; srcDataStart = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(srcTensor-&gt;Map());</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; dstDataStart = <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(dstTensor-&gt;Map());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">size_t</span> copyLength = std::min(srcChannels * srcChannelStride, dstChannels * dstChannelStride);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">size_t</span> copyWidth = std::min(srcWidth, dstWidth);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">size_t</span> copyHeight = std::min(srcHeight, dstHeight);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">size_t</span> copyBatches = std::min(srcBatches, dstBatches);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">size_t</span> copyDepth = std::min(srcDepth, dstDepth);</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; <span class="comment">// Coalesce inner dimensions where possible</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// to reduce overheard calling copy() and to</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// allow for memory bandwidth optimisations</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (copyLength == srcWidthStride &amp;&amp;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; copyLength == dstWidthStride)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// There is no special padding between rows,</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// and sizes are compatible, so copy whole rows</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; copyLength *= copyWidth;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; copyWidth = 1;</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; <span class="keywordflow">if</span> (copyLength == srcHeightStride &amp;&amp;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; copyLength == dstHeightStride)</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="comment">// There is no special padding between batches</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// and sizes are compatible so copy whole batches</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; copyLength *= copyHeight;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; copyHeight = 1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* srcData = srcDataStart;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* dstData = dstDataStart;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> d = 0; d &lt; copyDepth; ++d)</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; <span class="keyword">auto</span> srcPtrDepth = srcData;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">auto</span> dstPtrDepth = dstData;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b = 0; b &lt; copyBatches; ++b)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">auto</span> srcPtrBatch = srcData;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">auto</span> dstPtrBatch = dstData;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; copyHeight; ++h)</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; <span class="keyword">auto</span> srcPtrChannel = srcData;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">auto</span> dstPtrChannel = dstData;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; copyWidth; ++w)</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; BOOST_ASSERT(srcData &gt;= srcDataStart &amp;&amp; srcData + copyLength &lt;= srcDataStart + srcSize);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; BOOST_ASSERT(dstData &gt;= dstDataStart &amp;&amp; dstData + copyLength &lt;= dstDataStart + dstSize);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; copy(dstData, srcData, copyLength);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; dstData += dstWidthStride;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; srcData += srcWidthStride;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstHeightStride) - (dstData - dstPtrChannel));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcHeightStride) - (srcData - srcPtrChannel));</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; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstBatchStride) - (dstData - dstPtrBatch));</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcBatchStride) - (srcData - srcPtrBatch));</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"> 183</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstDepthStride) - (dstData - dstPtrDepth));</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcDepthStride) - (srcData - srcPtrDepth));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</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; srcTensor-&gt;Unmap();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; dstTensor-&gt;Unmap();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div><div class="ttc" id="_profiling_8hpp_html_a5ccc65e2c464ac05ce311fdae7ede03a"><div class="ttname"><a href="_profiling_8hpp.html#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.html#l00170">Profiling.hpp:170</a></div></div>
11561<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
11562</div><!-- fragment -->
11563</div>
11564</div>
11565<a id="a5e783a951642781b9e7b55db06a514b7"></a>
11566<h2 class="memtitle"><span class="permalink"><a href="#a5e783a951642781b9e7b55db06a514b7">&#9670;&nbsp;</a></span>CreateAclNormalizationLayerInfoForL2Normalization()</h2>
11567
11568<div class="memitem">
11569<div class="memproto">
11570<table class="mlabels">
11571 <tr>
11572 <td class="mlabels-left">
11573 <table class="memname">
11574 <tr>
11575 <td class="memname">arm_compute::NormalizationLayerInfo armnn::CreateAclNormalizationLayerInfoForL2Normalization </td>
11576 <td>(</td>
11577 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
11578 <td class="paramname"><em>tensorInfo</em>, </td>
11579 </tr>
11580 <tr>
11581 <td class="paramkey"></td>
11582 <td></td>
11583 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
11584 <td class="paramname"><em>dataLayout</em>&#160;</td>
11585 </tr>
11586 <tr>
11587 <td></td>
11588 <td>)</td>
11589 <td></td><td></td>
11590 </tr>
11591 </table>
11592 </td>
11593 <td class="mlabels-right">
11594<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11595 </tr>
11596</table>
11597</div><div class="memdoc">
11598
11599<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.html#l00018">18</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.html">ArmComputeUtils.hpp</a>.</p>
11600
11601<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>.</p>
11602<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthDimension = dataLayout == <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a> ? 1 : 3;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depth = tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[depthDimension];</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// At the time of writing, {CL|Neon}L2Normalization performs the reduction only along dimension 0. This version of</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// L2 Normalization always performs the reduction along the depth axis, though. Thus, we repurpose</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="comment">// {CL|Neon}NormalizationLayers to act as depthwise L2 normalizations by carefully chosing the normalization</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// parameters.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="comment">// Please refer to both the reference implementation of the normalization layer and the implementation of</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">// {CL|Neon}NormalizationLayer when checking the derivations for the parameter values below.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Make sure normalization covers the entire depth range. ACL requires the normalization size to be odd.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// CL: This does not result in extra kernel threads not doing any work: See usage of the RADIUS parameter in</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// ACL&#39;s normalization_layer_cross_map() CL function.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> uint32_t normSize = depth * 2u + 1u;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// See ACL&#39;s NormalizationLayerInfo::scale_coeff() definition.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// For the reference implementation, to make alpha_ become 1, we&#39;d have to use alpha = normSize instead.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> alpha = 1.0f;</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"> 41</span>&#160; <span class="comment">// Don&#39;t offset the reduction.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> kappa = 0.0f;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// pow(reduction, -0.5) = 1 / sqrt(reduction)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> beta = 0.5f;</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> arm_compute::NormalizationLayerInfo(arm_compute::NormType::CROSS_MAP, normSize, alpha, beta, kappa, <span class="keyword">false</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
11603<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
11604</div><!-- fragment -->
11605</div>
11606</div>
11607<a id="a733ae6b70d0bfa43433c3e7606992328"></a>
11608<h2 class="memtitle"><span class="permalink"><a href="#a733ae6b70d0bfa43433c3e7606992328">&#9670;&nbsp;</a></span>CreateDescriptorForConcatenation()</h2>
11609
11610<div class="memitem">
11611<div class="memproto">
11612 <table class="memname">
11613 <tr>
11614 <td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> armnn::CreateDescriptorForConcatenation </td>
11615 <td>(</td>
11616 <td class="paramtype">TensorShapeIt&#160;</td>
11617 <td class="paramname"><em>first</em>, </td>
11618 </tr>
11619 <tr>
11620 <td class="paramkey"></td>
11621 <td></td>
11622 <td class="paramtype">TensorShapeIt&#160;</td>
11623 <td class="paramname"><em>last</em>, </td>
11624 </tr>
11625 <tr>
11626 <td class="paramkey"></td>
11627 <td></td>
11628 <td class="paramtype">unsigned int&#160;</td>
11629 <td class="paramname"><em>concatenationDimension</em>&#160;</td>
11630 </tr>
11631 <tr>
11632 <td></td>
11633 <td>)</td>
11634 <td></td><td></td>
11635 </tr>
11636 </table>
11637</div><div class="memdoc">
11638
11639<p>Convenience template to create an <a class="el" href="structarmnn_1_1_origins_descriptor.html" title="An OriginsDescriptor for the ConcatLayer. Descriptor to configure the concatenation process...">OriginsDescriptor</a> to use when creating a <a class="el" href="classarmnn_1_1_concat_layer.html" title="This layer represents a merge operation. ">ConcatLayer</a> for performing concatenation of a number of input tensors. </p>
11640
11641<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00242">242</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
11642
11643<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00150">OriginsDescriptor::SetConcatAxis()</a>, and <a class="el" href="_descriptors_8cpp_source.html#l00159">OriginsDescriptor::SetViewOriginCoord()</a>.</p>
11644
11645<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01542">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_concat_test_impl_8cpp_source.html#l01916">ConcatDifferentInputOutputQParamTest()</a>, <a class="el" href="_concat_test_impl_8cpp_source.html#l00026">CreateDescriptorForConcat()</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00232">CreateMergerDescriptorForConcatenation()</a>.</p>
11646<div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">auto</span> numInputs = std::distance(first, last);</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">if</span> (numInputs &lt; 2)</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; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Concatenation requires at least 2 inputs&quot;</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; firstInputShape = *first;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = firstInputShape.GetNumDimensions();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first + 1; it != last; ++it)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (it-&gt;GetNumDimensions() != numDimensions)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;All inputs to concatenation must have the same number of dimensions&quot;</span>);</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"> 262</span>&#160; }</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">if</span> (concatenationDimension &gt;= numDimensions)</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; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;concatenationDimension must be between 0 and the number of dimensions.&quot;</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</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">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> d = 0; d &lt; numDimensions; ++d)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> dimSizeOk = (d == concatenationDimension) || (firstInputShape[d] == (*it)[d]);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (!dimSizeOk)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;All inputs to concatenation must be the same size along all dimensions &quot;</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="stringliteral">&quot; except the concatenation dimension&quot;</span>);</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; }</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"> 282</span>&#160; OriginsDescriptor viewsDescriptor(static_cast&lt;uint32_t&gt;(numInputs), numDimensions);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; viewsDescriptor.SetConcatAxis(concatenationDimension);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; uint32_t viewIndex = 0u;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; uint32_t coordAlongConcatDim = 0u;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; inputShape = *it;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; concatenationDimension; ++i)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; viewsDescriptor.SetViewOriginCoord(viewIndex, i, 0);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; viewsDescriptor.SetViewOriginCoord(viewIndex, concatenationDimension, coordAlongConcatDim);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimSize = inputShape[concatenationDimension];</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; coordAlongConcatDim += dimSize;</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"> 301</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = concatenationDimension + 1; i &lt; numDimensions; ++i)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; viewsDescriptor.SetViewOriginCoord(viewIndex, i, 0);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</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; ++viewIndex;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> viewsDescriptor;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div></div><!-- fragment -->
11647</div>
11648</div>
11649<a id="a2fe587812a8dd3e7d7419cbb84a7f4ff"></a>
11650<h2 class="memtitle"><span class="permalink"><a href="#a2fe587812a8dd3e7d7419cbb84a7f4ff">&#9670;&nbsp;</a></span>CreateMergerDescriptorForConcatenation()</h2>
11651
11652<div class="memitem">
11653<div class="memproto">
11654 <table class="memname">
11655 <tr>
11656 <td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> armnn::CreateMergerDescriptorForConcatenation </td>
11657 <td>(</td>
11658 <td class="paramtype">TensorShapeIt&#160;</td>
11659 <td class="paramname"><em>first</em>, </td>
11660 </tr>
11661 <tr>
11662 <td class="paramkey"></td>
11663 <td></td>
11664 <td class="paramtype">TensorShapeIt&#160;</td>
11665 <td class="paramname"><em>last</em>, </td>
11666 </tr>
11667 <tr>
11668 <td class="paramkey"></td>
11669 <td></td>
11670 <td class="paramtype">unsigned int&#160;</td>
11671 <td class="paramname"><em>concatenationDimension</em>&#160;</td>
11672 </tr>
11673 <tr>
11674 <td></td>
11675 <td>)</td>
11676 <td></td><td></td>
11677 </tr>
11678 </table>
11679</div><div class="memdoc">
11680
11681<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.html#l00232">232</a> of file <a class="el" href="_descriptors_8hpp_source.html">Descriptors.hpp</a>.</p>
11682
11683<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00242">CreateDescriptorForConcatenation()</a>.</p>
11684<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a>(first, last, concatenationDimension);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a733ae6b70d0bfa43433c3e7606992328"><div class="ttname"><a href="namespacearmnn.html#a733ae6b70d0bfa43433c3e7606992328">armnn::CreateDescriptorForConcatenation</a></div><div class="ttdeci">OriginsDescriptor CreateDescriptorForConcatenation(TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</div><div class="ttdoc">Convenience template to create an OriginsDescriptor to use when creating a ConcatLayer for performing...</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00242">Descriptors.hpp:242</a></div></div>
11685</div><!-- fragment -->
11686</div>
11687</div>
11688<a id="a5fbc1479db5f4ff70a750cf02d58971b"></a>
11689<h2 class="memtitle"><span class="permalink"><a href="#a5fbc1479db5f4ff70a750cf02d58971b">&#9670;&nbsp;</a></span>CreateNetworkWithActivationLayer()</h2>
11690
11691<div class="memitem">
11692<div class="memproto">
11693 <table class="memname">
11694 <tr>
11695 <td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithActivationLayer </td>
11696 <td>(</td>
11697 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
11698 <td class="paramname"><em>descriptor</em>, </td>
11699 </tr>
11700 <tr>
11701 <td class="paramkey"></td>
11702 <td></td>
11703 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
11704 <td class="paramname"><em>shape</em>&#160;</td>
11705 </tr>
11706 <tr>
11707 <td></td>
11708 <td>)</td>
11709 <td></td><td></td>
11710 </tr>
11711 </table>
11712</div><div class="memdoc">
11713
11714<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00297">297</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
11715
11716<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
11717
11718<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00408">BOOST_AUTO_TEST_CASE()</a>.</p>
11719<div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;{</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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"> 301</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(descriptor);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</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; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; activation-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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="comment">// Set TensorInfo</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
11720<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
11721</div><!-- fragment -->
11722</div>
11723</div>
11724<a id="aad4b8cb9a4d882a48bc21510f0d1a938"></a>
11725<h2 class="memtitle"><span class="permalink"><a href="#aad4b8cb9a4d882a48bc21510f0d1a938">&#9670;&nbsp;</a></span>CreateNetworkWithFullyConnectedLayer()</h2>
11726
11727<div class="memitem">
11728<div class="memproto">
11729 <table class="memname">
11730 <tr>
11731 <td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithFullyConnectedLayer </td>
11732 <td>(</td>
11733 <td class="paramtype">const bool&#160;</td>
11734 <td class="paramname"><em>biasEnabled</em>, </td>
11735 </tr>
11736 <tr>
11737 <td class="paramkey"></td>
11738 <td></td>
11739 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
11740 <td class="paramname"><em>inputShape</em>, </td>
11741 </tr>
11742 <tr>
11743 <td class="paramkey"></td>
11744 <td></td>
11745 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
11746 <td class="paramname"><em>outputShape</em>&#160;</td>
11747 </tr>
11748 <tr>
11749 <td></td>
11750 <td>)</td>
11751 <td></td><td></td>
11752 </tr>
11753 </table>
11754</div><div class="memdoc">
11755
11756<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00951">951</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
11757
11758<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
11759
11760<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
11761<div class="fragment"><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;{</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; FullyConnectedDescriptor desc;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; desc.m_BiasEnabled = biasEnabled;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keyword">const</span> TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(inputShape, DataType::Float32);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keyword">const</span> TensorInfo outputInfo(outputShape, DataType::Float32);</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; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; IConnectableLayer* fullyConnected;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; Optional&lt;ConstTensor&gt; optionalBias;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; std::vector&lt;float&gt; biasData{10.0f, 20.0f, 30.0f};</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span> (desc.m_BiasEnabled)</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; ConstTensor bias(info, biasData);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; optionalBias = Optional&lt;ConstTensor&gt;(bias);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; fullyConnected = network-&gt;AddFullyConnectedLayer(desc, weights, optionalBias);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; input0-&gt;GetOutputSlot(0).Connect(fullyConnected-&gt;GetInputSlot(0));</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; fullyConnected-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; fullyConnected-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
11762<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
11763</div><!-- fragment -->
11764</div>
11765</div>
11766<a id="aa9c6c1a7b5380a99a536f4740f87dd59"></a>
11767<h2 class="memtitle"><span class="permalink"><a href="#aa9c6c1a7b5380a99a536f4740f87dd59">&#9670;&nbsp;</a></span>CreateNetworkWithInputOutputLayers()</h2>
11768
11769<div class="memitem">
11770<div class="memproto">
11771 <table class="memname">
11772 <tr>
11773 <td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithInputOutputLayers </td>
11774 <td>(</td>
11775 <td class="paramname"></td><td>)</td>
11776 <td></td>
11777 </tr>
11778 </table>
11779</div><div class="memdoc">
11780
11781<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00318">318</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
11782
11783<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
11784
11785<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00347">BOOST_AUTO_TEST_CASE()</a>.</p>
11786<div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;{</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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="comment">// Add input/output layers</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; TensorShape shape{8U};</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</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> network;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
11787<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
11788</div><!-- fragment -->
11789</div>
11790</div>
11791<a id="a9c91b774c3089c55df77cc3a42da72de"></a>
11792<h2 class="memtitle"><span class="permalink"><a href="#a9c91b774c3089c55df77cc3a42da72de">&#9670;&nbsp;</a></span>CreateNetworkWithSoftmaxLayer()</h2>
11793
11794<div class="memitem">
11795<div class="memproto">
11796 <table class="memname">
11797 <tr>
11798 <td class="memname"><a class="el" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithSoftmaxLayer </td>
11799 <td>(</td>
11800 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
11801 <td class="paramname"><em>descriptor</em>, </td>
11802 </tr>
11803 <tr>
11804 <td class="paramkey"></td>
11805 <td></td>
11806 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
11807 <td class="paramname"><em>shape</em>&#160;</td>
11808 </tr>
11809 <tr>
11810 <td></td>
11811 <td>)</td>
11812 <td></td><td></td>
11813 </tr>
11814 </table>
11815</div><div class="memdoc">
11816
11817<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01357">1357</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
11818
11819<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
11820
11821<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01378">BOOST_AUTO_TEST_CASE()</a>.</p>
11822<div class="fragment"><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;{</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; IConnectableLayer* softmax = network-&gt;AddSoftmaxLayer(descriptor);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; input0-&gt;GetOutputSlot(0).Connect(softmax-&gt;GetInputSlot(0));</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; softmax-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; softmax-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
11823<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
11824</div><!-- fragment -->
11825</div>
11826</div>
11827<a id="a310dd804fd70eadb1e8854325e63f0bd"></a>
11828<h2 class="memtitle"><span class="permalink"><a href="#a310dd804fd70eadb1e8854325e63f0bd">&#9670;&nbsp;</a></span>CreateQuantizedConst()</h2>
11829
11830<div class="memitem">
11831<div class="memproto">
11832 <table class="memname">
11833 <tr>
11834 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> CreateQuantizedConst </td>
11835 <td>(</td>
11836 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;&#160;</td>
11837 <td class="paramname"><em>tensor</em>, </td>
11838 </tr>
11839 <tr>
11840 <td class="paramkey"></td>
11841 <td></td>
11842 <td class="paramtype">std::vector&lt; uint8_t &gt; &amp;&#160;</td>
11843 <td class="paramname"><em>backing</em>&#160;</td>
11844 </tr>
11845 <tr>
11846 <td></td>
11847 <td>)</td>
11848 <td></td><td></td>
11849 </tr>
11850 </table>
11851</div><div class="memdoc">
11852
11853<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8cpp_source.html#l00015">15</a> of file <a class="el" href="_network_quantizer_utils_8cpp_source.html">NetworkQuantizerUtils.cpp</a>.</p>
11854
11855<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8hpp_source.html#l00177">BaseTensor&lt; MemoryType &gt;::GetMemoryArea()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00023">QuantizeConstant()</a>.</p>
11856
11857<p class="reference">Referenced by <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00023">QuantizeConstant()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00146">QuantizerVisitor::VisitBatchNormalizationLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00204">QuantizerVisitor::VisitConstantLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00215">QuantizerVisitor::VisitConvolution2dLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00250">QuantizerVisitor::VisitDepthwiseConvolution2dLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.html#l00285">QuantizerVisitor::VisitFullyConnectedLayer()</a>, and <a class="el" href="_quantizer_visitor_8cpp_source.html#l00536">QuantizerVisitor::VisitTransposeConvolution2dLayer()</a>.</p>
11858<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordtype">float</span> scale = 0.0f;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">int</span> offset = 0;</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="comment">// Reserve the backing memory</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; backing.resize(tensor.GetInfo().GetNumElements());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> type = tensor.GetInfo().GetDataType();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">switch</span>(type)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>(static_cast&lt;const float*&gt;(tensor.GetMemoryArea()),</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; backing.data(),</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; backing.size(),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; scale,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; offset);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Can&#39;t quantize unsupported data type&quot;</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;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; TensorInfo qInfo(tensor.GetInfo().GetShape(), DataType::QAsymmU8, scale, offset);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> ConstTensor(qInfo, backing);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0e2bce68a1f7eff47ead4d9a2804eb91"><div class="ttname"><a href="namespacearmnn.html#a0e2bce68a1f7eff47ead4d9a2804eb91">armnn::QuantizeConstant</a></div><div class="ttdeci">void QuantizeConstant(const srcType *src, uint8_t *dst, size_t numElements, float &amp;scale, int &amp;offset)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00023">NetworkQuantizerUtils.hpp:23</a></div></div>
11859<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
11860</div><!-- fragment -->
11861</div>
11862</div>
11863<a id="a120c131df35d78b3a56cb0f07decaf35"></a>
11864<h2 class="memtitle"><span class="permalink"><a href="#a120c131df35d78b3a56cb0f07decaf35">&#9670;&nbsp;</a></span>CreateStartOfLeakyReluNetwork()</h2>
11865
11866<div class="memitem">
11867<div class="memproto">
11868 <table class="memname">
11869 <tr>
11870 <td class="memname"><a class="el" href="classarmnn_1_1_i_connectable_layer.html">IConnectableLayer</a>* armnn::CreateStartOfLeakyReluNetwork </td>
11871 <td>(</td>
11872 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *&#160;</td>
11873 <td class="paramname"><em>network</em>, </td>
11874 </tr>
11875 <tr>
11876 <td class="paramkey"></td>
11877 <td></td>
11878 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
11879 <td class="paramname"><em>info</em>&#160;</td>
11880 </tr>
11881 <tr>
11882 <td></td>
11883 <td>)</td>
11884 <td></td><td></td>
11885 </tr>
11886 </table>
11887</div><div class="memdoc">
11888
11889<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01474">1474</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
11890
11891<p class="reference">References <a class="el" href="classarmnn_1_1_i_network.html#aea068f6094e1c3bfcdf8167b68112632">INetwork::AddActivationLayer()</a>, <a class="el" href="classarmnn_1_1_i_network.html#a87d5ec72def73ca14bd2987a024bd569">INetwork::AddInputLayer()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.html#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.html#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.html#l00035">ActivationDescriptor::m_Function</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
11892
11893<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01511">BOOST_AUTO_TEST_CASE()</a>.</p>
11894<div class="fragment"><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; ActivationDescriptor activationDescriptor;</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; activationDescriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; activationDescriptor.m_A = 3.5f;</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; activationDescriptor.m_B = -10.0f;</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="comment">// Add the layers</span></div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(activationDescriptor);</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</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; <span class="keywordflow">return</span> activation;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;}</div></div><!-- fragment -->
11895</div>
11896</div>
11897<a id="a1ec6b4c20ed294a96cf94c33c24caaf5"></a>
11898<h2 class="memtitle"><span class="permalink"><a href="#a1ec6b4c20ed294a96cf94c33c24caaf5">&#9670;&nbsp;</a></span>CreateSupportedBackends()</h2>
11899
11900<div class="memitem">
11901<div class="memproto">
11902 <table class="memname">
11903 <tr>
11904 <td class="memname"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> CreateSupportedBackends </td>
11905 <td>(</td>
11906 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
11907 <td class="paramname"><em>handleFactoryRegistry</em>, </td>
11908 </tr>
11909 <tr>
11910 <td class="paramkey"></td>
11911 <td></td>
11912 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.html">BackendSettings</a> &amp;&#160;</td>
11913 <td class="paramname"><em>backendSettings</em>&#160;</td>
11914 </tr>
11915 <tr>
11916 <td></td>
11917 <td>)</td>
11918 <td></td><td></td>
11919 </tr>
11920 </table>
11921</div><div class="memdoc">
11922
11923<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00326">326</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
11924
11925<p class="reference">References <a class="el" href="_backend_registry_8cpp_source.html#l00013">BackendRegistryInstance()</a>, and <a class="el" href="_backend_settings_8hpp_source.html#l00017">BackendSettings::m_SupportedBackends</a>.</p>
11926
11927<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
11928<div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;{</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span>&amp; backendRegistry = <a class="code" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.m_SupportedBackends)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">auto</span> backendFactory = backendRegistry.GetFactory(selectedBackend);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">auto</span> backendObjPtr = backendFactory();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; BOOST_ASSERT(backendObjPtr);</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"> 337</span>&#160; backendObjPtr-&gt;RegisterTensorHandleFactories(handleFactoryRegistry);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; backends[backendObjPtr-&gt;GetId()] = std::move(backendObjPtr);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</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; <span class="keywordflow">return</span> backends;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00013">BackendRegistry.cpp:13</a></div></div>
11929<div class="ttc" id="namespacearmnn_html_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.html#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.html#l00292">Network.hpp:292</a></div></div>
11930</div><!-- fragment -->
11931</div>
11932</div>
11933<a id="a5aae369ef847a00062925cea8e9be9c4"></a>
11934<h2 class="memtitle"><span class="permalink"><a href="#a5aae369ef847a00062925cea8e9be9c4">&#9670;&nbsp;</a></span>Debug()</h2>
11935
11936<div class="memitem">
11937<div class="memproto">
11938 <table class="memname">
11939 <tr>
11940 <td class="memname">void Debug </td>
11941 <td>(</td>
11942 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
11943 <td class="paramname"><em>inputInfo</em>, </td>
11944 </tr>
11945 <tr>
11946 <td class="paramkey"></td>
11947 <td></td>
11948 <td class="paramtype">const T *&#160;</td>
11949 <td class="paramname"><em>inputData</em>, </td>
11950 </tr>
11951 <tr>
11952 <td class="paramkey"></td>
11953 <td></td>
11954 <td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
11955 <td class="paramname"><em>guid</em>, </td>
11956 </tr>
11957 <tr>
11958 <td class="paramkey"></td>
11959 <td></td>
11960 <td class="paramtype">const std::string &amp;&#160;</td>
11961 <td class="paramname"><em>layerName</em>, </td>
11962 </tr>
11963 <tr>
11964 <td class="paramkey"></td>
11965 <td></td>
11966 <td class="paramtype">unsigned int&#160;</td>
11967 <td class="paramname"><em>slotIndex</em>&#160;</td>
11968 </tr>
11969 <tr>
11970 <td></td>
11971 <td>)</td>
11972 <td></td><td></td>
11973 </tr>
11974 </table>
11975</div><div class="memdoc">
11976
11977<p class="definition">Definition at line <a class="el" href="_debug_8cpp_source.html#l00019">19</a> of file <a class="el" href="_debug_8cpp_source.html">Debug.cpp</a>.</p>
11978
11979<p class="reference">References <a class="el" href="namespacearmnn.html#a26abbe393a88835dd569523bec69719b">Debug&lt; float &gt;()</a>, <a class="el" href="namespacearmnn.html#a3b0ab9518e3fd6a0447c174df57a313c">Debug&lt; Half &gt;()</a>, <a class="el" href="namespacearmnn.html#acc771f233bb7884932260ba353118b46">Debug&lt; int16_t &gt;()</a>, <a class="el" href="namespacearmnn.html#a7c1cb9cf0678f74b1dcfff310d1475fd">Debug&lt; int32_t &gt;()</a>, <a class="el" href="namespacearmnn.html#ac2167b3a09fab7c9b58af461bd990c3b">Debug&lt; int8_t &gt;()</a>, <a class="el" href="namespacearmnn.html#a1121718a486db835afa99328650e7e89">Debug&lt; uint8_t &gt;()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
11980
11981<p class="reference">Referenced by <a class="el" href="_ref_debug_workload_8cpp_source.html#l00018">RefDebugWorkload&lt; DataType &gt;::Execute()</a>.</p>
11982<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputInfo.GetNumDimensions();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements = inputInfo.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</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; std::vector&lt;unsigned int&gt; strides(numDims, 0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; strides[numDims - 1] = inputShape[numDims - 1];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 2; i &lt;= numDims; i++)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; strides[numDims - i] = strides[numDims - i + 1] * inputShape[numDims - i];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;layerGuid\&quot;: &quot;</span> &lt;&lt; guid &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;layerName\&quot;: \&quot;&quot;</span> &lt;&lt; layerName &lt;&lt; <span class="stringliteral">&quot;\&quot;, &quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;outputSlot\&quot;: &quot;</span> &lt;&lt; slotIndex &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;shape\&quot;: &quot;</span>;</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; std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numDims; i++)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::cout &lt;&lt; inputShape[i];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (i != numDims - 1)</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; std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</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; std::cout &lt;&lt; <span class="stringliteral">&quot;], &quot;</span>;</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; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;min\&quot;: &quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &lt;&lt; boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(*std::min_element(inputData, inputData + numElements)) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;max\&quot;: &quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &lt;&lt; boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(*std::max_element(inputData, inputData + numElements)) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;data\&quot;: &quot;</span>;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; numDims; j++)</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">if</span> (i % strides[j] == 0)</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; std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> ;</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"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::cout &lt;&lt; boost::numeric_cast&lt;float&gt;(inputData[i]);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; numDims; j++)</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; <span class="keywordflow">if</span> ((i+1) % strides[j] == 0)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> ;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</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">if</span> (i != numElements - 1)</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; std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</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"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot; }&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div></div><!-- fragment -->
11983</div>
11984</div>
11985<a id="a26abbe393a88835dd569523bec69719b"></a>
11986<h2 class="memtitle"><span class="permalink"><a href="#a26abbe393a88835dd569523bec69719b">&#9670;&nbsp;</a></span>Debug< float >()</h2>
11987
11988<div class="memitem">
11989<div class="memproto">
11990 <table class="memname">
11991 <tr>
11992 <td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; float &gt; </td>
11993 <td>(</td>
11994 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
11995 <td class="paramname"><em>inputInfo</em>, </td>
11996 </tr>
11997 <tr>
11998 <td class="paramkey"></td>
11999 <td></td>
12000 <td class="paramtype">const float *&#160;</td>
12001 <td class="paramname"><em>inputData</em>, </td>
12002 </tr>
12003 <tr>
12004 <td class="paramkey"></td>
12005 <td></td>
12006 <td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12007 <td class="paramname"><em>guid</em>, </td>
12008 </tr>
12009 <tr>
12010 <td class="paramkey"></td>
12011 <td></td>
12012 <td class="paramtype">const std::string &amp;&#160;</td>
12013 <td class="paramname"><em>layerName</em>, </td>
12014 </tr>
12015 <tr>
12016 <td class="paramkey"></td>
12017 <td></td>
12018 <td class="paramtype">unsigned int&#160;</td>
12019 <td class="paramname"><em>slotIndex</em>&#160;</td>
12020 </tr>
12021 <tr>
12022 <td></td>
12023 <td>)</td>
12024 <td></td><td></td>
12025 </tr>
12026 </table>
12027</div><div class="memdoc">
12028
12029<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
12030
12031</div>
12032</div>
12033<a id="a3b0ab9518e3fd6a0447c174df57a313c"></a>
12034<h2 class="memtitle"><span class="permalink"><a href="#a3b0ab9518e3fd6a0447c174df57a313c">&#9670;&nbsp;</a></span>Debug< Half >()</h2>
12035
12036<div class="memitem">
12037<div class="memproto">
12038 <table class="memname">
12039 <tr>
12040 <td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
12041 <td>(</td>
12042 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12043 <td class="paramname"><em>inputInfo</em>, </td>
12044 </tr>
12045 <tr>
12046 <td class="paramkey"></td>
12047 <td></td>
12048 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
12049 <td class="paramname"><em>inputData</em>, </td>
12050 </tr>
12051 <tr>
12052 <td class="paramkey"></td>
12053 <td></td>
12054 <td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12055 <td class="paramname"><em>guid</em>, </td>
12056 </tr>
12057 <tr>
12058 <td class="paramkey"></td>
12059 <td></td>
12060 <td class="paramtype">const std::string &amp;&#160;</td>
12061 <td class="paramname"><em>layerName</em>, </td>
12062 </tr>
12063 <tr>
12064 <td class="paramkey"></td>
12065 <td></td>
12066 <td class="paramtype">unsigned int&#160;</td>
12067 <td class="paramname"><em>slotIndex</em>&#160;</td>
12068 </tr>
12069 <tr>
12070 <td></td>
12071 <td>)</td>
12072 <td></td><td></td>
12073 </tr>
12074 </table>
12075</div><div class="memdoc">
12076
12077<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
12078
12079</div>
12080</div>
12081<a id="acc771f233bb7884932260ba353118b46"></a>
12082<h2 class="memtitle"><span class="permalink"><a href="#acc771f233bb7884932260ba353118b46">&#9670;&nbsp;</a></span>Debug< int16_t >()</h2>
12083
12084<div class="memitem">
12085<div class="memproto">
12086 <table class="memname">
12087 <tr>
12088 <td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int16_t &gt; </td>
12089 <td>(</td>
12090 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12091 <td class="paramname"><em>inputInfo</em>, </td>
12092 </tr>
12093 <tr>
12094 <td class="paramkey"></td>
12095 <td></td>
12096 <td class="paramtype">const int16_t *&#160;</td>
12097 <td class="paramname"><em>inputData</em>, </td>
12098 </tr>
12099 <tr>
12100 <td class="paramkey"></td>
12101 <td></td>
12102 <td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12103 <td class="paramname"><em>guid</em>, </td>
12104 </tr>
12105 <tr>
12106 <td class="paramkey"></td>
12107 <td></td>
12108 <td class="paramtype">const std::string &amp;&#160;</td>
12109 <td class="paramname"><em>layerName</em>, </td>
12110 </tr>
12111 <tr>
12112 <td class="paramkey"></td>
12113 <td></td>
12114 <td class="paramtype">unsigned int&#160;</td>
12115 <td class="paramname"><em>slotIndex</em>&#160;</td>
12116 </tr>
12117 <tr>
12118 <td></td>
12119 <td>)</td>
12120 <td></td><td></td>
12121 </tr>
12122 </table>
12123</div><div class="memdoc">
12124
12125<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
12126
12127</div>
12128</div>
12129<a id="a7c1cb9cf0678f74b1dcfff310d1475fd"></a>
12130<h2 class="memtitle"><span class="permalink"><a href="#a7c1cb9cf0678f74b1dcfff310d1475fd">&#9670;&nbsp;</a></span>Debug< int32_t >()</h2>
12131
12132<div class="memitem">
12133<div class="memproto">
12134 <table class="memname">
12135 <tr>
12136 <td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int32_t &gt; </td>
12137 <td>(</td>
12138 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12139 <td class="paramname"><em>inputInfo</em>, </td>
12140 </tr>
12141 <tr>
12142 <td class="paramkey"></td>
12143 <td></td>
12144 <td class="paramtype">const int32_t *&#160;</td>
12145 <td class="paramname"><em>inputData</em>, </td>
12146 </tr>
12147 <tr>
12148 <td class="paramkey"></td>
12149 <td></td>
12150 <td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12151 <td class="paramname"><em>guid</em>, </td>
12152 </tr>
12153 <tr>
12154 <td class="paramkey"></td>
12155 <td></td>
12156 <td class="paramtype">const std::string &amp;&#160;</td>
12157 <td class="paramname"><em>layerName</em>, </td>
12158 </tr>
12159 <tr>
12160 <td class="paramkey"></td>
12161 <td></td>
12162 <td class="paramtype">unsigned int&#160;</td>
12163 <td class="paramname"><em>slotIndex</em>&#160;</td>
12164 </tr>
12165 <tr>
12166 <td></td>
12167 <td>)</td>
12168 <td></td><td></td>
12169 </tr>
12170 </table>
12171</div><div class="memdoc">
12172
12173<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
12174
12175</div>
12176</div>
12177<a id="ac2167b3a09fab7c9b58af461bd990c3b"></a>
12178<h2 class="memtitle"><span class="permalink"><a href="#ac2167b3a09fab7c9b58af461bd990c3b">&#9670;&nbsp;</a></span>Debug< int8_t >()</h2>
12179
12180<div class="memitem">
12181<div class="memproto">
12182 <table class="memname">
12183 <tr>
12184 <td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int8_t &gt; </td>
12185 <td>(</td>
12186 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12187 <td class="paramname"><em>inputInfo</em>, </td>
12188 </tr>
12189 <tr>
12190 <td class="paramkey"></td>
12191 <td></td>
12192 <td class="paramtype">const int8_t *&#160;</td>
12193 <td class="paramname"><em>inputData</em>, </td>
12194 </tr>
12195 <tr>
12196 <td class="paramkey"></td>
12197 <td></td>
12198 <td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12199 <td class="paramname"><em>guid</em>, </td>
12200 </tr>
12201 <tr>
12202 <td class="paramkey"></td>
12203 <td></td>
12204 <td class="paramtype">const std::string &amp;&#160;</td>
12205 <td class="paramname"><em>layerName</em>, </td>
12206 </tr>
12207 <tr>
12208 <td class="paramkey"></td>
12209 <td></td>
12210 <td class="paramtype">unsigned int&#160;</td>
12211 <td class="paramname"><em>slotIndex</em>&#160;</td>
12212 </tr>
12213 <tr>
12214 <td></td>
12215 <td>)</td>
12216 <td></td><td></td>
12217 </tr>
12218 </table>
12219</div><div class="memdoc">
12220
12221<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
12222
12223</div>
12224</div>
12225<a id="a1121718a486db835afa99328650e7e89"></a>
12226<h2 class="memtitle"><span class="permalink"><a href="#a1121718a486db835afa99328650e7e89">&#9670;&nbsp;</a></span>Debug< uint8_t >()</h2>
12227
12228<div class="memitem">
12229<div class="memproto">
12230 <table class="memname">
12231 <tr>
12232 <td class="memname">template void <a class="el" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; uint8_t &gt; </td>
12233 <td>(</td>
12234 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12235 <td class="paramname"><em>inputInfo</em>, </td>
12236 </tr>
12237 <tr>
12238 <td class="paramkey"></td>
12239 <td></td>
12240 <td class="paramtype">const uint8_t *&#160;</td>
12241 <td class="paramname"><em>inputData</em>, </td>
12242 </tr>
12243 <tr>
12244 <td class="paramkey"></td>
12245 <td></td>
12246 <td class="paramtype"><a class="el" href="namespacearmnn.html#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12247 <td class="paramname"><em>guid</em>, </td>
12248 </tr>
12249 <tr>
12250 <td class="paramkey"></td>
12251 <td></td>
12252 <td class="paramtype">const std::string &amp;&#160;</td>
12253 <td class="paramname"><em>layerName</em>, </td>
12254 </tr>
12255 <tr>
12256 <td class="paramkey"></td>
12257 <td></td>
12258 <td class="paramtype">unsigned int&#160;</td>
12259 <td class="paramname"><em>slotIndex</em>&#160;</td>
12260 </tr>
12261 <tr>
12262 <td></td>
12263 <td>)</td>
12264 <td></td><td></td>
12265 </tr>
12266 </table>
12267</div><div class="memdoc">
12268
12269<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.html#l00019">Debug()</a>.</p>
12270
12271</div>
12272</div>
12273<a id="ab023d9a7687e35c0f108458a094c1f56"></a>
12274<h2 class="memtitle"><span class="permalink"><a href="#ab023d9a7687e35c0f108458a094c1f56">&#9670;&nbsp;</a></span>DepthToSpace()</h2>
12275
12276<div class="memitem">
12277<div class="memproto">
12278 <table class="memname">
12279 <tr>
12280 <td class="memname">void DepthToSpace </td>
12281 <td>(</td>
12282 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12283 <td class="paramname"><em>inputInfo</em>, </td>
12284 </tr>
12285 <tr>
12286 <td class="paramkey"></td>
12287 <td></td>
12288 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
12289 <td class="paramname"><em>descriptor</em>, </td>
12290 </tr>
12291 <tr>
12292 <td class="paramkey"></td>
12293 <td></td>
12294 <td class="paramtype">const void *&#160;</td>
12295 <td class="paramname"><em>inputData</em>, </td>
12296 </tr>
12297 <tr>
12298 <td class="paramkey"></td>
12299 <td></td>
12300 <td class="paramtype">void *&#160;</td>
12301 <td class="paramname"><em>outputData</em>, </td>
12302 </tr>
12303 <tr>
12304 <td class="paramkey"></td>
12305 <td></td>
12306 <td class="paramtype">unsigned int&#160;</td>
12307 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
12308 </tr>
12309 <tr>
12310 <td></td>
12311 <td>)</td>
12312 <td></td><td></td>
12313 </tr>
12314 </table>
12315</div><div class="memdoc">
12316
12317<p class="definition">Definition at line <a class="el" href="_depth_to_space_8cpp_source.html#l00018">18</a> of file <a class="el" href="_depth_to_space_8cpp_source.html">DepthToSpace.cpp</a>.</p>
12318
12319<p class="reference">References <a class="el" href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_tensor_8cpp_source.html#l00106">TensorShape::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00827">SpaceToDepthDescriptor::m_BlockSize</a>, <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="_permute_8cpp_source.html#l00121">armnnUtils::Permute()</a>.</p>
12320
12321<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l00624">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace()</a>.</p>
12322<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize = descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">m_BlockSize</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(blockSize != 0u);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batches = inputShape[0];</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayoutIndexed(descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inDepth = inputShape[dataLayoutIndexed.GetChannelsIndex()];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inHeight = inputShape[dataLayoutIndexed.GetHeightIndex()];</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inWidth = inputShape[dataLayoutIndexed.GetWidthIndex()];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outDepth = inDepth / (blockSize * blockSize);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// The 4D input data can be interpreted as 6D (implicitly reshaped) as follows:</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// [batch, block size, block size, inDepth, inHeight, inWidth] for NCHW and</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// [batch, inHeight, inWidth, blockSize, blockSize, outDepth] for NHWC.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// DepthToSpace can then be implemented as a permutation in 6D resulting in</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// the following shapes:</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// [batch, outDepth, inHeight, blockSize, inWidth, blockSize] for NCHW and</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// [batch, inHeight, blockSize, inWidth, blockSize, outDepth] for NHWC.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// NOTE:</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Since 6D tensors are not currently supported, in practice we need to handle each</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// batch separately and execute 5D permutations</span></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; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> permDestShape;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a> permVector{};</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> == DataLayout::NCHW)</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"> 56</span>&#160; permDestShape = <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>({ outDepth, inHeight, blockSize, inWidth, blockSize });</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; permVector = { 2, 4, 0, 1, 3 };</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">else</span></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; permDestShape = <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>({ inHeight, blockSize, inWidth, blockSize, outDepth });</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; permVector = { 0, 2, 1, 3, 4 };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElementsPerBatch = inputShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>() / batches;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIndex = 0u; batchIndex &lt; batches; ++batchIndex)</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; <span class="keyword">const</span> uintptr_t batchDataOffset = batchIndex * (numElementsPerBatch * dataTypeSize);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(permDestShape,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; permVector,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; static_cast&lt;const void*&gt;(reinterpret_cast&lt;const uint8_t*&gt;(inputData) + batchDataOffset),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; static_cast&lt;void*&gt;(reinterpret_cast&lt;uint8_t*&gt;(outputData) + batchDataOffset),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; dataTypeSize);</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"> 77</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::SpaceToDepthDescriptor::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.html#l00830">Descriptors.hpp:830</a></div></div>
12323<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
12324<div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
12325<div class="ttc" id="classarmnn_1_1_tensor_shape_html_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a8846406ac37fbd2204f0be16ee05d5b7">armnn::TensorShape::GetNumElements</a></div><div class="ttdeci">unsigned int GetNumElements() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00106">Tensor.cpp:106</a></div></div>
12326<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
12327<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6c6b8957f1e176867e5fb05b1a1a1486"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">armnn::SpaceToDepthDescriptor::m_BlockSize</a></div><div class="ttdeci">unsigned int m_BlockSize</div><div class="ttdoc">Scalar specifying the input block size. It must be &gt;= 1. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00827">Descriptors.hpp:827</a></div></div>
12328<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
12329<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
12330</div><!-- fragment -->
12331</div>
12332</div>
12333<a id="acae7e910f899ae67340c9ce29e406a86"></a>
12334<h2 class="memtitle"><span class="permalink"><a href="#acae7e910f899ae67340c9ce29e406a86">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[1/4]</span></h2>
12335
12336<div class="memitem">
12337<div class="memproto">
12338 <table class="memname">
12339 <tr>
12340 <td class="memname">void Dequantize </td>
12341 <td>(</td>
12342 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
12343 <td class="paramname"><em>inputDecoder</em>, </td>
12344 </tr>
12345 <tr>
12346 <td class="paramkey"></td>
12347 <td></td>
12348 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
12349 <td class="paramname"><em>outputEncoder</em>, </td>
12350 </tr>
12351 <tr>
12352 <td class="paramkey"></td>
12353 <td></td>
12354 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12355 <td class="paramname"><em>inputInfo</em>, </td>
12356 </tr>
12357 <tr>
12358 <td class="paramkey"></td>
12359 <td></td>
12360 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12361 <td class="paramname"><em>outputInfo</em>&#160;</td>
12362 </tr>
12363 <tr>
12364 <td></td>
12365 <td>)</td>
12366 <td></td><td></td>
12367 </tr>
12368 </table>
12369</div><div class="memdoc">
12370
12371<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_dequantize_8cpp_source.html#l00012">12</a> of file <a class="el" href="backends_2reference_2workloads_2_dequantize_8cpp_source.html">Dequantize.cpp</a>.</p>
12372
12373<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
12374<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; boost::ignore_unused(outputInfo);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; BOOST_ASSERT(inputInfo.GetNumElements() == outputInfo.GetNumElements());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputInfo.GetNumElements(); i++)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="comment">// inputDecoder.Get() dequantizes the data element from whatever</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">// type is given by inputInfo to fp32 (If MakeDecoder supports that dequantization)</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// outputEncoder.Set() transforms the data element to whatever type is</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// given by outputInfo (if MakeEncoder supports that transformation)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; ++outputEncoder;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; ++inputDecoder;</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;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
12375<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
12376</div><!-- fragment -->
12377</div>
12378</div>
12379<a id="a4144d7535639c617fca0d095379493f0"></a>
12380<h2 class="memtitle"><span class="permalink"><a href="#a4144d7535639c617fca0d095379493f0">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[2/4]</span></h2>
12381
12382<div class="memitem">
12383<div class="memproto">
12384 <table class="memname">
12385 <tr>
12386 <td class="memname">std::vector&lt;float&gt; armnn::Dequantize </td>
12387 <td>(</td>
12388 <td class="paramtype">const T *&#160;</td>
12389 <td class="paramname"><em>quant</em>, </td>
12390 </tr>
12391 <tr>
12392 <td class="paramkey"></td>
12393 <td></td>
12394 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12395 <td class="paramname"><em>info</em>&#160;</td>
12396 </tr>
12397 <tr>
12398 <td></td>
12399 <td>)</td>
12400 <td></td><td></td>
12401 </tr>
12402 </table>
12403</div><div class="memdoc">
12404
12405<p>u8 helpers </p>
12406
12407<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00076">76</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
12408
12409<p class="reference">References <a class="el" href="_types_utils_8cpp_source.html#l00047">Dequantize()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
12410<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::vector&lt;float&gt; ret(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ret[i] = <a class="code" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a>(quant[i], <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
12411<div class="ttc" id="namespacearmnn_html_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00047">TypesUtils.cpp:47</a></div></div>
12412</div><!-- fragment -->
12413</div>
12414</div>
12415<a id="a1204727d8ce3ee1e60daf08079eb892e"></a>
12416<h2 class="memtitle"><span class="permalink"><a href="#a1204727d8ce3ee1e60daf08079eb892e">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[3/4]</span></h2>
12417
12418<div class="memitem">
12419<div class="memproto">
12420<table class="mlabels">
12421 <tr>
12422 <td class="mlabels-left">
12423 <table class="memname">
12424 <tr>
12425 <td class="memname">void armnn::Dequantize </td>
12426 <td>(</td>
12427 <td class="paramtype">const T *&#160;</td>
12428 <td class="paramname"><em>inputData</em>, </td>
12429 </tr>
12430 <tr>
12431 <td class="paramkey"></td>
12432 <td></td>
12433 <td class="paramtype">float *&#160;</td>
12434 <td class="paramname"><em>outputData</em>, </td>
12435 </tr>
12436 <tr>
12437 <td class="paramkey"></td>
12438 <td></td>
12439 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12440 <td class="paramname"><em>info</em>&#160;</td>
12441 </tr>
12442 <tr>
12443 <td></td>
12444 <td>)</td>
12445 <td></td><td></td>
12446 </tr>
12447 </table>
12448 </td>
12449 <td class="mlabels-right">
12450<span class="mlabels"><span class="mlabel">inline</span></span> </td>
12451 </tr>
12452</table>
12453</div><div class="memdoc">
12454
12455<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00087">87</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
12456
12457<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
12458<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; outputData[i] = Dequantize&lt;T&gt;(inputData[i], <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
12459</div><!-- fragment -->
12460</div>
12461</div>
12462<a id="a855293b1be0581fb61ef6a1c5b027d0f"></a>
12463<h2 class="memtitle"><span class="permalink"><a href="#a855293b1be0581fb61ef6a1c5b027d0f">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[4/4]</span></h2>
12464
12465<div class="memitem">
12466<div class="memproto">
12467 <table class="memname">
12468 <tr>
12469 <td class="memname">float Dequantize </td>
12470 <td>(</td>
12471 <td class="paramtype">QuantizedType&#160;</td>
12472 <td class="paramname"><em>value</em>, </td>
12473 </tr>
12474 <tr>
12475 <td class="paramkey"></td>
12476 <td></td>
12477 <td class="paramtype">float&#160;</td>
12478 <td class="paramname"><em>scale</em>, </td>
12479 </tr>
12480 <tr>
12481 <td class="paramkey"></td>
12482 <td></td>
12483 <td class="paramtype">int32_t&#160;</td>
12484 <td class="paramname"><em>offset</em>&#160;</td>
12485 </tr>
12486 <tr>
12487 <td></td>
12488 <td>)</td>
12489 <td></td><td></td>
12490 </tr>
12491 </table>
12492</div><div class="memdoc">
12493<p>Dequantize an 8-bit data type into a floating point data type. </p><dl class="params"><dt>Parameters</dt><dd>
12494 <table class="params">
12495 <tr><td class="paramname">value</td><td>- The value to dequantize. </td></tr>
12496 <tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
12497 <tr><td class="paramname">offset</td><td>- The offset. </td></tr>
12498 </table>
12499 </dd>
12500</dl>
12501<dl class="section return"><dt>Returns</dt><dd>- The dequantized value calculated as (value-offset)*scale. </dd></dl>
12502
12503<p class="definition">Definition at line <a class="el" href="_types_utils_8cpp_source.html#l00047">47</a> of file <a class="el" href="_types_utils_8cpp_source.html">TypesUtils.cpp</a>.</p>
12504
12505<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l00745">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantize_helper_8hpp_source.html#l00030">SelectiveQuantizer&lt; T, DoQuantize &gt;::Dequantize()</a>, and <a class="el" href="_ref_workload_utils_8hpp_source.html#l00076">Dequantize()</a>.</p>
12506<div class="fragment"><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; static_assert(IsQuantizedType&lt;QuantizedType&gt;(), <span class="stringliteral">&quot;Not an integer type.&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; BOOST_ASSERT(scale != 0.f);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; BOOST_ASSERT(!IsNan(value));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> dequantized = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(value - offset) * scale;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> dequantized;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
12507</div>
12508</div>
12509<a id="ae76ce23fa9fc18e56448d52b37dd3f32"></a>
12510<h2 class="memtitle"><span class="permalink"><a href="#ae76ce23fa9fc18e56448d52b37dd3f32">&#9670;&nbsp;</a></span>DetectionPostProcess()</h2>
12511
12512<div class="memitem">
12513<div class="memproto">
12514 <table class="memname">
12515 <tr>
12516 <td class="memname">void DetectionPostProcess </td>
12517 <td>(</td>
12518 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12519 <td class="paramname"><em>boxEncodingsInfo</em>, </td>
12520 </tr>
12521 <tr>
12522 <td class="paramkey"></td>
12523 <td></td>
12524 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12525 <td class="paramname"><em>scoresInfo</em>, </td>
12526 </tr>
12527 <tr>
12528 <td class="paramkey"></td>
12529 <td></td>
12530 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12531 <td class="paramname"><em>anchorsInfo</em>, </td>
12532 </tr>
12533 <tr>
12534 <td class="paramkey"></td>
12535 <td></td>
12536 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12537 <td class="paramname"><em>detectionBoxesInfo</em>, </td>
12538 </tr>
12539 <tr>
12540 <td class="paramkey"></td>
12541 <td></td>
12542 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12543 <td class="paramname"><em>detectionClassesInfo</em>, </td>
12544 </tr>
12545 <tr>
12546 <td class="paramkey"></td>
12547 <td></td>
12548 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12549 <td class="paramname"><em>detectionScoresInfo</em>, </td>
12550 </tr>
12551 <tr>
12552 <td class="paramkey"></td>
12553 <td></td>
12554 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
12555 <td class="paramname"><em>numDetectionsInfo</em>, </td>
12556 </tr>
12557 <tr>
12558 <td class="paramkey"></td>
12559 <td></td>
12560 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
12561 <td class="paramname"><em>desc</em>, </td>
12562 </tr>
12563 <tr>
12564 <td class="paramkey"></td>
12565 <td></td>
12566 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
12567 <td class="paramname"><em>boxEncodings</em>, </td>
12568 </tr>
12569 <tr>
12570 <td class="paramkey"></td>
12571 <td></td>
12572 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
12573 <td class="paramname"><em>scores</em>, </td>
12574 </tr>
12575 <tr>
12576 <td class="paramkey"></td>
12577 <td></td>
12578 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
12579 <td class="paramname"><em>anchors</em>, </td>
12580 </tr>
12581 <tr>
12582 <td class="paramkey"></td>
12583 <td></td>
12584 <td class="paramtype">float *&#160;</td>
12585 <td class="paramname"><em>detectionBoxes</em>, </td>
12586 </tr>
12587 <tr>
12588 <td class="paramkey"></td>
12589 <td></td>
12590 <td class="paramtype">float *&#160;</td>
12591 <td class="paramname"><em>detectionClasses</em>, </td>
12592 </tr>
12593 <tr>
12594 <td class="paramkey"></td>
12595 <td></td>
12596 <td class="paramtype">float *&#160;</td>
12597 <td class="paramname"><em>detectionScores</em>, </td>
12598 </tr>
12599 <tr>
12600 <td class="paramkey"></td>
12601 <td></td>
12602 <td class="paramtype">float *&#160;</td>
12603 <td class="paramname"><em>numDetections</em>&#160;</td>
12604 </tr>
12605 <tr>
12606 <td></td>
12607 <td>)</td>
12608 <td></td><td></td>
12609 </tr>
12610 </table>
12611</div><div class="memdoc">
12612
12613<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">141</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
12614
12615<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00103">AllocateOutputData()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">GenerateRangeK()</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00531">DetectionPostProcessDescriptor::m_DetectionsPerClass</a>, <a class="el" href="_descriptors_8hpp_source.html#l00529">DetectionPostProcessDescriptor::m_MaxClassesPerDetection</a>, <a class="el" href="_descriptors_8hpp_source.html#l00527">DetectionPostProcessDescriptor::m_MaxDetections</a>, <a class="el" href="_descriptors_8hpp_source.html#l00535">DetectionPostProcessDescriptor::m_NmsIouThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00533">DetectionPostProcessDescriptor::m_NmsScoreThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00537">DetectionPostProcessDescriptor::m_NumClasses</a>, <a class="el" href="_descriptors_8hpp_source.html#l00547">DetectionPostProcessDescriptor::m_ScaleH</a>, <a class="el" href="_descriptors_8hpp_source.html#l00545">DetectionPostProcessDescriptor::m_ScaleW</a>, <a class="el" href="_descriptors_8hpp_source.html#l00541">DetectionPostProcessDescriptor::m_ScaleX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00543">DetectionPostProcessDescriptor::m_ScaleY</a>, <a class="el" href="_descriptors_8hpp_source.html#l00539">DetectionPostProcessDescriptor::m_UseRegularNms</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">TopKSort()</a>.</p>
12616
12617<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00072">DetectionPostProcessTestImpl()</a>.</p>
12618<div class="fragment"><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; boost::ignore_unused(<a class="code" href="_neon_end_to_end_tests_8cpp.html#a358cb7cd3c0647b25be049fd734b8c22">anchorsInfo</a>, detectionClassesInfo, detectionScoresInfo, numDetectionsInfo);</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; <span class="comment">// Transform center-size format which is (ycenter, xcenter, height, width) to box-corner format,</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// which represents the lower left corner and the upper right corner (ymin, xmin, ymax, xmax)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; std::vector&lt;float&gt; boxCorners(boxEncodingsInfo.GetNumElements());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numBoxes = boxEncodingsInfo.GetShape()[1];</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numScores = <a class="code" href="_neon_end_to_end_tests_8cpp.html#a64c1dd1b6dd60be9f4a16db9c8f427a5">scoresInfo</a>.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>();</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</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"> 168</span>&#160; <span class="comment">// Y</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> boxEncodingY = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">float</span> anchorY = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</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"> 175</span>&#160; <span class="comment">// X</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">float</span> boxEncodingX = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">float</span> anchorX = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</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; <span class="comment">// H</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">float</span> boxEncodingH = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">float</span> anchorH = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="comment">// W</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">float</span> boxEncodingW = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">float</span> anchorW = anchors.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</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="keywordtype">float</span> yCentre = boxEncodingY / desc.m_ScaleY * anchorH + anchorY;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">float</span> xCentre = boxEncodingX / desc.m_ScaleX * anchorW + anchorX;</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; <span class="keywordtype">float</span> halfH = 0.5f * expf(boxEncodingH / desc.m_ScaleH) * anchorH;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">float</span> halfW = 0.5f * expf(boxEncodingW / desc.m_ScaleW) * anchorW;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexY = i * 4;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexX = indexY + 1;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexH = indexX + 1;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexW = indexH + 1;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// ymin</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; boxCorners[indexY] = yCentre - halfH;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// xmin</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; boxCorners[indexX] = xCentre - halfW;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// ymax</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; boxCorners[indexH] = yCentre + halfH;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// xmax</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; boxCorners[indexW] = xCentre + halfW;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; BOOST_ASSERT(boxCorners[indexY] &lt; boxCorners[indexH]);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; BOOST_ASSERT(boxCorners[indexX] &lt; boxCorners[indexW]);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numClassesWithBg = desc.m_NumClasses + 1;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// Decode scores</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; std::vector&lt;float&gt; decodedScores;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; decodedScores.reserve(numScores);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; numScores; ++i)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; decodedScores.emplace_back(scores.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</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="comment">// Perform Non Max Suppression.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (desc.m_UseRegularNms)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// Perform Regular NMS.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// For each class, perform NMS and select max detection numbers of the highest score across all classes.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; std::vector&lt;float&gt; classScores(numBoxes);</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; std::vector&lt;unsigned int&gt; selectedBoxesAfterNms;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; selectedBoxesAfterNms.reserve(numBoxes);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; std::vector&lt;float&gt; selectedScoresAfterNms;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; selectedBoxesAfterNms.reserve(numScores);</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; std::vector&lt;unsigned int&gt; selectedClasses;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; desc.m_NumClasses; ++c)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// For each boxes, get scores of the boxes for the class c.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; classScores[i] = decodedScores[i * numClassesWithBg + c + 1];</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; std::vector&lt;unsigned int&gt; selectedIndices = <a class="code" href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a>(numBoxes,</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; boxCorners,</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; classScores,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; desc.m_DetectionsPerClass,</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; desc.m_NmsIouThreshold);</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; selectedIndices.size(); ++i)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; selectedBoxesAfterNms.push_back(selectedIndices[i]);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; selectedScoresAfterNms.push_back(classScores[selectedIndices[i]]);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; selectedClasses.push_back(c);</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"> 267</span>&#160; }</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="comment">// Select max detection numbers of the highest score across all classes</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSelected = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(selectedBoxesAfterNms.size());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(desc.m_MaxDetections, numSelected);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Sort the max scores among the selected indices.</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; std::vector&lt;unsigned int&gt; outputIndices = <a class="code" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(numSelected);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numOutput, outputIndices.data(), selectedScoresAfterNms.data(), numSelected);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a>(detectionBoxesInfo.GetShape()[1], numOutput, boxCorners, outputIndices,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; selectedBoxesAfterNms, selectedClasses, selectedScoresAfterNms,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; detectionBoxes, detectionScores, detectionClasses, numDetections);</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// Perform Fast NMS.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Select max scores of boxes and perform NMS on max scores,</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// select max detection numbers of the highest score</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numClassesPerBox = std::min(desc.m_MaxClassesPerDetection, desc.m_NumClasses);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; std::vector&lt;float&gt; maxScores;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::vector&lt;unsigned int&gt;boxIndices;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; std::vector&lt;unsigned int&gt;maxScoreClasses;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> box = 0; box &lt; numBoxes; ++box)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> scoreIndex = box * numClassesWithBg + 1;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// Get the max scores of the box.</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::vector&lt;unsigned int&gt; maxScoreIndices = <a class="code" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(desc.m_NumClasses);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numClassesPerBox, maxScoreIndices.data(),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; decodedScores.data() + scoreIndex, desc.m_NumClasses);</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numClassesPerBox; ++i)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; maxScores.push_back(decodedScores[scoreIndex + maxScoreIndices[i]]);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; maxScoreClasses.push_back(maxScoreIndices[i]);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; boxIndices.push_back(box);</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"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// Perform NMS on max scores</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; std::vector&lt;unsigned int&gt; selectedIndices = <a class="code" href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a>(numBoxes, boxCorners, maxScores,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; desc.m_MaxDetections,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; desc.m_NmsIouThreshold);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSelected = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(selectedIndices.size());</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(desc.m_MaxDetections, numSelected);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a>(detectionBoxesInfo.GetShape()[1], numOutput, boxCorners, selectedIndices,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; boxIndices, maxScoreClasses, maxScores,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; detectionBoxes, detectionScores, detectionClasses, numDetections);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae8dcbb74cf0c855724f12833a55a5684"><div class="ttname"><a href="namespacearmnn.html#ae8dcbb74cf0c855724f12833a55a5684">armnn::AllocateOutputData</a></div><div class="ttdeci">void AllocateOutputData(unsigned int numOutput, unsigned int numSelected, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; unsigned int &gt; &amp;outputIndices, const std::vector&lt; unsigned int &gt; &amp;selectedBoxes, const std::vector&lt; unsigned int &gt; &amp;selectedClasses, const std::vector&lt; float &gt; &amp;selectedScores, float *detectionBoxes, float *detectionScores, float *detectionClasses, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00103">DetectionPostProcess.cpp:103</a></div></div>
12619<div class="ttc" id="namespacearmnn_html_ac8c641d4a69c9a85c487cfbc7ea4d73c"><div class="ttname"><a href="namespacearmnn.html#ac8c641d4a69c9a85c487cfbc7ea4d73c">armnn::NonMaxSuppression</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; NonMaxSuppression(unsigned int numBoxes, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; float &gt; &amp;scores, float nmsScoreThreshold, unsigned int maxDetection, float nmsIouThreshold)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">DetectionPostProcess.cpp:50</a></div></div>
12620<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a64c1dd1b6dd60be9f4a16db9c8f427a5"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a64c1dd1b6dd60be9f4a16db9c8f427a5">scoresInfo</a></div><div class="ttdeci">armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32)</div></div>
12621<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
12622<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ada422a73ac4e68bcb1b1b1f0b44028d9"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a></div><div class="ttdeci">std::vector&lt; float &gt; boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })</div></div>
12623<div class="ttc" id="namespacearmnn_html_a2748f45e58b1c612d473043f711d1434"><div class="ttname"><a href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">armnn::TopKSort</a></div><div class="ttdeci">void TopKSort(unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">DetectionPostProcess.cpp:25</a></div></div>
12624<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ac0981848e4ae57729f14f72bd4caa9f8"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#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>
12625<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00093">Tensor.hpp:93</a></div></div>
12626<div class="ttc" id="namespacearmnn_html_ae8ed5c640761fb6744aec0ee16388417"><div class="ttname"><a href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">armnn::GenerateRangeK</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; GenerateRangeK(unsigned int k)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">DetectionPostProcess.cpp:18</a></div></div>
12627<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
12628<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a358cb7cd3c0647b25be049fd734b8c22"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a358cb7cd3c0647b25be049fd734b8c22">anchorsInfo</a></div><div class="ttdeci">armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32)</div></div>
12629</div><!-- fragment -->
12630</div>
12631</div>
12632<a id="a50805c29c35b9903c2dea301d8091711"></a>
12633<h2 class="memtitle"><span class="permalink"><a href="#a50805c29c35b9903c2dea301d8091711">&#9670;&nbsp;</a></span>ExtractJsonObjects()</h2>
12634
12635<div class="memitem">
12636<div class="memproto">
12637 <table class="memname">
12638 <tr>
12639 <td class="memname">void armnn::ExtractJsonObjects </td>
12640 <td>(</td>
12641 <td class="paramtype">unsigned int&#160;</td>
12642 <td class="paramname"><em>inferenceIndex</em>, </td>
12643 </tr>
12644 <tr>
12645 <td class="paramkey"></td>
12646 <td></td>
12647 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
12648 <td class="paramname"><em>parentEvent</em>, </td>
12649 </tr>
12650 <tr>
12651 <td class="paramkey"></td>
12652 <td></td>
12653 <td class="paramtype"><a class="el" href="structarmnn_1_1_json_child_object.html">JsonChildObject</a> &amp;&#160;</td>
12654 <td class="paramname"><em>parentObject</em>, </td>
12655 </tr>
12656 <tr>
12657 <td class="paramkey"></td>
12658 <td></td>
12659 <td class="paramtype">std::map&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *, std::vector&lt; const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&gt;&gt;&#160;</td>
12660 <td class="paramname"><em>descendantsMap</em>&#160;</td>
12661 </tr>
12662 <tr>
12663 <td></td>
12664 <td>)</td>
12665 <td></td><td></td>
12666 </tr>
12667 </table>
12668</div><div class="memdoc">
12669
12670<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00284">284</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
12671
12672<p class="reference">References <a class="el" href="_json_printer_8hpp_source.html#l00036">JsonChildObject::AddChild()</a>, <a class="el" href="_json_printer_8hpp_source.html#l00031">JsonChildObject::AddMeasurement()</a>, <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a>, <a class="el" href="_json_printer_8hpp_source.html#l00041">JsonChildObject::GetChild()</a>, <a class="el" href="_profiling_event_8cpp_source.html#l00054">Event::GetMeasurements()</a>, <a class="el" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>, <a class="el" href="_json_printer_8hpp_source.html#l00051">JsonChildObject::NumChildren()</a>, <a class="el" href="_json_printer_8hpp_source.html#l00056">JsonChildObject::SetType()</a>, and <a class="el" href="_json_printer_8hpp_source.html#l00046">JsonChildObject::SetUnit()</a>.</p>
12673
12674<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00330">Profiler::Print()</a>.</p>
12675<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;{</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; BOOST_ASSERT(parentEvent);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; std::vector&lt;Measurement&gt; instrumentMeasurements = parentEvent-&gt;GetMeasurements();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> childIdx=0;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> measurementIndex = 0; measurementIndex &lt; instrumentMeasurements.size(); ++measurementIndex, ++childIdx)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (inferenceIndex == 0)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// Only add kernel measurement once, in case of multiple inferences</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; JsonChildObject measurementObject{instrumentMeasurements[measurementIndex].m_Name};</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; measurementObject.SetUnit(instrumentMeasurements[measurementIndex].m_Unit);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; measurementObject.SetType(JsonObjectType::Measurement);</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"> 301</span>&#160; BOOST_ASSERT(parentObject.NumChildren() == childIdx);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; parentObject.AddChild(measurementObject);</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;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; parentObject.GetChild(childIdx).AddMeasurement(instrumentMeasurements[measurementIndex].m_Value);</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"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">auto</span> childEventsIt = descendantsMap.find(parentEvent);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (childEventsIt != descendantsMap.end())</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; <span class="keywordflow">for</span> (<span class="keyword">auto</span> childEvent : childEventsIt-&gt;second)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (inferenceIndex == 0)</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="comment">// Only add second level once, in case of multiple inferences</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; JsonChildObject childObject{childEvent-&gt;GetName()};</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; childObject.SetType(JsonObjectType::Event);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; parentObject.AddChild(childObject);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</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="comment">// Recursively process children. In reality this won&#39;t be very deep recursion. ~4-6 levels deep.</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="namespacearmnn.html#a50805c29c35b9903c2dea301d8091711">ExtractJsonObjects</a>(inferenceIndex, childEvent, parentObject.GetChild(childIdx), descendantsMap);</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"> 325</span>&#160; childIdx++;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</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;}</div><div class="ttc" id="namespacearmnn_html_a50805c29c35b9903c2dea301d8091711"><div class="ttname"><a href="namespacearmnn.html#a50805c29c35b9903c2dea301d8091711">armnn::ExtractJsonObjects</a></div><div class="ttdeci">void ExtractJsonObjects(unsigned int inferenceIndex, const Event *parentEvent, JsonChildObject &amp;parentObject, std::map&lt; const Event *, std::vector&lt; const Event *&gt;&gt; descendantsMap)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8cpp_source.html#l00284">Profiling.cpp:284</a></div></div>
12676</div><!-- fragment -->
12677</div>
12678</div>
12679<a id="ab3c0b7e1a78b1b98c24934221f36a7c3"></a>
12680<h2 class="memtitle"><span class="permalink"><a href="#ab3c0b7e1a78b1b98c24934221f36a7c3">&#9670;&nbsp;</a></span>FakeQuantization()</h2>
12681
12682<div class="memitem">
12683<div class="memproto">
12684 <table class="memname">
12685 <tr>
12686 <td class="memname">void armnn::FakeQuantization </td>
12687 <td>(</td>
12688 <td class="paramtype">const float *&#160;</td>
12689 <td class="paramname"><em>inputData</em>, </td>
12690 </tr>
12691 <tr>
12692 <td class="paramkey"></td>
12693 <td></td>
12694 <td class="paramtype">float *&#160;</td>
12695 <td class="paramname"><em>outputData</em>, </td>
12696 </tr>
12697 <tr>
12698 <td class="paramkey"></td>
12699 <td></td>
12700 <td class="paramtype">uint32_t&#160;</td>
12701 <td class="paramname"><em>numElements</em>, </td>
12702 </tr>
12703 <tr>
12704 <td class="paramkey"></td>
12705 <td></td>
12706 <td class="paramtype">float&#160;</td>
12707 <td class="paramname"><em>min</em>, </td>
12708 </tr>
12709 <tr>
12710 <td class="paramkey"></td>
12711 <td></td>
12712 <td class="paramtype">float&#160;</td>
12713 <td class="paramname"><em>max</em>&#160;</td>
12714 </tr>
12715 <tr>
12716 <td></td>
12717 <td>)</td>
12718 <td></td><td></td>
12719 </tr>
12720 </table>
12721</div><div class="memdoc">
12722
12723<p class="definition">Definition at line <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html">RefFakeQuantizationFloat32Workload.cpp</a>.</p>
12724<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordtype">float</span> scale = (max - min) / 255.f;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; int32_t offset = boost::numeric_cast&lt;int32_t&gt;((-min * 255.f) / (max - min));</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; outputData[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(armnn::Quantize&lt;uint8_t&gt;(inputData[i], scale, offset));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
12725</div>
12726</div>
12727<a id="a6e64aab48baba12883c73e90bfd07e77"></a>
12728<h2 class="memtitle"><span class="permalink"><a href="#a6e64aab48baba12883c73e90bfd07e77">&#9670;&nbsp;</a></span>FalseFunc()</h2>
12729
12730<div class="memitem">
12731<div class="memproto">
12732 <table class="memname">
12733 <tr>
12734 <td class="memname">bool armnn::FalseFunc </td>
12735 <td>(</td>
12736 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12737 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12738 </tr>
12739 <tr>
12740 <td class="paramkey"></td>
12741 <td></td>
12742 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12743 <td class="paramname"><em>params</em>&#160;</td>
12744 </tr>
12745 <tr>
12746 <td></td>
12747 <td>)</td>
12748 <td></td><td></td>
12749 </tr>
12750 </table>
12751</div><div class="memdoc">
12752
12753<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00063">63</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12754<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; boost::ignore_unused(reasonIfUnsupported);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div></div><!-- fragment -->
12755</div>
12756</div>
12757<a id="a621c8ffe11bba3d7ab304a9ad3feec2f"></a>
12758<h2 class="memtitle"><span class="permalink"><a href="#a621c8ffe11bba3d7ab304a9ad3feec2f">&#9670;&nbsp;</a></span>FalseFuncF16()</h2>
12759
12760<div class="memitem">
12761<div class="memproto">
12762 <table class="memname">
12763 <tr>
12764 <td class="memname">bool armnn::FalseFuncF16 </td>
12765 <td>(</td>
12766 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12767 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12768 </tr>
12769 <tr>
12770 <td class="paramkey"></td>
12771 <td></td>
12772 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12773 <td class="paramname"><em>params</em>&#160;</td>
12774 </tr>
12775 <tr>
12776 <td></td>
12777 <td>)</td>
12778 <td></td><td></td>
12779 </tr>
12780 </table>
12781</div><div class="memdoc">
12782
12783<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00071">71</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12784
12785<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
12786<div class="fragment"><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; boost::ignore_unused(params...);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type&quot;</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
12787</div><!-- fragment -->
12788</div>
12789</div>
12790<a id="a02d627e25da543b79ee8a59a1193a426"></a>
12791<h2 class="memtitle"><span class="permalink"><a href="#a02d627e25da543b79ee8a59a1193a426">&#9670;&nbsp;</a></span>FalseFuncF32()</h2>
12792
12793<div class="memitem">
12794<div class="memproto">
12795 <table class="memname">
12796 <tr>
12797 <td class="memname">bool armnn::FalseFuncF32 </td>
12798 <td>(</td>
12799 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12800 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12801 </tr>
12802 <tr>
12803 <td class="paramkey"></td>
12804 <td></td>
12805 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12806 <td class="paramname"><em>params</em>&#160;</td>
12807 </tr>
12808 <tr>
12809 <td></td>
12810 <td>)</td>
12811 <td></td><td></td>
12812 </tr>
12813 </table>
12814</div><div class="memdoc">
12815
12816<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00079">79</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12817
12818<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
12819<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type&quot;</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
12820</div><!-- fragment -->
12821</div>
12822</div>
12823<a id="a07ae80b502ab664f1aaf7d6c00725982"></a>
12824<h2 class="memtitle"><span class="permalink"><a href="#a07ae80b502ab664f1aaf7d6c00725982">&#9670;&nbsp;</a></span>FalseFuncI32()</h2>
12825
12826<div class="memitem">
12827<div class="memproto">
12828 <table class="memname">
12829 <tr>
12830 <td class="memname">bool armnn::FalseFuncI32 </td>
12831 <td>(</td>
12832 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12833 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12834 </tr>
12835 <tr>
12836 <td class="paramkey"></td>
12837 <td></td>
12838 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12839 <td class="paramname"><em>params</em>&#160;</td>
12840 </tr>
12841 <tr>
12842 <td></td>
12843 <td>)</td>
12844 <td></td><td></td>
12845 </tr>
12846 </table>
12847</div><div class="memdoc">
12848
12849<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00095">95</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12850
12851<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
12852<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with int32 data type&quot;</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
12853</div><!-- fragment -->
12854</div>
12855</div>
12856<a id="a4e4802d0916cb8b7da508ab03ce1f163"></a>
12857<h2 class="memtitle"><span class="permalink"><a href="#a4e4802d0916cb8b7da508ab03ce1f163">&#9670;&nbsp;</a></span>FalseFuncU8()</h2>
12858
12859<div class="memitem">
12860<div class="memproto">
12861 <table class="memname">
12862 <tr>
12863 <td class="memname">bool armnn::FalseFuncU8 </td>
12864 <td>(</td>
12865 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12866 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12867 </tr>
12868 <tr>
12869 <td class="paramkey"></td>
12870 <td></td>
12871 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12872 <td class="paramname"><em>params</em>&#160;</td>
12873 </tr>
12874 <tr>
12875 <td></td>
12876 <td>)</td>
12877 <td></td><td></td>
12878 </tr>
12879 </table>
12880</div><div class="memdoc">
12881
12882<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00087">87</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12883
12884<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
12885<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with 8-bit data type&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
12886</div><!-- fragment -->
12887</div>
12888</div>
12889<a id="a216969fbba54df95de3e68435b8074d7"></a>
12890<h2 class="memtitle"><span class="permalink"><a href="#a216969fbba54df95de3e68435b8074d7">&#9670;&nbsp;</a></span>FalseInputFuncF16()</h2>
12891
12892<div class="memitem">
12893<div class="memproto">
12894 <table class="memname">
12895 <tr>
12896 <td class="memname">bool armnn::FalseInputFuncF16 </td>
12897 <td>(</td>
12898 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12899 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12900 </tr>
12901 <tr>
12902 <td class="paramkey"></td>
12903 <td></td>
12904 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12905 <td class="paramname"><em>params</em>&#160;</td>
12906 </tr>
12907 <tr>
12908 <td></td>
12909 <td>)</td>
12910 <td></td><td></td>
12911 </tr>
12912 </table>
12913</div><div class="memdoc">
12914
12915<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00111">111</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12916
12917<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
12918<div class="fragment"><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; boost::ignore_unused(params...);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type input&quot;</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
12919</div><!-- fragment -->
12920</div>
12921</div>
12922<a id="a0b55e509dd7e3bfea233a389a18c21e6"></a>
12923<h2 class="memtitle"><span class="permalink"><a href="#a0b55e509dd7e3bfea233a389a18c21e6">&#9670;&nbsp;</a></span>FalseInputFuncF32()</h2>
12924
12925<div class="memitem">
12926<div class="memproto">
12927 <table class="memname">
12928 <tr>
12929 <td class="memname">bool armnn::FalseInputFuncF32 </td>
12930 <td>(</td>
12931 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12932 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12933 </tr>
12934 <tr>
12935 <td class="paramkey"></td>
12936 <td></td>
12937 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12938 <td class="paramname"><em>params</em>&#160;</td>
12939 </tr>
12940 <tr>
12941 <td></td>
12942 <td>)</td>
12943 <td></td><td></td>
12944 </tr>
12945 </table>
12946</div><div class="memdoc">
12947
12948<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00103">103</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12949
12950<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
12951<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type input&quot;</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
12952</div><!-- fragment -->
12953</div>
12954</div>
12955<a id="a2febf8d85a92b69e4a677a7c632418ee"></a>
12956<h2 class="memtitle"><span class="permalink"><a href="#a2febf8d85a92b69e4a677a7c632418ee">&#9670;&nbsp;</a></span>FalseOutputFuncF16()</h2>
12957
12958<div class="memitem">
12959<div class="memproto">
12960 <table class="memname">
12961 <tr>
12962 <td class="memname">bool armnn::FalseOutputFuncF16 </td>
12963 <td>(</td>
12964 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12965 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12966 </tr>
12967 <tr>
12968 <td class="paramkey"></td>
12969 <td></td>
12970 <td class="paramtype">Params &amp;&amp;...&#160;</td>
12971 <td class="paramname"><em>params</em>&#160;</td>
12972 </tr>
12973 <tr>
12974 <td></td>
12975 <td>)</td>
12976 <td></td><td></td>
12977 </tr>
12978 </table>
12979</div><div class="memdoc">
12980
12981<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00127">127</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
12982
12983<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
12984<div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type output&quot;</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
12985</div><!-- fragment -->
12986</div>
12987</div>
12988<a id="ad3d0087e2533d808debd5c959fb3901f"></a>
12989<h2 class="memtitle"><span class="permalink"><a href="#ad3d0087e2533d808debd5c959fb3901f">&#9670;&nbsp;</a></span>FalseOutputFuncF32()</h2>
12990
12991<div class="memitem">
12992<div class="memproto">
12993 <table class="memname">
12994 <tr>
12995 <td class="memname">bool armnn::FalseOutputFuncF32 </td>
12996 <td>(</td>
12997 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
12998 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
12999 </tr>
13000 <tr>
13001 <td class="paramkey"></td>
13002 <td></td>
13003 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13004 <td class="paramname"><em>params</em>&#160;</td>
13005 </tr>
13006 <tr>
13007 <td></td>
13008 <td>)</td>
13009 <td></td><td></td>
13010 </tr>
13011 </table>
13012</div><div class="memdoc">
13013
13014<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00119">119</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
13015
13016<p class="reference">References <a class="el" href="_layer_support_common_8hpp_source.html#l00018">SetValueChecked()</a>.</p>
13017<div class="fragment"><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; boost::ignore_unused(params...);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type output&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.html#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.html#l00018">LayerSupportCommon.hpp:18</a></div></div>
13018</div><!-- fragment -->
13019</div>
13020</div>
13021<a id="a1b90db39f6a9ebd11591e76fa364b06f"></a>
13022<h2 class="memtitle"><span class="permalink"><a href="#a1b90db39f6a9ebd11591e76fa364b06f">&#9670;&nbsp;</a></span>FindKernelMeasurements()</h2>
13023
13024<div class="memitem">
13025<div class="memproto">
13026 <table class="memname">
13027 <tr>
13028 <td class="memname">std::vector&lt;<a class="el" href="structarmnn_1_1_measurement.html">Measurement</a>&gt; armnn::FindKernelMeasurements </td>
13029 <td>(</td>
13030 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
13031 <td class="paramname"><em>event</em></td><td>)</td>
13032 <td></td>
13033 </tr>
13034 </table>
13035</div><div class="memdoc">
13036
13037<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00063">63</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
13038
13039<p class="reference">References <a class="el" href="_profiling_8cpp_source.html#l00044">FindMeasurement()</a>, <a class="el" href="_profiling_event_8cpp_source.html#l00054">Event::GetMeasurements()</a>, <a class="el" href="_instrument_8hpp_source.html#l00043">Measurement::m_Value</a>, and <a class="el" href="_wall_clock_timer_8hpp_source.html#l00063">WallClockTimer::WALL_CLOCK_TIME</a>.</p>
13040<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; BOOST_ASSERT(event != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; std::vector&lt;Measurement&gt; measurements;</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; <span class="comment">// Search through the measurements.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; measurement : event-&gt;GetMeasurements())</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (measurement.m_Name.rfind(<span class="stringliteral">&quot;OpenClKernelTimer&quot;</span>, 0) == 0</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; || measurement.m_Name.rfind(<span class="stringliteral">&quot;NeonKernelTimer&quot;</span>, 0) == 0)</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; <span class="comment">// Measurement found.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; measurements.push_back(measurement);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> measurements;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div></div><!-- fragment -->
13041</div>
13042</div>
13043<a id="a12d3ffe11b54c0aaa59bdd8415701c36"></a>
13044<h2 class="memtitle"><span class="permalink"><a href="#a12d3ffe11b54c0aaa59bdd8415701c36">&#9670;&nbsp;</a></span>FindMeasurement()</h2>
13045
13046<div class="memitem">
13047<div class="memproto">
13048 <table class="memname">
13049 <tr>
13050 <td class="memname"><a class="el" href="structarmnn_1_1_measurement.html">Measurement</a> armnn::FindMeasurement </td>
13051 <td>(</td>
13052 <td class="paramtype">const std::string &amp;&#160;</td>
13053 <td class="paramname"><em>name</em>, </td>
13054 </tr>
13055 <tr>
13056 <td class="paramkey"></td>
13057 <td></td>
13058 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
13059 <td class="paramname"><em>event</em>&#160;</td>
13060 </tr>
13061 <tr>
13062 <td></td>
13063 <td>)</td>
13064 <td></td><td></td>
13065 </tr>
13066 </table>
13067</div><div class="memdoc">
13068
13069<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00044">44</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
13070
13071<p class="reference">References <a class="el" href="_profiling_event_8cpp_source.html#l00054">Event::GetMeasurements()</a>.</p>
13072
13073<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00114">Profiler::AnalyzeEventSequenceAndWriteResults()</a>, and <a class="el" href="_profiling_8cpp_source.html#l00063">FindKernelMeasurements()</a>.</p>
13074<div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</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; BOOST_ASSERT(event != <span class="keyword">nullptr</span>);</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; <span class="comment">// Search though the measurements.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; measurement : event-&gt;GetMeasurements())</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">if</span> (measurement.m_Name == 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; <span class="comment">// Measurement found.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> measurement;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</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="comment">// Measurement not found.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>{ <span class="stringliteral">&quot;&quot;</span>, 0.f, Measurement::Unit::TIME_MS };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"><div class="ttname"><a href="namespacearmnn.html#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">armnn::JsonObjectType::Measurement</a></div></div>
13075</div><!-- fragment -->
13076</div>
13077</div>
13078<a id="afce94270d9c4a51cd0c4ac6a58af4e26"></a>
13079<h2 class="memtitle"><span class="permalink"><a href="#afce94270d9c4a51cd0c4ac6a58af4e26">&#9670;&nbsp;</a></span>ForEachLayerInput()</h2>
13080
13081<div class="memitem">
13082<div class="memproto">
13083 <table class="memname">
13084 <tr>
13085 <td class="memname">void armnn::ForEachLayerInput </td>
13086 <td>(</td>
13087 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
13088 <td class="paramname"><em>layerInfos</em>, </td>
13089 </tr>
13090 <tr>
13091 <td class="paramkey"></td>
13092 <td></td>
13093 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
13094 <td class="paramname"><em>layerInfo</em>, </td>
13095 </tr>
13096 <tr>
13097 <td class="paramkey"></td>
13098 <td></td>
13099 <td class="paramtype">Delegate&#160;</td>
13100 <td class="paramname"><em>function</em>&#160;</td>
13101 </tr>
13102 <tr>
13103 <td></td>
13104 <td>)</td>
13105 <td></td><td></td>
13106 </tr>
13107 </table>
13108</div><div class="memdoc">
13109
13110<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00259">259</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
13111
13112<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00231">Layer::GetInputSlots()</a>.</p>
13113
13114<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00301">AssignSplitId()</a>, and <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00366">IsReadyForSplitAssignment()</a>.</p>
13115<div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; Layer&amp; layer = *layerInfo.m_Layer;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> inputSlot : layer.GetInputSlots())</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"> 267</span>&#160; <span class="keyword">auto</span> connectedInput = boost::polymorphic_downcast&lt;OutputSlot*&gt;(inputSlot.GetConnection());</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; BOOST_ASSERT_MSG(connectedInput, <span class="stringliteral">&quot;Dangling input slot detected.&quot;</span>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; Layer&amp; inputLayer = connectedInput-&gt;GetOwningLayer();</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; <span class="keyword">auto</span> parentInfo = layerInfos.find(&amp;inputLayer);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (parentInfo != layerInfos.end())</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">function</span>(parentInfo-&gt;second);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</div></div><!-- fragment -->
13116</div>
13117</div>
13118<a id="a49538fa883b70c944e437d65d6628eec"></a>
13119<h2 class="memtitle"><span class="permalink"><a href="#a49538fa883b70c944e437d65d6628eec">&#9670;&nbsp;</a></span>ForEachLayerOutput()</h2>
13120
13121<div class="memitem">
13122<div class="memproto">
13123 <table class="memname">
13124 <tr>
13125 <td class="memname">void armnn::ForEachLayerOutput </td>
13126 <td>(</td>
13127 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
13128 <td class="paramname"><em>layerInfos</em>, </td>
13129 </tr>
13130 <tr>
13131 <td class="paramkey"></td>
13132 <td></td>
13133 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
13134 <td class="paramname"><em>layerInfo</em>, </td>
13135 </tr>
13136 <tr>
13137 <td class="paramkey"></td>
13138 <td></td>
13139 <td class="paramtype">Delegate&#160;</td>
13140 <td class="paramname"><em>function</em>&#160;</td>
13141 </tr>
13142 <tr>
13143 <td></td>
13144 <td>)</td>
13145 <td></td><td></td>
13146 </tr>
13147 </table>
13148</div><div class="memdoc">
13149
13150<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00280">280</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
13151
13152<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00232">Layer::GetOutputSlots()</a>.</p>
13153
13154<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00381">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
13155<div class="fragment"><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; Layer&amp; layer= *layerInfo.m_Layer;</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; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outputSlot : layer.GetOutputSlots())</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; output : outputSlot.GetConnections())</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; Layer&amp; childLayer = output-&gt;GetOwningLayer();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">auto</span> childInfo = layerInfos.find(&amp;childLayer);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (childInfo != layerInfos.end())</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">function</span>(childInfo-&gt;second);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</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; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div></div><!-- fragment -->
13156</div>
13157</div>
13158<a id="ad34d1d5b1ca8f52dc296ecf52ba20c8a"></a>
13159<h2 class="memtitle"><span class="permalink"><a href="#ad34d1d5b1ca8f52dc296ecf52ba20c8a">&#9670;&nbsp;</a></span>FullyConnected()</h2>
13160
13161<div class="memitem">
13162<div class="memproto">
13163 <table class="memname">
13164 <tr>
13165 <td class="memname">void FullyConnected </td>
13166 <td>(</td>
13167 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
13168 <td class="paramname"><em>rInputShape</em>, </td>
13169 </tr>
13170 <tr>
13171 <td class="paramkey"></td>
13172 <td></td>
13173 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13174 <td class="paramname"><em>rInputDecoder</em>, </td>
13175 </tr>
13176 <tr>
13177 <td class="paramkey"></td>
13178 <td></td>
13179 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
13180 <td class="paramname"><em>rOutputShape</em>, </td>
13181 </tr>
13182 <tr>
13183 <td class="paramkey"></td>
13184 <td></td>
13185 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
13186 <td class="paramname"><em>rOutputEncoder</em>, </td>
13187 </tr>
13188 <tr>
13189 <td class="paramkey"></td>
13190 <td></td>
13191 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13192 <td class="paramname"><em>rWeightDecoder</em>, </td>
13193 </tr>
13194 <tr>
13195 <td class="paramkey"></td>
13196 <td></td>
13197 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13198 <td class="paramname"><em>rBiasDecoder</em>, </td>
13199 </tr>
13200 <tr>
13201 <td class="paramkey"></td>
13202 <td></td>
13203 <td class="paramtype">const bool&#160;</td>
13204 <td class="paramname"><em>biasEnabled</em>, </td>
13205 </tr>
13206 <tr>
13207 <td class="paramkey"></td>
13208 <td></td>
13209 <td class="paramtype">const unsigned int&#160;</td>
13210 <td class="paramname"><em>K</em>, </td>
13211 </tr>
13212 <tr>
13213 <td class="paramkey"></td>
13214 <td></td>
13215 <td class="paramtype">const bool&#160;</td>
13216 <td class="paramname"><em>transposeWeights</em>&#160;</td>
13217 </tr>
13218 <tr>
13219 <td></td>
13220 <td>)</td>
13221 <td></td><td></td>
13222 </tr>
13223 </table>
13224</div><div class="memdoc">
13225
13226<p>Performs a matrix multiplication and optionally adds a bias. </p>
13227
13228<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html">FullyConnected.cpp</a>.</p>
13229
13230<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
13231<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// Perform FullyConnected implementation</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputSize = rOutputShape[1];</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; rInputShape[0]; n++)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelOutput = 0; channelOutput &lt; outputSize; channelOutput++)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">float</span> outval = 0.f;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelInput = 0; channelInput &lt; K; channelInput++)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">float</span> weight;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (transposeWeights)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; rWeightDecoder[channelOutput * K + channelInput];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; weight = rWeightDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; rWeightDecoder[channelInput * outputSize + channelOutput];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; weight = rWeightDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</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;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; rInputDecoder[n * K + channelInput];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; outval += weight * rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</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">if</span> (biasEnabled)</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; rBiasDecoder[channelOutput];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; outval += rBiasDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; rOutputEncoder[n * outputSize + channelOutput];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(outval);</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="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
13232<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
13233</div><!-- fragment -->
13234</div>
13235</div>
13236<a id="a66004b2326f8ccb1faa71d5efa186633"></a>
13237<h2 class="memtitle"><span class="permalink"><a href="#a66004b2326f8ccb1faa71d5efa186633">&#9670;&nbsp;</a></span>Gather()</h2>
13238
13239<div class="memitem">
13240<div class="memproto">
13241 <table class="memname">
13242 <tr>
13243 <td class="memname">void Gather </td>
13244 <td>(</td>
13245 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
13246 <td class="paramname"><em>paramsInfo</em>, </td>
13247 </tr>
13248 <tr>
13249 <td class="paramkey"></td>
13250 <td></td>
13251 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
13252 <td class="paramname"><em>indicesInfo</em>, </td>
13253 </tr>
13254 <tr>
13255 <td class="paramkey"></td>
13256 <td></td>
13257 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
13258 <td class="paramname"><em>outputInfo</em>, </td>
13259 </tr>
13260 <tr>
13261 <td class="paramkey"></td>
13262 <td></td>
13263 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13264 <td class="paramname"><em>params</em>, </td>
13265 </tr>
13266 <tr>
13267 <td class="paramkey"></td>
13268 <td></td>
13269 <td class="paramtype">const int32_t *&#160;</td>
13270 <td class="paramname"><em>indices</em>, </td>
13271 </tr>
13272 <tr>
13273 <td class="paramkey"></td>
13274 <td></td>
13275 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
13276 <td class="paramname"><em>output</em>&#160;</td>
13277 </tr>
13278 <tr>
13279 <td></td>
13280 <td>)</td>
13281 <td></td><td></td>
13282 </tr>
13283 </table>
13284</div><div class="memdoc">
13285
13286<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.html#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.html">Gather.cpp</a>.</p>
13287
13288<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
13289<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; boost::ignore_unused(outputInfo);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> TensorShape&amp; paramsShape = paramsInfo.GetShape();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paramsProduct = 1;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; paramsInfo.GetNumDimensions(); ++i)</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; paramsProduct = paramsProduct * paramsShape[i];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; indicesInfo.GetNumElements(); ++i)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(indices[i]);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; BOOST_ASSERT(indices[i] &gt;= 0 &amp;&amp; indx &lt; paramsShape[0]);</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"> 41</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> startOffset = indx * paramsProduct;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> endOffset = startOffset + paramsProduct;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = startOffset; j &lt; endOffset; ++j)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; params[j];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">float</span> outputValue = params.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; output[outIndex];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(outputValue);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; ++outIndex;</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; }</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; BOOST_ASSERT(outIndex == outputInfo.GetNumElements());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
13290<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
13291</div><!-- fragment -->
13292</div>
13293</div>
13294<a id="afb5b53a8b0c01d4f27830bef0f25ca09"></a>
13295<h2 class="memtitle"><span class="permalink"><a href="#afb5b53a8b0c01d4f27830bef0f25ca09">&#9670;&nbsp;</a></span>GatherTensorHandlePairs()</h2>
13296
13297<div class="memitem">
13298<div class="memproto">
13299 <table class="memname">
13300 <tr>
13301 <td class="memname">void armnn::GatherTensorHandlePairs </td>
13302 <td>(</td>
13303 <td class="paramtype">const DescriptorType &amp;&#160;</td>
13304 <td class="paramname"><em>descriptor</em>, </td>
13305 </tr>
13306 <tr>
13307 <td class="paramkey"></td>
13308 <td></td>
13309 <td class="paramtype">std::vector&lt; std::pair&lt; SrcTensorHandleType *, DstTensorHandleType *&gt;&gt; &amp;&#160;</td>
13310 <td class="paramname"><em>tensorHandlePairs</em>&#160;</td>
13311 </tr>
13312 <tr>
13313 <td></td>
13314 <td>)</td>
13315 <td></td><td></td>
13316 </tr>
13317 </table>
13318</div><div class="memdoc">
13319
13320<p class="definition">Definition at line <a class="el" href="_workload_utils_8hpp_source.html#l00192">192</a> of file <a class="el" href="_workload_utils_8hpp_source.html">WorkloadUtils.hpp</a>.</p>
13321
13322<p class="reference">References <a class="el" href="_workload_utils_8cpp_source.html#l00192">ConvertMaskToACLFormat()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00109">ConvertWeightTensorInfoFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00013">PermuteTensor()</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00036">ReshapeWeightsForAcl()</a>.</p>
13323
13324<p class="reference">Referenced by <a class="el" href="_mem_copy_workload_8cpp_source.html#l00042">CopyMemGenericWorkload::CopyMemGenericWorkload()</a>, <a class="el" href="_neon_convert_fp16_to_fp32_workload_8cpp_source.html#l00017">NeonConvertFp16ToFp32Workload::NeonConvertFp16ToFp32Workload()</a>, and <a class="el" href="_neon_convert_fp32_to_fp16_workload_8cpp_source.html#l00018">NeonConvertFp32ToFp16Workload::NeonConvertFp32ToFp16Workload()</a>.</p>
13325<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numInputs = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(descriptor.m_Inputs.size());</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; tensorHandlePairs.reserve(numInputs);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numInputs; ++i)</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"> 200</span>&#160; SrcTensorHandleType* <span class="keyword">const</span> srcTensorHandle =</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; boost::polymorphic_downcast&lt;SrcTensorHandleType*&gt;(descriptor.m_Inputs[i]);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; DstTensorHandleType* <span class="keyword">const</span> dstTensorHandle =</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; boost::polymorphic_downcast&lt;DstTensorHandleType*&gt;(descriptor.m_Outputs[i]);</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; tensorHandlePairs.emplace_back(srcTensorHandle, dstTensorHandle);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div></div><!-- fragment -->
13326</div>
13327</div>
13328<a id="ae8ed5c640761fb6744aec0ee16388417"></a>
13329<h2 class="memtitle"><span class="permalink"><a href="#ae8ed5c640761fb6744aec0ee16388417">&#9670;&nbsp;</a></span>GenerateRangeK()</h2>
13330
13331<div class="memitem">
13332<div class="memproto">
13333 <table class="memname">
13334 <tr>
13335 <td class="memname">std::vector&lt;unsigned int&gt; armnn::GenerateRangeK </td>
13336 <td>(</td>
13337 <td class="paramtype">unsigned int&#160;</td>
13338 <td class="paramname"><em>k</em></td><td>)</td>
13339 <td></td>
13340 </tr>
13341 </table>
13342</div><div class="memdoc">
13343
13344<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
13345
13346<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>.</p>
13347<div class="fragment"><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; std::vector&lt;unsigned int&gt; range(k);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; std::iota(range.begin(), range.end(), 0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">return</span> range;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;}</div></div><!-- fragment -->
13348</div>
13349</div>
13350<a id="aa093207ea7c4e7a9c9abe40d2f57995b"></a>
13351<h2 class="memtitle"><span class="permalink"><a href="#aa093207ea7c4e7a9c9abe40d2f57995b">&#9670;&nbsp;</a></span>GetActivationFunctionAsCString()</h2>
13352
13353<div class="memitem">
13354<div class="memproto">
13355 <table class="memname">
13356 <tr>
13357 <td class="memname">constexpr char const* armnn::GetActivationFunctionAsCString </td>
13358 <td>(</td>
13359 <td class="paramtype"><a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
13360 <td class="paramname"><em>activation</em></td><td>)</td>
13361 <td></td>
13362 </tr>
13363 </table>
13364</div><div class="memdoc">
13365
13366<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00027">27</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13367
13368<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
13369
13370<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00042">StringifyLayerParameters&lt; ActivationDescriptor &gt;::Serialize()</a>.</p>
13371<div class="fragment"><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="keywordflow">switch</span> (activation)</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="keywordflow">case</span> ActivationFunction::Sigmoid: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sigmoid&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH: <span class="keywordflow">return</span> <span class="stringliteral">&quot;TanH&quot;</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Linear&quot;</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ReLu&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BoundedReLu&quot;</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SoftReLu&quot;</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LeakyReLu&quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Abs&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sqrt&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Square&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</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;}</div></div><!-- fragment -->
13372</div>
13373</div>
13374<a id="a5cda3502382f06a64c3cbeb1829bd850"></a>
13375<h2 class="memtitle"><span class="permalink"><a href="#a5cda3502382f06a64c3cbeb1829bd850">&#9670;&nbsp;</a></span>GetArgMinMaxFunctionAsCString()</h2>
13376
13377<div class="memitem">
13378<div class="memproto">
13379 <table class="memname">
13380 <tr>
13381 <td class="memname">constexpr char const* armnn::GetArgMinMaxFunctionAsCString </td>
13382 <td>(</td>
13383 <td class="paramtype"><a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
13384 <td class="paramname"><em>function</em></td><td>)</td>
13385 <td></td>
13386 </tr>
13387 </table>
13388</div><div class="memdoc">
13389
13390<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00045">45</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13391
13392<p class="reference">References <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a>.</p>
13393<div class="fragment"><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">switch</span> (<span class="keyword">function</span>)</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; <span class="keywordflow">case</span> ArgMinMaxFunction::Max: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Max&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">case</span> ArgMinMaxFunction::Min: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Min&quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
13394</div>
13395</div>
13396<a id="a872803f5667392efc3c8e5607bd453ad"></a>
13397<h2 class="memtitle"><span class="permalink"><a href="#a872803f5667392efc3c8e5607bd453ad">&#9670;&nbsp;</a></span>GetBiasDataType()</h2>
13398
13399<div class="memitem">
13400<div class="memproto">
13401 <table class="memname">
13402 <tr>
13403 <td class="memname"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> GetBiasDataType </td>
13404 <td>(</td>
13405 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
13406 <td class="paramname"><em>inputDataType</em></td><td>)</td>
13407 <td></td>
13408 </tr>
13409 </table>
13410</div><div class="memdoc">
13411
13412<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.html#l00025">25</a> of file <a class="el" href="_workload_data_8cpp_source.html">WorkloadData.cpp</a>.</p>
13413
13414<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_exceptions_8hpp_source.html#l00169">CHECK_LOCATION</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00280">TensorInfo::GetQuantizationDim()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00237">TensorInfo::GetQuantizationScales()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_optional_8hpp_source.html#l00053">OptionalBase::has_value()</a>, <a class="el" href="_tensor_8hpp_source.html#l00098">TensorInfo::HasMultipleQuantizationScales()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_tensor_8cpp_source.html#l00290">TensorInfo::IsQuantized()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00237">IsQuantized8BitType()</a>, <a class="el" href="_tensor_8cpp_source.html#l00218">TensorInfo::IsTypeSpaceMatch()</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; IsReference, T &gt;::value()</a>, and <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
13415
13416<p class="reference">Referenced by <a class="el" href="_layer_release_constant_data_test_8cpp_source.html#l00075">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.html#l02669">CompareDepthwiseConvolution2dTestImpl()</a>, <a class="el" href="_workload_data_8cpp_source.html#l00958">FullyConnectedQueueDescriptor::Validate()</a>, <a class="el" href="_workload_data_8cpp_source.html#l01146">Convolution2dQueueDescriptor::Validate()</a>, <a class="el" href="_workload_data_8cpp_source.html#l01198">DepthwiseConvolution2dQueueDescriptor::Validate()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l02633">TransposeConvolution2dQueueDescriptor::Validate()</a>.</p>
13417<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">switch</span> (inputDataType)</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="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> DataType::Float16;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> DataType::Float32;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Invalid input data type&quot;</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> DataType::Float32;</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"> 45</span>&#160;}</div></div><!-- fragment -->
13418</div>
13419</div>
13420<a id="a83c4a275acf59f62b8387f389d0929d5"></a>
13421<h2 class="memtitle"><span class="permalink"><a href="#a83c4a275acf59f62b8387f389d0929d5">&#9670;&nbsp;</a></span>GetBiasTypeFromWeightsType()</h2>
13422
13423<div class="memitem">
13424<div class="memproto">
13425<table class="mlabels">
13426 <tr>
13427 <td class="mlabels-left">
13428 <table class="memname">
13429 <tr>
13430 <td class="memname"><a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt;<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&gt; armnn::GetBiasTypeFromWeightsType </td>
13431 <td>(</td>
13432 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt;&#160;</td>
13433 <td class="paramname"><em>weightsType</em></td><td>)</td>
13434 <td></td>
13435 </tr>
13436 </table>
13437 </td>
13438 <td class="mlabels-right">
13439<span class="mlabels"><span class="mlabel">inline</span></span> </td>
13440 </tr>
13441</table>
13442</div><div class="memdoc">
13443
13444<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.html#l00014">14</a> of file <a class="el" href="_layer_support_rules_8hpp_source.html">LayerSupportRules.hpp</a>.</p>
13445
13446<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>, and <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
13447
13448<p class="reference">Referenced by <a class="el" href="_layer_support_rules_8hpp_source.html#l00128">BiasAndWeightsTypesCompatible::BiasAndWeightsTypesCompatible()</a>, <a class="el" href="_layer_support_rules_8hpp_source.html#l00119">BiasAndWeightsTypesMatch::BiasAndWeightsTypesMatch()</a>, <a class="el" href="_fully_connected_test_impl_8cpp_source.html#l00071">FullyConnectedTest()</a>, and <a class="el" href="_workload_factory_8cpp_source.html#l00045">IWorkloadFactory::IsLayerSupported()</a>.</p>
13449<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">if</span> (!weightsType)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">return</span> weightsType;</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;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">switch</span>(weightsType.<a class="code" href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">value</a>())</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> weightsType;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;GetBiasTypeFromWeightsType(): Unsupported data type.&quot;</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structarmnn_1_1_empty_optional.html">armnn::EmptyOptional</a>();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
13450<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
13451<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
13452<div class="ttc" id="structarmnn_1_1_empty_optional_html"><div class="ttname"><a href="structarmnn_1_1_empty_optional.html">armnn::EmptyOptional</a></div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00032">Optional.hpp:32</a></div></div>
13453<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
13454<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
13455<div class="ttc" id="classarmnn_1_1_optional_reference_switch_html_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.html#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.html#l00146">Optional.hpp:146</a></div></div>
13456</div><!-- fragment -->
13457</div>
13458</div>
13459<a id="aabb76a77e95921785f576bb29b495cd8"></a>
13460<h2 class="memtitle"><span class="permalink"><a href="#aabb76a77e95921785f576bb29b495cd8">&#9670;&nbsp;</a></span>GetComparisonOperationAsCString()</h2>
13461
13462<div class="memitem">
13463<div class="memproto">
13464 <table class="memname">
13465 <tr>
13466 <td class="memname">constexpr char const* armnn::GetComparisonOperationAsCString </td>
13467 <td>(</td>
13468 <td class="paramtype"><a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
13469 <td class="paramname"><em>operation</em></td><td>)</td>
13470 <td></td>
13471 </tr>
13472 </table>
13473</div><div class="memdoc">
13474
13475<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00055">55</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13476
13477<p class="reference">References <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a>, <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a>, and <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a>.</p>
13478
13479<p class="reference">Referenced by <a class="el" href="_ref_comparison_workload_8cpp_source.html#l00039">RefComparisonWorkload::Execute()</a>.</p>
13480<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">switch</span> (operation)</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">case</span> ComparisonOperation::Equal: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Equal&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Greater: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Greater&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::GreaterOrEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;GreaterOrEqual&quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Less: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Less&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::LessOrEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LessOrEqual&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::NotEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NotEqual&quot;</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
13481</div>
13482</div>
13483<a id="a6bab17bfd45c2fa4592c431bc25ad10e"></a>
13484<h2 class="memtitle"><span class="permalink"><a href="#a6bab17bfd45c2fa4592c431bc25ad10e">&#9670;&nbsp;</a></span>GetComputeDeviceAsCString()</h2>
13485
13486<div class="memitem">
13487<div class="memproto">
13488 <table class="memname">
13489 <tr>
13490 <td class="memname">constexpr char const* armnn::GetComputeDeviceAsCString </td>
13491 <td>(</td>
13492 <td class="paramtype"><a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&#160;</td>
13493 <td class="paramname"><em>compute</em></td><td>)</td>
13494 <td></td>
13495 </tr>
13496 </table>
13497</div><div class="memdoc">
13498<p>Deprecated function that will be removed together with the Compute enum </p>
13499
13500<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00034">34</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
13501
13502<p class="reference">References <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a>.</p>
13503
13504<p class="reference">Referenced by <a class="el" href="_backend_id_tests_8cpp_source.html#l00015">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_backend_id_8hpp_source.html#l00047">operator&lt;&lt;()</a>.</p>
13505<div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">switch</span> (compute)</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="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuRef&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuAcc&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;GpuAcc&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</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;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
13506<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
13507<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
13508</div><!-- fragment -->
13509</div>
13510</div>
13511<a id="aeef70b7611ae71e97ab55c75ef72b210"></a>
13512<h2 class="memtitle"><span class="permalink"><a href="#aeef70b7611ae71e97ab55c75ef72b210">&#9670;&nbsp;</a></span>GetDataLayoutName()</h2>
13513
13514<div class="memitem">
13515<div class="memproto">
13516 <table class="memname">
13517 <tr>
13518 <td class="memname">constexpr const char* armnn::GetDataLayoutName </td>
13519 <td>(</td>
13520 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
13521 <td class="paramname"><em>dataLayout</em></td><td>)</td>
13522 <td></td>
13523 </tr>
13524 </table>
13525</div><div class="memdoc">
13526
13527<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00186">186</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13528
13529<p class="reference">References <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
13530
13531<p class="reference">Referenced by <a class="el" href="_common_test_utils_8cpp_source.html#l00054">MakeTensorShape()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00050">StringifyLayerParameters&lt; Convolution2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00076">StringifyLayerParameters&lt; BatchNormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00083">StringifyLayerParameters&lt; DepthwiseConvolution2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00240">StringifyLayerParameters&lt; L2NormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00247">StringifyLayerParameters&lt; BatchToSpaceNdDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00290">StringifyLayerParameters&lt; ResizeBilinearDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00298">StringifyLayerParameters&lt; ResizeDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00307">StringifyLayerParameters&lt; SpaceToBatchNdDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00343">StringifyLayerParameters&lt; SpaceToDepthDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00410">StringifyLayerParameters&lt; StridedSliceDescriptor &gt;::Serialize()</a>, and <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00473">StringifyLayerParameters&lt; TransposeConvolution2dDescriptor &gt;::Serialize()</a>.</p>
13532<div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</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; <span class="keywordflow">case</span> DataLayout::NCHW: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NCHW&quot;</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NHWC&quot;</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div></div><!-- fragment -->
13533</div>
13534</div>
13535<a id="a81b5ff8545adad19a1c9d4ca076d552c"></a>
13536<h2 class="memtitle"><span class="permalink"><a href="#a81b5ff8545adad19a1c9d4ca076d552c">&#9670;&nbsp;</a></span>GetDataTypeName()</h2>
13537
13538<div class="memitem">
13539<div class="memproto">
13540 <table class="memname">
13541 <tr>
13542 <td class="memname">constexpr const char* armnn::GetDataTypeName </td>
13543 <td>(</td>
13544 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
13545 <td class="paramname"><em>dataType</em></td><td>)</td>
13546 <td></td>
13547 </tr>
13548 </table>
13549</div><div class="memdoc">
13550
13551<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00165">165</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13552
13553<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
13554
13555<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_utils_tests_8cpp_source.html#l00061">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00347">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_workload_data_8cpp_source.html#l00025">GetBiasDataType()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.html#l02855">TfLiteParser::GetBuffer()</a>, <a class="el" href="_ref_permute_workload_8hpp_source.html#l00019">RefPermuteWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_ref_pad_workload_8hpp_source.html#l00021">RefPadWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_ref_debug_workload_8hpp_source.html#l00023">RefDebugWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, and <a class="el" href="_types_utils_8hpp_source.html#l00292">VerifyTensorInfoDataType()</a>.</p>
13556<div class="fragment"><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; <span class="keywordflow">switch</span> (dataType)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> DataType::Float16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Float16&quot;</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">case</span> DataType::Float32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Float32&quot;</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QAsymmU8&quot;</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QAsymmS8&quot;</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymmS8&quot;</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymm8PerAxis&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymm16&quot;</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">case</span> DataType::Signed32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Signed32&quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">case</span> DataType::Boolean: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Boolean&quot;</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
13557<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
13558</div><!-- fragment -->
13559</div>
13560</div>
13561<a id="aa02b9e06fb20fa3c13da0427e6ee5ab2"></a>
13562<h2 class="memtitle"><span class="permalink"><a href="#aa02b9e06fb20fa3c13da0427e6ee5ab2">&#9670;&nbsp;</a></span>GetDataTypeSize()</h2>
13563
13564<div class="memitem">
13565<div class="memproto">
13566 <table class="memname">
13567 <tr>
13568 <td class="memname">constexpr unsigned int armnn::GetDataTypeSize </td>
13569 <td>(</td>
13570 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
13571 <td class="paramname"><em>dataType</em></td><td>)</td>
13572 <td></td>
13573 </tr>
13574 </table>
13575</div><div class="memdoc">
13576
13577<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00113">113</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13578
13579<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
13580
13581<p class="reference">Referenced by <a class="el" href="_utils_tests_8cpp_source.html#l00018">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_tf_parser_8cpp_source.html#l00931">armnnTfParser::ConvertTfTensorDataType()</a>, <a class="el" href="_ref_strided_slice_workload_8cpp_source.html#l00020">RefStridedSliceWorkload::Execute()</a>, <a class="el" href="_ref_depth_to_space_workload_8cpp_source.html#l00014">RefDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_ref_slice_workload_8cpp_source.html#l00016">RefSliceWorkload::Execute()</a>, <a class="el" href="_tensor_8cpp_source.html#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_cpu_tensor_handle_8cpp_source.html#l00014">GetUnpaddedTensorStrides()</a>, and <a class="el" href="_workload_utils_8cpp_source.html#l00013">PermuteTensor()</a>.</p>
13582<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">switch</span> (dataType)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::Float16: <span class="keywordflow">return</span> 2U;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">case</span> DataType::Signed32: <span class="keywordflow">return</span> 4U;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16: <span class="keywordflow">return</span> 2U;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">case</span> DataType::Boolean: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0U;</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;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
13583<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
13584</div><!-- fragment -->
13585</div>
13586</div>
13587<a id="ab03dcfb3b4019d8f58a67c41681951ae"></a>
13588<h2 class="memtitle"><span class="permalink"><a href="#ab03dcfb3b4019d8f58a67c41681951ae">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[1/2]</span></h2>
13589
13590<div class="memitem">
13591<div class="memproto">
13592 <table class="memname">
13593 <tr>
13594 <td class="memname">const <a class="el" href="classarmnn_1_1_event.html">Event</a>* armnn::GetEventPtr </td>
13595 <td>(</td>
13596 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.html">Event</a> *&#160;</td>
13597 <td class="paramname"><em>ptr</em></td><td>)</td>
13598 <td></td>
13599 </tr>
13600 </table>
13601</div><div class="memdoc">
13602
13603<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00110">110</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
13604
13605<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00114">Profiler::AnalyzeEventSequenceAndWriteResults()</a>.</p>
13606<div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;{ <span class="keywordflow">return</span> ptr;}</div></div><!-- fragment -->
13607</div>
13608</div>
13609<a id="a4b1e2158af2aedd3f00d2121c45b0f93"></a>
13610<h2 class="memtitle"><span class="permalink"><a href="#a4b1e2158af2aedd3f00d2121c45b0f93">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[2/2]</span></h2>
13611
13612<div class="memitem">
13613<div class="memproto">
13614 <table class="memname">
13615 <tr>
13616 <td class="memname">const <a class="el" href="classarmnn_1_1_event.html">Event</a>* armnn::GetEventPtr </td>
13617 <td>(</td>
13618 <td class="paramtype">const std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_event.html">Event</a> &gt; &amp;&#160;</td>
13619 <td class="paramname"><em>ptr</em></td><td>)</td>
13620 <td></td>
13621 </tr>
13622 </table>
13623</div><div class="memdoc">
13624
13625<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00111">111</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
13626<div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{<span class="keywordflow">return</span> ptr.get(); }</div></div><!-- fragment -->
13627</div>
13628</div>
13629<a id="a5974a183710829851dbd98a4a919cd50"></a>
13630<h2 class="memtitle"><span class="permalink"><a href="#a5974a183710829851dbd98a4a919cd50">&#9670;&nbsp;</a></span>GetILayerSupportByBackendId()</h2>
13631
13632<div class="memitem">
13633<div class="memproto">
13634 <table class="memname">
13635 <tr>
13636 <td class="memname">std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> &gt; GetILayerSupportByBackendId </td>
13637 <td>(</td>
13638 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;&#160;</td>
13639 <td class="paramname"><em>backend</em></td><td>)</td>
13640 <td></td>
13641 </tr>
13642 </table>
13643</div><div class="memdoc">
13644
13645<p>Convenience function to retrieve the <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> for a backend. </p>
13646
13647<p class="definition">Definition at line <a class="el" href="_backend_helper_8cpp_source.html#l00014">14</a> of file <a class="el" href="_backend_helper_8cpp_source.html">BackendHelper.cpp</a>.</p>
13648
13649<p class="reference">References <a class="el" href="_backend_registry_8cpp_source.html#l00013">BackendRegistryInstance()</a>, <a class="el" href="_backend_registry_8cpp_source.html#l00048">BackendRegistry::GetFactory()</a>, and <a class="el" href="_backend_registry_8cpp_source.html#l00043">BackendRegistry::IsBackendRegistered()</a>.</p>
13650<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; BackendRegistry&amp; backendRegistry = <a class="code" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a>();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">if</span> (!backendRegistry.IsBackendRegistered(backend))</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="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">auto</span> factoryFunc = backendRegistry.GetFactory(backend);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">auto</span> backendObject = factoryFunc();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> backendObject-&gt;GetLayerSupport();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00013">BackendRegistry.cpp:13</a></div></div>
13651</div><!-- fragment -->
13652</div>
13653</div>
13654<a id="af487cc4568faf50403f12ed1c7a70a2d"></a>
13655<h2 class="memtitle"><span class="permalink"><a href="#af487cc4568faf50403f12ed1c7a70a2d">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[1/2]</span></h2>
13656
13657<div class="memitem">
13658<div class="memproto">
13659 <table class="memname">
13660 <tr>
13661 <td class="memname">const float* armnn::GetInputTensorData </td>
13662 <td>(</td>
13663 <td class="paramtype">unsigned int&#160;</td>
13664 <td class="paramname"><em>idx</em>, </td>
13665 </tr>
13666 <tr>
13667 <td class="paramkey"></td>
13668 <td></td>
13669 <td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;&#160;</td>
13670 <td class="paramname"><em>data</em>&#160;</td>
13671 </tr>
13672 <tr>
13673 <td></td>
13674 <td>)</td>
13675 <td></td><td></td>
13676 </tr>
13677 </table>
13678</div><div class="memdoc">
13679
13680<p class="definition">Definition at line <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html">SampleDynamicAdditionWorkload.cpp</a>.</p>
13681
13682<p class="reference">References <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
13683<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> ITensorHandle* tensorHandle = data.m_Inputs[idx];</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div></div><!-- fragment -->
13684</div>
13685</div>
13686<a id="a2187ea15b1ae8c323a0cc5c211fc43d9"></a>
13687<h2 class="memtitle"><span class="permalink"><a href="#a2187ea15b1ae8c323a0cc5c211fc43d9">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[2/2]</span></h2>
13688
13689<div class="memitem">
13690<div class="memproto">
13691 <table class="memname">
13692 <tr>
13693 <td class="memname">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetInputTensorData </td>
13694 <td>(</td>
13695 <td class="paramtype">unsigned int&#160;</td>
13696 <td class="paramname"><em>idx</em>, </td>
13697 </tr>
13698 <tr>
13699 <td class="paramkey"></td>
13700 <td></td>
13701 <td class="paramtype">const PayloadType &amp;&#160;</td>
13702 <td class="paramname"><em>data</em>&#160;</td>
13703 </tr>
13704 <tr>
13705 <td></td>
13706 <td>)</td>
13707 <td></td><td></td>
13708 </tr>
13709 </table>
13710</div><div class="memdoc">
13711
13712<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00034">34</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
13713
13714<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
13715
13716<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
13717<div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> ITensorHandle* tensorHandle = data.m_Inputs[idx];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
13718</div><!-- fragment -->
13719</div>
13720</div>
13721<a id="a691846a9eee59b0cd5b22fb5f674e007"></a>
13722<h2 class="memtitle"><span class="permalink"><a href="#a691846a9eee59b0cd5b22fb5f674e007">&#9670;&nbsp;</a></span>GetInputTensorDataFloat()</h2>
13723
13724<div class="memitem">
13725<div class="memproto">
13726 <table class="memname">
13727 <tr>
13728 <td class="memname">const float* armnn::GetInputTensorDataFloat </td>
13729 <td>(</td>
13730 <td class="paramtype">unsigned int&#160;</td>
13731 <td class="paramname"><em>idx</em>, </td>
13732 </tr>
13733 <tr>
13734 <td class="paramkey"></td>
13735 <td></td>
13736 <td class="paramtype">const PayloadType &amp;&#160;</td>
13737 <td class="paramname"><em>data</em>&#160;</td>
13738 </tr>
13739 <tr>
13740 <td></td>
13741 <td>)</td>
13742 <td></td><td></td>
13743 </tr>
13744 </table>
13745</div><div class="memdoc">
13746
13747<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00048">48</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
13748
13749<p class="reference">Referenced by <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.html#l00017">RefConvertFp32ToFp16Workload::Execute()</a>, and <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>.</p>
13750<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> GetInputTensorData&lt;float&gt;(idx, data);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div></div><!-- fragment -->
13751</div>
13752</div>
13753<a id="a084b0ce273bef78aa314bd97fc574b84"></a>
13754<h2 class="memtitle"><span class="permalink"><a href="#a084b0ce273bef78aa314bd97fc574b84">&#9670;&nbsp;</a></span>GetInputTensorDataHalf()</h2>
13755
13756<div class="memitem">
13757<div class="memproto">
13758 <table class="memname">
13759 <tr>
13760 <td class="memname">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetInputTensorDataHalf </td>
13761 <td>(</td>
13762 <td class="paramtype">unsigned int&#160;</td>
13763 <td class="paramname"><em>idx</em>, </td>
13764 </tr>
13765 <tr>
13766 <td class="paramkey"></td>
13767 <td></td>
13768 <td class="paramtype">const PayloadType &amp;&#160;</td>
13769 <td class="paramname"><em>data</em>&#160;</td>
13770 </tr>
13771 <tr>
13772 <td></td>
13773 <td>)</td>
13774 <td></td><td></td>
13775 </tr>
13776 </table>
13777</div><div class="memdoc">
13778
13779<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00060">60</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
13780
13781<p class="reference">Referenced by <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.html#l00016">RefConvertFp16ToFp32Workload::Execute()</a>.</p>
13782<div class="fragment"><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; <span class="keywordflow">return</span> GetInputTensorData&lt;Half&gt;(idx, data);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div></div><!-- fragment -->
13783</div>
13784</div>
13785<a id="ae52296dff1f4879854f320d59f92574e"></a>
13786<h2 class="memtitle"><span class="permalink"><a href="#ae52296dff1f4879854f320d59f92574e">&#9670;&nbsp;</a></span>GetInputTensorInfo()</h2>
13787
13788<div class="memitem">
13789<div class="memproto">
13790 <table class="memname">
13791 <tr>
13792 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> armnn::GetInputTensorInfo </td>
13793 <td>(</td>
13794 <td class="paramtype">const <a class="el" href="classarmnn_1_1_network.html">Network</a> *&#160;</td>
13795 <td class="paramname"><em>network</em></td><td>)</td>
13796 <td></td>
13797 </tr>
13798 </table>
13799</div><div class="memdoc">
13800
13801<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00337">337</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
13802
13803<p class="reference">References <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, and <a class="el" href="_graph_8hpp_source.html#l00181">Graph::GetInputLayers()</a>.</p>
13804
13805<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00347">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_activation_test_impl_8cpp_source.html#l00184">BoundedReLuUint8UpperAndLowerBoundTest()</a>, and <a class="el" href="_loaded_network_8hpp_source.html#l00037">LoadedNetwork::~LoadedNetwork()</a>.</p>
13806<div class="fragment"><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;{</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; inputLayer : network-&gt;GetGraph().GetInputLayers())</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; BOOST_ASSERT_MSG(inputLayer-&gt;GetNumOutputSlots() == 1, <span class="stringliteral">&quot;Input layer should have exactly 1 output slot&quot;</span>);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> inputLayer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Network has no input layers&quot;</span>);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;}</div></div><!-- fragment -->
13807</div>
13808</div>
13809<a id="a9da573d7a1fc03726fd41f2130cbcf92"></a>
13810<h2 class="memtitle"><span class="permalink"><a href="#a9da573d7a1fc03726fd41f2130cbcf92">&#9670;&nbsp;</a></span>GetLayerTypeAsCString()</h2>
13811
13812<div class="memitem">
13813<div class="memproto">
13814 <table class="memname">
13815 <tr>
13816 <td class="memname">const char * GetLayerTypeAsCString </td>
13817 <td>(</td>
13818 <td class="paramtype"><a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td>
13819 <td class="paramname"><em>type</em></td><td>)</td>
13820 <td></td>
13821 </tr>
13822 </table>
13823</div><div class="memdoc">
13824
13825<p class="definition">Definition at line <a class="el" href="_internal_types_8cpp_source.html#l00013">13</a> of file <a class="el" href="_internal_types_8cpp_source.html">InternalTypes.cpp</a>.</p>
13826
13827<p class="reference">References <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36">Activation</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c">ArgMinMax</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2">BatchToSpaceNd</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d">DepthToSpace</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a">DetectionPostProcess</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48">FakeQuantization</a>, <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">FullyConnected</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53">Gather</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488">LogSoftmax</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d">Mean</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">Pad</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">Pooling2d</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63">Resize</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb">Slice</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279">SpaceToBatchNd</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a">SpaceToDepth</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf">Splitter</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca">Stack</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d">StridedSlice</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>, and <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a>.</p>
13828
13829<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_network_8cpp_source.html#l00098">CheckScaleSetOnQuantizedType()</a>, <a class="el" href="_layer_8cpp_source.html#l00370">Layer::InferOutputShapes()</a>, <a class="el" href="_graph_8cpp_source.html#l00493">Graph::InferTensorInfos()</a>, <a class="el" href="_graph_8cpp_source.html#l00061">Graph::Print()</a>, <a class="el" href="_layer_8cpp_source.html#l00397">Layer::SerializeLayerParameters()</a>, <a class="el" href="_graph_8cpp_source.html#l00081">Graph::SerializeToDot()</a>, <a class="el" href="_elementwise_base_layer_8cpp_source.html#l00051">ElementwiseBaseLayer::ValidateTensorShapesFromInputs()</a>, and <a class="el" href="_layer_8cpp_source.html#l00337">Layer::VerifyLayerConnections()</a>.</p>
13830<div class="fragment"><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="keywordflow">switch</span> (type)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">LayerType::Activation</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Activation&quot;</span>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> LayerType::Addition: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Addition&quot;</span>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">LayerType::ArgMinMax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ArgMinMax&quot;</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">case</span> LayerType::BatchNormalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BatchNormalization&quot;</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">LayerType::BatchToSpaceNd</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BatchToSpaceNd&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> LayerType::Comparison: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Comparison&quot;</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> LayerType::Concat: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Concat&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> LayerType::Constant: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Constant&quot;</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">case</span> LayerType::ConvertFp16ToFp32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConvertFp16ToFp32&quot;</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> LayerType::ConvertFp32ToFp16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConvertFp32ToFp16&quot;</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">case</span> LayerType::Convolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Convolution2d&quot;</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">LayerType::Debug</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Debug&quot;</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">LayerType::DepthToSpace</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DepthToSpace&quot;</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">case</span> LayerType::DepthwiseConvolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DepthwiseConvolution2d&quot;</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">LayerType::Dequantize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Dequantize&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">LayerType::DetectionPostProcess</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DetectionPostProcess&quot;</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> LayerType::Division: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Division&quot;</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> LayerType::ElementwiseUnary: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ElementwiseUnary&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">LayerType::FakeQuantization</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;FakeQuantization&quot;</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> LayerType::Floor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Floor&quot;</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">LayerType::FullyConnected</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;FullyConnected&quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">LayerType::Gather</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Gather&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> LayerType::Input: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Input&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> LayerType::InstanceNormalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;InstanceNormalization&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> LayerType::L2Normalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;L2Normalization&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">LayerType::LogSoftmax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LogSoftmax&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> LayerType::Lstm: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Lstm&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> LayerType::Maximum: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Maximum&quot;</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">LayerType::Mean</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Mean&quot;</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> LayerType::MemCopy: <span class="keywordflow">return</span> <span class="stringliteral">&quot;MemCopy&quot;</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> LayerType::MemImport: <span class="keywordflow">return</span> <span class="stringliteral">&quot;MemImport&quot;</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> LayerType::Merge: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Merge&quot;</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> LayerType::Minimum: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Minimum&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">case</span> LayerType::Multiplication: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Multiplication&quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> LayerType::Normalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Normalization&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> LayerType::Output: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Output&quot;</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">LayerType::Pad</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pad&quot;</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">LayerType::Permute</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Permute&quot;</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">LayerType::Pooling2d</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pooling2d&quot;</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">case</span> LayerType::PreCompiled: <span class="keywordflow">return</span> <span class="stringliteral">&quot;PreCompiled&quot;</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> LayerType::Prelu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Prelu&quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">LayerType::Quantize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Quantize&quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> LayerType::QuantizedLstm: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QuantizedLstm&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> LayerType::Reshape: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Reshape&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">LayerType::Resize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Resize&quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">LayerType::Slice</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Slice&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">LayerType::Softmax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Softmax&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">LayerType::SpaceToBatchNd</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SpaceToBatchNd&quot;</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">LayerType::SpaceToDepth</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SpaceToDepth&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">LayerType::Splitter</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Splitter&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">LayerType::Stack</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Stack&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">case</span> LayerType::StandIn: <span class="keywordflow">return</span> <span class="stringliteral">&quot;StandIn&quot;</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">LayerType::StridedSlice</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;StridedSlice&quot;</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">case</span> LayerType::Subtraction: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Subtraction&quot;</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">case</span> LayerType::Switch: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Switch&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> LayerType::TransposeConvolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;TransposeConvolution2d&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unknown layer type&quot;</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</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"> 77</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a8746512fab5ec10c2c57800c66311ba7"><div class="ttname"><a href="namespacearmnn.html#a8746512fab5ec10c2c57800c66311ba7">armnn::BatchToSpaceNd</a></div><div class="ttdeci">void BatchToSpaceNd(const DataLayoutIndexed &amp;dataLayout, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, Decoder&lt; float &gt; &amp;inputDecoder, Encoder&lt; float &gt; &amp;outputEncoder)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd.cpp:35</a></div></div>
13831<div class="ttc" id="namespacearmnn_html_ae2e93e304cf516841c521e3eaee025cd"><div class="ttname"><a href="namespacearmnn.html#ae2e93e304cf516841c521e3eaee025cd">armnn::Pooling2d</a></div><div class="ttdeci">void Pooling2d(Decoder&lt; float &gt; &amp;rInputDecoder, Encoder&lt; float &gt; &amp;rOutputEncoder, const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const Pooling2dDescriptor &amp;params)</div><div class="ttdoc">Computes the Pooling2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pooling2d_8cpp_source.html#l00143">Pooling2d.cpp:143</a></div></div>
13832<div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
13833<div class="ttc" id="namespacearmnn_html_ab3c0b7e1a78b1b98c24934221f36a7c3"><div class="ttname"><a href="namespacearmnn.html#ab3c0b7e1a78b1b98c24934221f36a7c3">armnn::FakeQuantization</a></div><div class="ttdeci">void FakeQuantization(const float *inputData, float *outputData, uint32_t numElements, float min, float max)</div><div class="ttdef"><b>Definition:</b> <a href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00017">RefFakeQuantizationFloat32Workload.cpp:17</a></div></div>
13834<div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
13835<div class="ttc" id="namespacearmnn_html_ae76ce23fa9fc18e56448d52b37dd3f32"><div class="ttname"><a href="namespacearmnn.html#ae76ce23fa9fc18e56448d52b37dd3f32">armnn::DetectionPostProcess</a></div><div class="ttdeci">void DetectionPostProcess(const TensorInfo &amp;boxEncodingsInfo, const TensorInfo &amp;scoresInfo, const TensorInfo &amp;anchorsInfo, const TensorInfo &amp;detectionBoxesInfo, const TensorInfo &amp;detectionClassesInfo, const TensorInfo &amp;detectionScoresInfo, const TensorInfo &amp;numDetectionsInfo, const DetectionPostProcessDescriptor &amp;desc, Decoder&lt; float &gt; &amp;boxEncodings, Decoder&lt; float &gt; &amp;scores, Decoder&lt; float &gt; &amp;anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess.cpp:141</a></div></div>
13836<div class="ttc" id="namespacearmnn_html_ad773a034fb9983e15f3094b4c5c7c30c"><div class="ttname"><a href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">armnn::Quantize</a></div><div class="ttdeci">QuantizedType Quantize(float value, float scale, int32_t offset)</div><div class="ttdoc">Explicit specialization of Quantize for int8_t. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00031">TypesUtils.cpp:31</a></div></div>
13837<div class="ttc" id="namespacearmnn_html_a4a180e425d4c19b2cdea4ce5760180e1"><div class="ttname"><a href="namespacearmnn.html#a4a180e425d4c19b2cdea4ce5760180e1">armnn::SpaceToBatchNd</a></div><div class="ttdeci">void SpaceToBatchNd(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToBatchNdDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd.cpp:34</a></div></div>
13838<div class="ttc" id="namespacearmnn_html_a66004b2326f8ccb1faa71d5efa186633"><div class="ttname"><a href="namespacearmnn.html#a66004b2326f8ccb1faa71d5efa186633">armnn::Gather</a></div><div class="ttdeci">void Gather(const TensorInfo &amp;paramsInfo, const TensorInfo &amp;indicesInfo, const TensorInfo &amp;outputInfo, Decoder&lt; float &gt; &amp;params, const int32_t *indices, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_gather_8cpp_source.html#l00018">Gather.cpp:18</a></div></div>
13839<div class="ttc" id="namespacearmnn_html_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00047">TypesUtils.cpp:47</a></div></div>
13840<div class="ttc" id="namespacearmnn_html_aa999ff2585ad75b95954a9323f63c32b"><div class="ttname"><a href="namespacearmnn.html#aa999ff2585ad75b95954a9323f63c32b">armnn::Softmax</a></div><div class="ttdeci">void Softmax(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;inputTensorInfo, float beta, int axis)</div><div class="ttdoc">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo...</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_softmax_8cpp_source.html#l00017">Softmax.cpp:17</a></div></div>
13841<div class="ttc" id="namespacearmnn_html_a28e115f5d28500324b53fae9e6c00b77"><div class="ttname"><a href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a></div><div class="ttdeci">void Pad(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad.cpp:22</a></div></div>
13842<div class="ttc" id="namespacearmnn_html_a374120de442fe42c26536bb4f1e2a5a1"><div class="ttname"><a href="namespacearmnn.html#a374120de442fe42c26536bb4f1e2a5a1">armnn::ArgMinMax</a></div><div class="ttdeci">void ArgMinMax(Decoder&lt; float &gt; &amp;in, int32_t *out, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, ArgMinMaxFunction function, int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_arg_min_max_8cpp_source.html#l00015">ArgMinMax.cpp:15</a></div></div>
13843<div class="ttc" id="namespacearmnn_html_a165ae372a7f67cad64ef3395d30122ce"><div class="ttname"><a href="namespacearmnn.html#a165ae372a7f67cad64ef3395d30122ce">armnn::Mean</a></div><div class="ttdeci">void Mean(const armnn::TensorInfo &amp;inputInfo, const armnn::TensorInfo &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean.cpp:71</a></div></div>
13844<div class="ttc" id="namespacearmnn_html_ad34d1d5b1ca8f52dc296ecf52ba20c8a"><div class="ttname"><a href="namespacearmnn.html#ad34d1d5b1ca8f52dc296ecf52ba20c8a">armnn::FullyConnected</a></div><div class="ttdeci">void FullyConnected(const TensorShape &amp;rInputShape, Decoder&lt; float &gt; &amp;rInputDecoder, const TensorShape &amp;rOutputShape, Encoder&lt; float &gt; &amp;rOutputEncoder, Decoder&lt; float &gt; &amp;rWeightDecoder, Decoder&lt; float &gt; &amp;rBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)</div><div class="ttdoc">Performs a matrix multiplication and optionally adds a bias. </div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_fully_connected_8cpp_source.html#l00015">FullyConnected.cpp:15</a></div></div>
13845<div class="ttc" id="namespacearmnn_html_a86d7a7168ac00b75b4971f9aad623698"><div class="ttname"><a href="namespacearmnn.html#a86d7a7168ac00b75b4971f9aad623698">armnn::StridedSlice</a></div><div class="ttdeci">void StridedSlice(const TensorInfo &amp;inputInfo, const StridedSliceDescriptor &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html#l00090">StridedSlice.cpp:90</a></div></div>
13846<div class="ttc" id="namespacearmnn_html_a044ea0cc993d4d1fbe4ec877b17b8d39"><div class="ttname"><a href="namespacearmnn.html#a044ea0cc993d4d1fbe4ec877b17b8d39">armnn::Slice</a></div><div class="ttdeci">void Slice(const TensorInfo &amp;inputInfo, const SliceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_slice_8cpp_source.html#l00015">Slice.cpp:15</a></div></div>
13847<div class="ttc" id="namespacearmnn_html_a5e1dc69443b64ad16b669388a6023f7a"><div class="ttname"><a href="namespacearmnn.html#a5e1dc69443b64ad16b669388a6023f7a">armnn::SpaceToDepth</a></div><div class="ttdeci">void SpaceToDepth(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToDepthDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth.cpp:36</a></div></div>
13848<div class="ttc" id="namespacearmnn_html_a427c3d26d05b518b1ace407035f5920e"><div class="ttname"><a href="namespacearmnn.html#a427c3d26d05b518b1ace407035f5920e">armnn::Splitter</a></div><div class="ttdeci">void Splitter(const SplitterQueueDescriptor &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="_splitter_8hpp_source.html#l00017">Splitter.hpp:17</a></div></div>
13849<div class="ttc" id="namespacearmnn_html_a25dc224be48103343302b5a6fd588fe7"><div class="ttname"><a href="namespacearmnn.html#a25dc224be48103343302b5a6fd588fe7">armnn::Resize</a></div><div class="ttdeci">void Resize(Decoder&lt; float &gt; &amp;in, const TensorInfo &amp;inputInfo, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;outputInfo, DataLayoutIndexed dataLayout, armnn::ResizeMethod resizeMethod, bool alignCorners)</div><div class="ttdef"><b>Definition:</b> <a href="_resize_8cpp_source.html#l00035">Resize.cpp:35</a></div></div>
13850<div class="ttc" id="namespacearmnn_html_a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><div class="ttname"><a href="namespacearmnn.html#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">armnn::Activation</a></div><div class="ttdeci">float Activation(float in, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.html#l00012">Activation.cpp:12</a></div></div>
13851<div class="ttc" id="namespacearmnn_html_a6ef2dcac2ec0683d52df1b051404e7d6"><div class="ttname"><a href="namespacearmnn.html#a6ef2dcac2ec0683d52df1b051404e7d6">armnn::Stack</a></div><div class="ttdeci">void Stack(const StackQueueDescriptor &amp;data, std::vector&lt; std::unique_ptr&lt; Decoder&lt; float &gt;&gt;&gt; &amp;inputs, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">Stack.cpp:12</a></div></div>
13852<div class="ttc" id="namespacearmnn_html_ab023d9a7687e35c0f108458a094c1f56"><div class="ttname"><a href="namespacearmnn.html#ab023d9a7687e35c0f108458a094c1f56">armnn::DepthToSpace</a></div><div class="ttdeci">void DepthToSpace(const TensorInfo &amp;inputInfo, const DepthToSpaceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_depth_to_space_8cpp_source.html#l00018">DepthToSpace.cpp:18</a></div></div>
13853<div class="ttc" id="namespacearmnn_html_ac52e04c0e349e25bcdaa72c27395ef8f"><div class="ttname"><a href="namespacearmnn.html#ac52e04c0e349e25bcdaa72c27395ef8f">armnn::LogSoftmax</a></div><div class="ttdeci">void LogSoftmax(Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output, const TensorInfo &amp;inputInfo, const LogSoftmaxDescriptor &amp;descriptor)</div><div class="ttdef"><b>Definition:</b> <a href="_log_softmax_8cpp_source.html#l00030">LogSoftmax.cpp:30</a></div></div>
13854</div><!-- fragment -->
13855</div>
13856</div>
13857<a id="aeadd602e128a2be97161345b48533417"></a>
13858<h2 class="memtitle"><span class="permalink"><a href="#aeadd602e128a2be97161345b48533417">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmChannelAsCString()</h2>
13859
13860<div class="memitem">
13861<div class="memproto">
13862 <table class="memname">
13863 <tr>
13864 <td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmChannelAsCString </td>
13865 <td>(</td>
13866 <td class="paramtype"><a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
13867 <td class="paramname"><em>channel</em></td><td>)</td>
13868 <td></td>
13869 </tr>
13870 </table>
13871</div><div class="memdoc">
13872
13873<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00196">196</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13874
13875<p class="reference">References <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.html#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
13876
13877<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
13878<div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">switch</span> (channel)</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"> 200</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Across: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Across&quot;</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Within: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Within&quot;</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div></div><!-- fragment -->
13879</div>
13880</div>
13881<a id="ad57460ea53cd0b519a3b3547eaf1db7c"></a>
13882<h2 class="memtitle"><span class="permalink"><a href="#ad57460ea53cd0b519a3b3547eaf1db7c">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmMethodAsCString()</h2>
13883
13884<div class="memitem">
13885<div class="memproto">
13886 <table class="memname">
13887 <tr>
13888 <td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmMethodAsCString </td>
13889 <td>(</td>
13890 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a>&#160;</td>
13891 <td class="paramname"><em>method</em></td><td>)</td>
13892 <td></td>
13893 </tr>
13894 </table>
13895</div><div class="memdoc">
13896
13897<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00206">206</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13898
13899<p class="reference">References <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a>, and <a class="el" href="namespacearmnn.html#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a>.</p>
13900
13901<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
13902<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmMethod::LocalBrightness: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LocalBrightness&quot;</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmMethod::LocalContrast: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LocalContrast&quot;</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div></div><!-- fragment -->
13903</div>
13904</div>
13905<a id="adafb0fd0a3f6435c2bdf41f971761ecf"></a>
13906<h2 class="memtitle"><span class="permalink"><a href="#adafb0fd0a3f6435c2bdf41f971761ecf">&#9670;&nbsp;</a></span>GetOffset()</h2>
13907
13908<div class="memitem">
13909<div class="memproto">
13910 <table class="memname">
13911 <tr>
13912 <td class="memname">unsigned int armnn::GetOffset </td>
13913 <td>(</td>
13914 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
13915 <td class="paramname"><em>shape</em>, </td>
13916 </tr>
13917 <tr>
13918 <td class="paramkey"></td>
13919 <td></td>
13920 <td class="paramtype">unsigned int&#160;</td>
13921 <td class="paramname"><em>b</em>, </td>
13922 </tr>
13923 <tr>
13924 <td class="paramkey"></td>
13925 <td></td>
13926 <td class="paramtype">unsigned int&#160;</td>
13927 <td class="paramname"><em>h</em>, </td>
13928 </tr>
13929 <tr>
13930 <td class="paramkey"></td>
13931 <td></td>
13932 <td class="paramtype">unsigned int&#160;</td>
13933 <td class="paramname"><em>w</em>, </td>
13934 </tr>
13935 <tr>
13936 <td class="paramkey"></td>
13937 <td></td>
13938 <td class="paramtype">unsigned int&#160;</td>
13939 <td class="paramname"><em>c</em>, </td>
13940 </tr>
13941 <tr>
13942 <td class="paramkey"></td>
13943 <td></td>
13944 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
13945 <td class="paramname"><em>dataLayout</em>&#160;</td>
13946 </tr>
13947 <tr>
13948 <td></td>
13949 <td>)</td>
13950 <td></td><td></td>
13951 </tr>
13952 </table>
13953</div><div class="memdoc">
13954
13955<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html">SpaceToBatchNd.cpp</a>.</p>
13956
13957<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed::GetDataLayout()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
13958
13959<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd()</a>, and <a class="el" href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth()</a>.</p>
13960<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">if</span> (dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>() == DataLayout::NHWC)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> ((b * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + h) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + w) *</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + c;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</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="keywordflow">return</span> ((b * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + c) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + h) *</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + w;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a7d8b3d755b6ca8f5533657969efb06c4"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">armnnUtils::DataLayoutIndexed::GetDataLayout</a></div><div class="ttdeci">armnn::DataLayout GetDataLayout() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed.hpp:22</a></div></div>
13961<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
13962<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
13963<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
13964</div><!-- fragment -->
13965</div>
13966</div>
13967<a id="a67d7ce2e14ebd328f423322db88279c3"></a>
13968<h2 class="memtitle"><span class="permalink"><a href="#a67d7ce2e14ebd328f423322db88279c3">&#9670;&nbsp;</a></span>GetOutputShapeRoundingAsCString()</h2>
13969
13970<div class="memitem">
13971<div class="memproto">
13972 <table class="memname">
13973 <tr>
13974 <td class="memname">constexpr char const* armnn::GetOutputShapeRoundingAsCString </td>
13975 <td>(</td>
13976 <td class="paramtype"><a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
13977 <td class="paramname"><em>rounding</em></td><td>)</td>
13978 <td></td>
13979 </tr>
13980 </table>
13981</div><div class="memdoc">
13982
13983<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00093">93</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
13984
13985<p class="reference">References <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.html#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
13986
13987<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
13988<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">switch</span> (rounding)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Ceiling: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Ceiling&quot;</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Floor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Floor&quot;</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</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;}</div></div><!-- fragment -->
13989</div>
13990</div>
13991<a id="a932b4856d89c58865e1f39ec5ab6b841"></a>
13992<h2 class="memtitle"><span class="permalink"><a href="#a932b4856d89c58865e1f39ec5ab6b841">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[1/2]</span></h2>
13993
13994<div class="memitem">
13995<div class="memproto">
13996 <table class="memname">
13997 <tr>
13998 <td class="memname">float* armnn::GetOutputTensorData </td>
13999 <td>(</td>
14000 <td class="paramtype">unsigned int&#160;</td>
14001 <td class="paramname"><em>idx</em>, </td>
14002 </tr>
14003 <tr>
14004 <td class="paramkey"></td>
14005 <td></td>
14006 <td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.html">AdditionQueueDescriptor</a> &amp;&#160;</td>
14007 <td class="paramname"><em>data</em>&#160;</td>
14008 </tr>
14009 <tr>
14010 <td></td>
14011 <td>)</td>
14012 <td></td><td></td>
14013 </tr>
14014 </table>
14015</div><div class="memdoc">
14016
14017<p class="definition">Definition at line <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html">SampleDynamicAdditionWorkload.cpp</a>.</p>
14018
14019<p class="reference">References <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
14020<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; ITensorHandle* tensorHandle = data.m_Outputs[idx];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
14021</div>
14022</div>
14023<a id="a2c0b2e5bd1b03aec10473a201f57f859"></a>
14024<h2 class="memtitle"><span class="permalink"><a href="#a2c0b2e5bd1b03aec10473a201f57f859">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[2/2]</span></h2>
14025
14026<div class="memitem">
14027<div class="memproto">
14028 <table class="memname">
14029 <tr>
14030 <td class="memname"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetOutputTensorData </td>
14031 <td>(</td>
14032 <td class="paramtype">unsigned int&#160;</td>
14033 <td class="paramname"><em>idx</em>, </td>
14034 </tr>
14035 <tr>
14036 <td class="paramkey"></td>
14037 <td></td>
14038 <td class="paramtype">const PayloadType &amp;&#160;</td>
14039 <td class="paramname"><em>data</em>&#160;</td>
14040 </tr>
14041 <tr>
14042 <td></td>
14043 <td>)</td>
14044 <td></td><td></td>
14045 </tr>
14046 </table>
14047</div><div class="memdoc">
14048
14049<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00041">41</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
14050
14051<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
14052
14053<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
14054<div class="fragment"><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; ITensorHandle* tensorHandle = data.m_Outputs[idx];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
14055</div><!-- fragment -->
14056</div>
14057</div>
14058<a id="ab5f0afc1e37fd100843ecd55d8f284c1"></a>
14059<h2 class="memtitle"><span class="permalink"><a href="#ab5f0afc1e37fd100843ecd55d8f284c1">&#9670;&nbsp;</a></span>GetOutputTensorDataFloat()</h2>
14060
14061<div class="memitem">
14062<div class="memproto">
14063 <table class="memname">
14064 <tr>
14065 <td class="memname">float* armnn::GetOutputTensorDataFloat </td>
14066 <td>(</td>
14067 <td class="paramtype">unsigned int&#160;</td>
14068 <td class="paramname"><em>idx</em>, </td>
14069 </tr>
14070 <tr>
14071 <td class="paramkey"></td>
14072 <td></td>
14073 <td class="paramtype">const PayloadType &amp;&#160;</td>
14074 <td class="paramname"><em>data</em>&#160;</td>
14075 </tr>
14076 <tr>
14077 <td></td>
14078 <td>)</td>
14079 <td></td><td></td>
14080 </tr>
14081 </table>
14082</div><div class="memdoc">
14083
14084<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00054">54</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
14085
14086<p class="reference">Referenced by <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.html#l00016">RefConvertFp16ToFp32Workload::Execute()</a>, and <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>.</p>
14087<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> GetOutputTensorData&lt;float&gt;(idx, data);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div></div><!-- fragment -->
14088</div>
14089</div>
14090<a id="ab98e77207c3d676b0b9ffa67357dbc6a"></a>
14091<h2 class="memtitle"><span class="permalink"><a href="#ab98e77207c3d676b0b9ffa67357dbc6a">&#9670;&nbsp;</a></span>GetOutputTensorDataHalf()</h2>
14092
14093<div class="memitem">
14094<div class="memproto">
14095 <table class="memname">
14096 <tr>
14097 <td class="memname"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetOutputTensorDataHalf </td>
14098 <td>(</td>
14099 <td class="paramtype">unsigned int&#160;</td>
14100 <td class="paramname"><em>idx</em>, </td>
14101 </tr>
14102 <tr>
14103 <td class="paramkey"></td>
14104 <td></td>
14105 <td class="paramtype">const PayloadType &amp;&#160;</td>
14106 <td class="paramname"><em>data</em>&#160;</td>
14107 </tr>
14108 <tr>
14109 <td></td>
14110 <td>)</td>
14111 <td></td><td></td>
14112 </tr>
14113 </table>
14114</div><div class="memdoc">
14115
14116<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00066">66</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
14117
14118<p class="reference">Referenced by <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.html#l00017">RefConvertFp32ToFp16Workload::Execute()</a>.</p>
14119<div class="fragment"><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; <span class="keywordflow">return</span> GetOutputTensorData&lt;Half&gt;(idx, data);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div></div><!-- fragment -->
14120</div>
14121</div>
14122<a id="a129bde68152f5892e6abdedcb62aa983"></a>
14123<h2 class="memtitle"><span class="permalink"><a href="#a129bde68152f5892e6abdedcb62aa983">&#9670;&nbsp;</a></span>GetPaddingMethodAsCString()</h2>
14124
14125<div class="memitem">
14126<div class="memproto">
14127 <table class="memname">
14128 <tr>
14129 <td class="memname">constexpr char const* armnn::GetPaddingMethodAsCString </td>
14130 <td>(</td>
14131 <td class="paramtype"><a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a>&#160;</td>
14132 <td class="paramname"><em>method</em></td><td>)</td>
14133 <td></td>
14134 </tr>
14135 </table>
14136</div><div class="memdoc">
14137
14138<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00103">103</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
14139
14140<p class="reference">References <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a>, and <a class="el" href="namespacearmnn.html#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a>.</p>
14141
14142<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
14143<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">switch</span> (method)</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; <span class="keywordflow">case</span> PaddingMethod::Exclude: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Exclude&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">case</span> PaddingMethod::IgnoreValue: <span class="keywordflow">return</span> <span class="stringliteral">&quot;IgnoreValue&quot;</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</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;}</div></div><!-- fragment -->
14144</div>
14145</div>
14146<a id="a517314c21ac5309b90408da162212f9d"></a>
14147<h2 class="memtitle"><span class="permalink"><a href="#a517314c21ac5309b90408da162212f9d">&#9670;&nbsp;</a></span>GetPoolingAlgorithmAsCString()</h2>
14148
14149<div class="memitem">
14150<div class="memproto">
14151 <table class="memname">
14152 <tr>
14153 <td class="memname">constexpr char const* armnn::GetPoolingAlgorithmAsCString </td>
14154 <td>(</td>
14155 <td class="paramtype"><a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
14156 <td class="paramname"><em>pooling</em></td><td>)</td>
14157 <td></td>
14158 </tr>
14159 </table>
14160</div><div class="memdoc">
14161
14162<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00082">82</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
14163
14164<p class="reference">References <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a>, <a class="el" href="namespacearmnn.html#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a>, and <a class="el" href="namespacearmnn.html#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>.</p>
14165
14166<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
14167<div class="fragment"><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; <span class="keywordflow">switch</span> (pooling)</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"> 86</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Average: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Average&quot;</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Max: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Max&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::L2: <span class="keywordflow">return</span> <span class="stringliteral">&quot;L2&quot;</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;}</div></div><!-- fragment -->
14168</div>
14169</div>
14170<a id="a49a398090bc1044038300ce246821a1f"></a>
14171<h2 class="memtitle"><span class="permalink"><a href="#a49a398090bc1044038300ce246821a1f">&#9670;&nbsp;</a></span>GetProfilerEventSequenceSize()</h2>
14172
14173<div class="memitem">
14174<div class="memproto">
14175 <table class="memname">
14176 <tr>
14177 <td class="memname">size_t armnn::GetProfilerEventSequenceSize </td>
14178 <td>(</td>
14179 <td class="paramtype"><a class="el" href="classarmnn_1_1_profiler.html">armnn::Profiler</a> *&#160;</td>
14180 <td class="paramname"><em>profiler</em></td><td>)</td>
14181 <td></td>
14182 </tr>
14183 </table>
14184</div><div class="memdoc">
14185
14186<p class="definition">Definition at line <a class="el" href="_profiler_tests_8cpp_source.html#l00022">22</a> of file <a class="el" href="_profiler_tests_8cpp_source.html">ProfilerTests.cpp</a>.</p>
14187
14188<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.html#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>, <a class="el" href="_profiling_8cpp_source.html#l00486">ProfilerManager::GetInstance()</a>, <a class="el" href="_profiling_8cpp_source.html#l00498">ProfilerManager::GetProfiler()</a>, and <a class="el" href="_profiling_8cpp_source.html#l00493">ProfilerManager::RegisterProfiler()</a>.</p>
14189
14190<p class="reference">Referenced by <a class="el" href="_profiler_tests_8cpp_source.html#l00109">BOOST_AUTO_TEST_CASE()</a>.</p>
14191<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (!profiler)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(-1);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</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="keywordflow">return</span> profiler-&gt;m_EventSequence.size();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
14192</div>
14193</div>
14194<a id="aded981a42027bd3302b9c0f09d988659"></a>
14195<h2 class="memtitle"><span class="permalink"><a href="#aded981a42027bd3302b9c0f09d988659">&#9670;&nbsp;</a></span>GetResizeMethodAsCString()</h2>
14196
14197<div class="memitem">
14198<div class="memproto">
14199 <table class="memname">
14200 <tr>
14201 <td class="memname">constexpr const char* armnn::GetResizeMethodAsCString </td>
14202 <td>(</td>
14203 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
14204 <td class="paramname"><em>method</em></td><td>)</td>
14205 <td></td>
14206 </tr>
14207 </table>
14208</div><div class="memdoc">
14209
14210<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00216">216</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
14211
14212<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
14213
14214<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.html#l00298">StringifyLayerParameters&lt; ResizeDescriptor &gt;::Serialize()</a>.</p>
14215<div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">case</span> ResizeMethod::Bilinear: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Bilinear&quot;</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">case</span> ResizeMethod::NearestNeighbor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NearestNeighbour&quot;</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</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"> 224</span>&#160;}</div></div><!-- fragment -->
14216</div>
14217</div>
14218<a id="a19a90c41ca2f46ab29918fef1a6ad72e"></a>
14219<h2 class="memtitle"><span class="permalink"><a href="#a19a90c41ca2f46ab29918fef1a6ad72e">&#9670;&nbsp;</a></span>GetStatusAsCString()</h2>
14220
14221<div class="memitem">
14222<div class="memproto">
14223 <table class="memname">
14224 <tr>
14225 <td class="memname">constexpr char const* armnn::GetStatusAsCString </td>
14226 <td>(</td>
14227 <td class="paramtype"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
14228 <td class="paramname"><em>status</em></td><td>)</td>
14229 <td></td>
14230 </tr>
14231 </table>
14232</div><div class="memdoc">
14233
14234<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00017">17</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
14235
14236<p class="reference">References <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a>, and <a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a>.</p>
14237
14238<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.html#l00252">operator&lt;&lt;()</a>.</p>
14239<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">switch</span> (status)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Status::Success&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Status::Failure&quot;</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
14240<div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
14241</div><!-- fragment -->
14242</div>
14243</div>
14244<a id="a93d269806f34407695dc10f510001c30"></a>
14245<h2 class="memtitle"><span class="permalink"><a href="#a93d269806f34407695dc10f510001c30">&#9670;&nbsp;</a></span>GetTensorInfo()</h2>
14246
14247<div class="memitem">
14248<div class="memproto">
14249<table class="mlabels">
14250 <tr>
14251 <td class="mlabels-left">
14252 <table class="memname">
14253 <tr>
14254 <td class="memname">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp; GetTensorInfo </td>
14255 <td>(</td>
14256 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.html">ITensorHandle</a> *&#160;</td>
14257 <td class="paramname"><em>tensorHandle</em></td><td>)</td>
14258 <td></td>
14259 </tr>
14260 </table>
14261 </td>
14262 <td class="mlabels-right">
14263<span class="mlabels"><span class="mlabel">inline</span></span> </td>
14264 </tr>
14265</table>
14266</div><div class="memdoc">
14267
14268<p>float32 helpers </p>
14269
14270<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">25</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
14271
14272<p class="reference">References <a class="el" href="_ref_tensor_handle_8hpp_source.html#l00050">RefTensorHandle::GetTensorInfo()</a>.</p>
14273
14274<p class="reference">Referenced by <a class="el" href="_batch_norm_impl_8cpp_source.html#l00018">BatchNormImpl()</a>, <a class="el" href="_concatenate_8cpp_source.html#l00014">Concatenate()</a>, <a class="el" href="_ref_depth_to_space_workload_8cpp_source.html#l00014">RefDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_ref_strided_slice_workload_8cpp_source.html#l00020">RefStridedSliceWorkload::Execute()</a>, <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.html#l00017">RefConvertFp32ToFp16Workload::Execute()</a>, <a class="el" href="_ref_log_softmax_workload_8cpp_source.html#l00020">RefLogSoftmaxWorkload::Execute()</a>, <a class="el" href="_ref_activation_workload_8cpp_source.html#l00018">RefActivationWorkload::Execute()</a>, <a class="el" href="_ref_reshape_workload_8cpp_source.html#l00015">RefReshapeWorkload::Execute()</a>, <a class="el" href="_ref_resize_bilinear_workload_8cpp_source.html#l00020">RefResizeBilinearWorkload::Execute()</a>, <a class="el" href="_ref_resize_workload_8cpp_source.html#l00020">RefResizeWorkload::Execute()</a>, <a class="el" href="_ref_softmax_workload_8cpp_source.html#l00020">RefSoftmaxWorkload::Execute()</a>, <a class="el" href="_ref_space_to_batch_nd_workload_8cpp_source.html#l00015">RefSpaceToBatchNdWorkload::Execute()</a>, <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.html#l00016">RefConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.html#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>, <a class="el" href="_ref_space_to_depth_workload_8cpp_source.html#l00015">RefSpaceToDepthWorkload::Execute()</a>, <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.html#l00039">SampleDynamicAdditionWorkload::Execute()</a>, <a class="el" href="_ref_floor_workload_8cpp_source.html#l00016">RefFloorWorkload::Execute()</a>, <a class="el" href="_ref_arg_min_max_workload_8cpp_source.html#l00021">RefArgMinMaxWorkload::Execute()</a>, <a class="el" href="_ref_slice_workload_8cpp_source.html#l00016">RefSliceWorkload::Execute()</a>, <a class="el" href="_ref_prelu_workload_8cpp_source.html#l00021">RefPreluWorkload::Execute()</a>, <a class="el" href="_ref_batch_normalization_workload_8cpp_source.html#l00025">RefBatchNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_batch_to_space_nd_workload_8cpp_source.html#l00014">RefBatchToSpaceNdWorkload::Execute()</a>, <a class="el" href="_ref_detection_post_process_workload_8cpp_source.html#l00021">RefDetectionPostProcessWorkload::Execute()</a>, <a class="el" href="_ref_dequantize_workload_8cpp_source.html#l00015">RefDequantizeWorkload::Execute()</a>, <a class="el" href="_ref_stack_workload_8cpp_source.html#l00021">RefStackWorkload::Execute()</a>, <a class="el" href="_ref_instance_normalization_workload_8cpp_source.html#l00021">RefInstanceNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_l2_normalization_workload_8cpp_source.html#l00028">RefL2NormalizationWorkload::Execute()</a>, <a class="el" href="_ref_normalization_workload_8cpp_source.html#l00165">RefNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_lstm_workload_8cpp_source.html#l00041">RefLstmWorkload::Execute()</a>, <a class="el" href="_ref_mean_workload_8cpp_source.html#l00021">RefMeanWorkload::Execute()</a>, <a class="el" href="_ref_pooling2d_workload_8cpp_source.html#l00016">RefPooling2dWorkload::Execute()</a>, <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.html#l00041">RefElementwiseUnaryWorkload::Execute()</a>, <a class="el" href="_ref_comparison_workload_8cpp_source.html#l00039">RefComparisonWorkload::Execute()</a>, <a class="el" href="_ref_gather_workload_8cpp_source.html#l00016">RefGatherWorkload::Execute()</a>, <a class="el" href="_ref_permute_workload_8cpp_source.html#l00017">RefPermuteWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_ref_elementwise_workload_8cpp_source.html#l00041">RefElementwiseWorkload&lt; Functor, ParentDescriptor, DebugString &gt;::Execute()</a>, <a class="el" href="_ref_pad_workload_8cpp_source.html#l00021">RefPadWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_ref_debug_workload_8cpp_source.html#l00018">RefDebugWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_layer_8hpp_source.html#l00138">OutputSlot::GetNumConnections()</a>, <a class="el" href="_instance_norm_8cpp_source.html#l00018">InstanceNorm()</a>, <a class="el" href="_ref_quantize_workload_8cpp_source.html#l00037">RefQuantizeWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_depthwise_convolution2d_workload_8cpp_source.html#l00035">RefDepthwiseConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_convolution2d_workload_8cpp_source.html#l00033">RefConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_comparison_workload_8cpp_source.html#l00027">RefComparisonWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.html#l00031">RefElementwiseUnaryWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_constant_workload_8cpp_source.html#l00023">RefConstantWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_fully_connected_workload_8cpp_source.html#l00032">RefFullyConnectedWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_transpose_convolution2d_workload_8cpp_source.html#l00036">RefTransposeConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_elementwise_workload_8cpp_source.html#l00029">RefElementwiseWorkload&lt; Functor, ParentDescriptor, DebugString &gt;::PostAllocationConfigure()</a>, <a class="el" href="_prelu_impl_8cpp_source.html#l00013">PreluImpl()</a>, <a class="el" href="_splitter_8cpp_source.html#l00022">Split()</a>, <a class="el" href="_splitter_8hpp_source.html#l00017">Splitter()</a>, <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">Stack()</a>, and <a class="el" href="_concat_layer_8cpp_source.html#l00244">ConcatLayer::ValidateTensorShapesFromInputs()</a>.</p>
14275<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// We know that reference workloads use RefTensorHandles for inputs and outputs</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> RefTensorHandle* refTensorHandle =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; boost::polymorphic_downcast&lt;const RefTensorHandle*&gt;(tensorHandle);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> refTensorHandle-&gt;GetTensorInfo();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
14276</div>
14277</div>
14278<a id="a6dac966f265381903c8ef4f392becced"></a>
14279<h2 class="memtitle"><span class="permalink"><a href="#a6dac966f265381903c8ef4f392becced">&#9670;&nbsp;</a></span>GetUnaryOperationAsCString()</h2>
14280
14281<div class="memitem">
14282<div class="memproto">
14283 <table class="memname">
14284 <tr>
14285 <td class="memname">constexpr char const* armnn::GetUnaryOperationAsCString </td>
14286 <td>(</td>
14287 <td class="paramtype"><a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a>&#160;</td>
14288 <td class="paramname"><em>operation</em></td><td>)</td>
14289 <td></td>
14290 </tr>
14291 </table>
14292</div><div class="memdoc">
14293
14294<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00069">69</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
14295
14296<p class="reference">References <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a>, <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a>, <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a>, and <a class="el" href="namespacearmnn.html#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>.</p>
14297
14298<p class="reference">Referenced by <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.html#l00041">RefElementwiseUnaryWorkload::Execute()</a>.</p>
14299<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">switch</span> (operation)</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">case</span> UnaryOperation::Abs: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Abs&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Exp: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Exp&quot;</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Sqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sqrt&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Rsqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Rsqrt&quot;</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Neg: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Neg&quot;</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div></div><!-- fragment -->
14300</div>
14301</div>
14302<a id="a36e8f52330a21eeab3cc7c4e030f3583"></a>
14303<h2 class="memtitle"><span class="permalink"><a href="#a36e8f52330a21eeab3cc7c4e030f3583">&#9670;&nbsp;</a></span>GetUnpaddedTensorStrides()</h2>
14304
14305<div class="memitem">
14306<div class="memproto">
14307 <table class="memname">
14308 <tr>
14309 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> GetUnpaddedTensorStrides </td>
14310 <td>(</td>
14311 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14312 <td class="paramname"><em>tensorInfo</em></td><td>)</td>
14313 <td></td>
14314 </tr>
14315 </table>
14316</div><div class="memdoc">
14317
14318<p class="definition">Definition at line <a class="el" href="_cpu_tensor_handle_8cpp_source.html#l00014">14</a> of file <a class="el" href="_cpu_tensor_handle_8cpp_source.html">CpuTensorHandle.cpp</a>.</p>
14319
14320<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00113">GetDataTypeSize()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
14321
14322<p class="reference">Referenced by <a class="el" href="_ref_tensor_handle_8hpp_source.html#l00040">RefTensorHandle::GetStrides()</a>, <a class="el" href="_sample_tensor_handle_8hpp_source.html#l00041">SampleTensorHandle::GetStrides()</a>, and <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00049">ConstCpuTensorHandle::GetStrides()</a>.</p>
14323<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; TensorShape shape(tensorInfo.GetShape());</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">auto</span> size = <a class="code" href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a>(tensorInfo.GetDataType());</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">auto</span> runningSize = size;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; std::vector&lt;unsigned int&gt; strides(shape.GetNumDimensions());</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">auto</span> lastIdx = shape.GetNumDimensions()-1;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; lastIdx ; i++)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; strides[lastIdx-i] = runningSize;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; runningSize *= shape[lastIdx-i];</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; strides[0] = runningSize;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> TensorShape(shape.GetNumDimensions(), strides.data());</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa02b9e06fb20fa3c13da0427e6ee5ab2"><div class="ttname"><a href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">armnn::GetDataTypeSize</a></div><div class="ttdeci">constexpr unsigned int GetDataTypeSize(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00113">TypesUtils.hpp:113</a></div></div>
14324</div><!-- fragment -->
14325</div>
14326</div>
14327<a id="a46747c3d0b99968be0b37d74bc9687dd"></a>
14328<h2 class="memtitle"><span class="permalink"><a href="#a46747c3d0b99968be0b37d74bc9687dd">&#9670;&nbsp;</a></span>InitializeArmComputeClTensorData()</h2>
14329
14330<div class="memitem">
14331<div class="memproto">
14332<table class="mlabels">
14333 <tr>
14334 <td class="mlabels-left">
14335 <table class="memname">
14336 <tr>
14337 <td class="memname">void armnn::InitializeArmComputeClTensorData </td>
14338 <td>(</td>
14339 <td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
14340 <td class="paramname"><em>clTensor</em>, </td>
14341 </tr>
14342 <tr>
14343 <td class="paramkey"></td>
14344 <td></td>
14345 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
14346 <td class="paramname"><em>handle</em>&#160;</td>
14347 </tr>
14348 <tr>
14349 <td></td>
14350 <td>)</td>
14351 <td></td><td></td>
14352 </tr>
14353 </table>
14354 </td>
14355 <td class="mlabels-right">
14356<span class="mlabels"><span class="mlabel">inline</span></span> </td>
14357 </tr>
14358</table>
14359</div><div class="memdoc">
14360
14361<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00090">90</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
14362<div class="fragment"><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; BOOST_ASSERT(handle);</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"> 95</span>&#160; armcomputetensorutils::InitialiseArmComputeTensorEmpty(clTensor);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">switch</span>(handle-&gt;GetTensorInfo().GetDataType())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;<a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a>&gt;());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;<span class="keywordtype">float</span>&gt;());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;uint8_t&gt;());</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;int8_t&gt;());</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;int32_t&gt;());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unexpected tensor type.&quot;</span>);</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;};</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
14363<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
14364<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
14365<div class="ttc" id="namespacearmnn_html_a73447f827b995cf90d4029151514b4ba"><div class="ttname"><a href="namespacearmnn.html#a73447f827b995cf90d4029151514b4ba">armnn::CopyArmComputeClTensorData</a></div><div class="ttdeci">void CopyArmComputeClTensorData(arm_compute::CLTensor &amp;dstTensor, const T *srcData)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00030">ClWorkloadUtils.hpp:30</a></div></div>
14366<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
14367</div><!-- fragment -->
14368</div>
14369</div>
14370<a id="ad9aa8d49d42ada3f757290033af39857"></a>
14371<h2 class="memtitle"><span class="permalink"><a href="#ad9aa8d49d42ada3f757290033af39857">&#9670;&nbsp;</a></span>InitializeArmComputeTensorData()</h2>
14372
14373<div class="memitem">
14374<div class="memproto">
14375<table class="mlabels">
14376 <tr>
14377 <td class="mlabels-left">
14378 <table class="memname">
14379 <tr>
14380 <td class="memname">void armnn::InitializeArmComputeTensorData </td>
14381 <td>(</td>
14382 <td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
14383 <td class="paramname"><em>tensor</em>, </td>
14384 </tr>
14385 <tr>
14386 <td class="paramkey"></td>
14387 <td></td>
14388 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
14389 <td class="paramname"><em>handle</em>&#160;</td>
14390 </tr>
14391 <tr>
14392 <td></td>
14393 <td>)</td>
14394 <td></td><td></td>
14395 </tr>
14396 </table>
14397 </td>
14398 <td class="mlabels-right">
14399<span class="mlabels"><span class="mlabel">inline</span></span> </td>
14400 </tr>
14401</table>
14402</div><div class="memdoc">
14403
14404<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00035">35</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
14405
14406<p class="reference">References <a class="el" href="_utils_8hpp_source.html#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_neon_workload_utils_8hpp_source.html#l00029">CopyArmComputeTensorData()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00031">ConstCpuTensorHandle::GetConstTensor()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
14407<div class="fragment"><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; BOOST_ASSERT(handle);</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; <span class="keywordflow">switch</span>(handle-&gt;GetTensorInfo().GetDataType())</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;<a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a>&gt;());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;<span class="keywordtype">float</span>&gt;());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;uint8_t&gt;());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;int8_t&gt;());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;int32_t&gt;());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unexpected tensor type.&quot;</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;};</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
14408<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
14409<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
14410<div class="ttc" id="namespacearmnn_html_a1351e01f9fb983937caf79e353142b41"><div class="ttname"><a href="namespacearmnn.html#a1351e01f9fb983937caf79e353142b41">armnn::CopyArmComputeTensorData</a></div><div class="ttdeci">void CopyArmComputeTensorData(arm_compute::Tensor &amp;dstTensor, const T *srcData)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.html#l00029">NeonWorkloadUtils.hpp:29</a></div></div>
14411<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
14412</div><!-- fragment -->
14413</div>
14414</div>
14415<a id="ad31c56533e4f9f9f51719599fbfcf7bb"></a>
14416<h2 class="memtitle"><span class="permalink"><a href="#ad31c56533e4f9f9f51719599fbfcf7bb">&#9670;&nbsp;</a></span>InsertConvertFp16ToFp32LayersBefore()</h2>
14417
14418<div class="memitem">
14419<div class="memproto">
14420 <table class="memname">
14421 <tr>
14422 <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> * &gt; InsertConvertFp16ToFp32LayersBefore </td>
14423 <td>(</td>
14424 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
14425 <td class="paramname"><em>graph</em>, </td>
14426 </tr>
14427 <tr>
14428 <td class="paramkey"></td>
14429 <td></td>
14430 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
14431 <td class="paramname"><em>layer</em>, </td>
14432 </tr>
14433 <tr>
14434 <td class="paramkey"></td>
14435 <td></td>
14436 <td class="paramtype">bool&#160;</td>
14437 <td class="paramname"><em>expectCorrectInputType</em>&#160;</td>
14438 </tr>
14439 <tr>
14440 <td></td>
14441 <td>)</td>
14442 <td></td><td></td>
14443 </tr>
14444 </table>
14445</div><div class="memdoc">
14446
14447<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.html#l00040">40</a> of file <a class="el" href="_network_utils_8cpp_source.html">NetworkUtils.cpp</a>.</p>
14448
14449<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00235">Layer::BeginInputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00236">Layer::EndInputSlots()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_layer_8hpp_source.html#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_layer_8hpp_source.html#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00305">Layer::GetName()</a>, <a class="el" href="_layer_8hpp_source.html#l00307">Layer::GetNumInputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.html#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_tensor_8hpp_source.html#l00096">TensorInfo::SetDataType()</a>, and <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>.</p>
14450
14451<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_optimizer_tests_8cpp_source.html#l00156">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_convert_fp32_network_to_fp16_8hpp_source.html#l00018">ConvertFp32NetworkToFp16Impl::Run()</a>.</p>
14452<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; std::vector&lt;ConvertFp16ToFp32Layer*&gt; convertLayers;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; convertLayers.reserve(layer.GetNumInputSlots());</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="comment">// Insert a ConvertFp16ToFp32Layer before each input slot</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; inputSlot = layer.BeginInputSlots(); inputSlot != layer.EndInputSlots(); ++inputSlot)</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"> 50</span>&#160; <span class="keywordtype">bool</span> allowInsert = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (expectCorrectInputType)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// Only insert ConvertFp16ToFp32Layer before FP16 input slots</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; OutputSlot* connectedOutputSlot = inputSlot-&gt;GetConnectedOutputSlot();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; allowInsert =</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; connectedOutputSlot &amp;&amp; connectedOutputSlot-&gt;GetTensorInfo().GetDataType() == DataType::Float16;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</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">if</span> (allowInsert)</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; <span class="keyword">const</span> std::string name =</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; std::string(<span class="stringliteral">&quot;convert_fp16_to_fp32-&quot;</span> + std::to_string(inputSlot-&gt;GetSlotIndex()) + <span class="stringliteral">&quot;-&quot;</span>) +</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; layer.GetName();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; ConvertFp16ToFp32Layer* convertLayer =</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; graph.InsertNewLayer&lt;ConvertFp16ToFp32Layer&gt;(*inputSlot, name.c_str());</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; TensorInfo convertInfo = convertLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; convertInfo.SetDataType(DataType::Float32);</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"> 70</span>&#160; convertLayer-&gt;GetOutputSlot().SetTensorInfo(convertInfo);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; convertLayers.emplace_back(convertLayer);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</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; <span class="keywordflow">return</span> convertLayers;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div></div><!-- fragment -->
14453</div>
14454</div>
14455<a id="abf625e50a5eaeafce5b39580dc95a9d3"></a>
14456<h2 class="memtitle"><span class="permalink"><a href="#abf625e50a5eaeafce5b39580dc95a9d3">&#9670;&nbsp;</a></span>InsertConvertFp32ToFp16LayersAfter()</h2>
14457
14458<div class="memitem">
14459<div class="memproto">
14460 <table class="memname">
14461 <tr>
14462 <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> * &gt; InsertConvertFp32ToFp16LayersAfter </td>
14463 <td>(</td>
14464 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
14465 <td class="paramname"><em>graph</em>, </td>
14466 </tr>
14467 <tr>
14468 <td class="paramkey"></td>
14469 <td></td>
14470 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
14471 <td class="paramname"><em>layer</em>&#160;</td>
14472 </tr>
14473 <tr>
14474 <td></td>
14475 <td>)</td>
14476 <td></td><td></td>
14477 </tr>
14478 </table>
14479</div><div class="memdoc">
14480
14481<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.html#l00079">79</a> of file <a class="el" href="_network_utils_8cpp_source.html">NetworkUtils.cpp</a>.</p>
14482
14483<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_layer_8hpp_source.html#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_layer_8hpp_source.html#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00305">Layer::GetName()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.html#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_tensor_8hpp_source.html#l00096">TensorInfo::SetDataType()</a>, and <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>.</p>
14484
14485<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_optimizer_tests_8cpp_source.html#l00156">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_convert_fp32_network_to_fp16_8hpp_source.html#l00018">ConvertFp32NetworkToFp16Impl::Run()</a>.</p>
14486<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputSlots = layer.GetNumOutputSlots();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::vector&lt;ConvertFp32ToFp16Layer*&gt; convertLayers;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; convertLayers.reserve(numOutputSlots);</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"> 86</span>&#160; <span class="comment">// Update FP16 output slots to FP32 on current layer</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ChangeOutputFp16ToFp32(layer);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// Insert a ConvertFp32ToFp16Layer after each FP32 output slot</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> slotIndex = 0u; slotIndex &lt; numOutputSlots; ++slotIndex)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; OutputSlot&amp; outputSlot = layer.GetOutputSlot(slotIndex);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(outputSlot.GetTensorInfo().GetDataType() == DataType::Float32)</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"> 95</span>&#160; <span class="keyword">const</span> std::string name =</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string(<span class="stringliteral">&quot;convert_fp32_to_fp16-&quot;</span> + std::to_string(slotIndex) + <span class="stringliteral">&quot;-&quot;</span>) + layer.GetName();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; ConvertFp32ToFp16Layer* convertLayer =</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; graph.InsertNewLayer&lt;ConvertFp32ToFp16Layer&gt;(outputSlot, name.c_str());</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; TensorInfo convertInfo = convertLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; convertInfo.SetDataType(DataType::Float16);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; convertLayer-&gt;GetOutputSlot().SetTensorInfo(convertInfo);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; convertLayers.emplace_back(convertLayer);</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"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> convertLayers;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div></div><!-- fragment -->
14487</div>
14488</div>
14489<a id="a2616ffdae2db993af5c08019fb61860a"></a>
14490<h2 class="memtitle"><span class="permalink"><a href="#a2616ffdae2db993af5c08019fb61860a">&#9670;&nbsp;</a></span>InsertDebugLayerAfter()</h2>
14491
14492<div class="memitem">
14493<div class="memproto">
14494 <table class="memname">
14495 <tr>
14496 <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> * &gt; InsertDebugLayerAfter </td>
14497 <td>(</td>
14498 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
14499 <td class="paramname"><em>graph</em>, </td>
14500 </tr>
14501 <tr>
14502 <td class="paramkey"></td>
14503 <td></td>
14504 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.html">Layer</a> &amp;&#160;</td>
14505 <td class="paramname"><em>layer</em>&#160;</td>
14506 </tr>
14507 <tr>
14508 <td></td>
14509 <td>)</td>
14510 <td></td><td></td>
14511 </tr>
14512 </table>
14513</div><div class="memdoc">
14514
14515<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.html#l00112">112</a> of file <a class="el" href="_network_utils_8cpp_source.html">NetworkUtils.cpp</a>.</p>
14516
14517<p class="reference">References <a class="el" href="_layer_8hpp_source.html#l00239">Layer::BeginOutputSlots()</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="_layer_8hpp_source.html#l00240">Layer::EndOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00216">Layer::GetNameStr()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.html#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.html#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00264">Layer::SetBackendId()</a>, and <a class="el" href="_layer_8cpp_source.html#l00058">OutputSlot::SetTensorInfo()</a>.</p>
14518
14519<p class="reference">Referenced by <a class="el" href="_dynamic_quantization_visitor_8cpp_source.html#l00050">DynamicQuantizationVisitor::FinishVisit()</a>, and <a class="el" href="_add_debug_8hpp_source.html#l00019">AddDebugImpl::Run()</a>.</p>
14520<div class="fragment"><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; std::vector&lt;DebugLayer*&gt; debugLayers;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; debugLayers.reserve(layer.GetNumOutputSlots());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Connect a DebugLayer to each output slot of the layer</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> outputSlot = layer.BeginOutputSlots(); outputSlot != layer.EndOutputSlots(); ++outputSlot)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> std::string debugName = std::string(<span class="stringliteral">&quot;DebugLayerAfter&quot;</span>) + layer.GetNameStr();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; DebugLayer* debugLayer =</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; graph.InsertNewLayer&lt;DebugLayer&gt;(*outputSlot, debugName.c_str());</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"> 125</span>&#160; <span class="comment">// Sets output tensor info for the debug layer.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; BOOST_ASSERT(debugLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot() == &amp;(*outputSlot));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; TensorInfo debugInfo = debugLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; debugLayer-&gt;GetOutputSlot().SetTensorInfo(debugInfo);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// NOTE: It is OK to do this because DebugLayer is only supported on CpuRef</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; debugLayer-&gt;SetBackendId(Compute::CpuRef);</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; debugLayers.emplace_back(debugLayer);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> debugLayers;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div></div><!-- fragment -->
14521</div>
14522</div>
14523<a id="ac3d98d09064176b259e8a9038b06699d"></a>
14524<h2 class="memtitle"><span class="permalink"><a href="#ac3d98d09064176b259e8a9038b06699d">&#9670;&nbsp;</a></span>InstanceNorm()</h2>
14525
14526<div class="memitem">
14527<div class="memproto">
14528 <table class="memname">
14529 <tr>
14530 <td class="memname">void InstanceNorm </td>
14531 <td>(</td>
14532 <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.html">InstanceNormalizationQueueDescriptor</a> &amp;&#160;</td>
14533 <td class="paramname"><em>data</em>, </td>
14534 </tr>
14535 <tr>
14536 <td class="paramkey"></td>
14537 <td></td>
14538 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
14539 <td class="paramname"><em>inputDecoder</em>, </td>
14540 </tr>
14541 <tr>
14542 <td class="paramkey"></td>
14543 <td></td>
14544 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
14545 <td class="paramname"><em>outputEncoder</em>&#160;</td>
14546 </tr>
14547 <tr>
14548 <td></td>
14549 <td>)</td>
14550 <td></td><td></td>
14551 </tr>
14552 </table>
14553</div><div class="memdoc">
14554
14555<p class="definition">Definition at line <a class="el" href="_instance_norm_8cpp_source.html#l00018">18</a> of file <a class="el" href="_instance_norm_8cpp_source.html">InstanceNorm.cpp</a>.</p>
14556
14557<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00649">InstanceNormalizationDescriptor::m_Beta</a>, <a class="el" href="_descriptors_8hpp_source.html#l00653">InstanceNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00651">InstanceNormalizationDescriptor::m_Eps</a>, <a class="el" href="_descriptors_8hpp_source.html#l00647">InstanceNormalizationDescriptor::m_Gamma</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
14558
14559<p class="reference">Referenced by <a class="el" href="_ref_instance_normalization_workload_8cpp_source.html#l00021">RefInstanceNormalizationWorkload::Execute()</a>.</p>
14560<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> TensorShape inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a> dataLayout(data.m_Parameters.m_DataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = inputShape[0];</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.GetHeightIndex()];</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.GetWidthIndex()];</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.GetChannelsIndex()];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">float</span> beta = data.m_Parameters.m_Beta;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">float</span> eps = data.m_Parameters.m_Eps;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">float</span> gamma = data.m_Parameters.m_Gamma;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; inputBatches; ++n)</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; ++c)</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; <span class="keywordtype">float</span> mean = 0, var = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">//Calculate Mean</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</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"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</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; inputDecoder[index];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">float</span> value = inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; mean += value;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</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; mean /= <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(inputHeight * inputWidth);</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"> 56</span>&#160; <span class="comment">//Calculate Variance</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</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"> 63</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">float</span> value = inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; var += (value - mean) * (value - mean);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</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; var /= <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(inputHeight * inputWidth);</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"> 70</span>&#160; <span class="comment">// Apply Instance Normalisation</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; ++h)</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; ++w)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; outputEncoder[index];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>((inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - mean) * gamma / std::sqrt ( var + eps) + beta);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</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; }</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="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
14561<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
14562<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
14563<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
14564</div><!-- fragment -->
14565</div>
14566</div>
14567<a id="abf6aad7bc221f8ad22b4d99cd020373b"></a>
14568<h2 class="memtitle"><span class="permalink"><a href="#abf6aad7bc221f8ad22b4d99cd020373b">&#9670;&nbsp;</a></span>IntersectionOverUnion()</h2>
14569
14570<div class="memitem">
14571<div class="memproto">
14572 <table class="memname">
14573 <tr>
14574 <td class="memname">float IntersectionOverUnion </td>
14575 <td>(</td>
14576 <td class="paramtype">const float *&#160;</td>
14577 <td class="paramname"><em>boxI</em>, </td>
14578 </tr>
14579 <tr>
14580 <td class="paramkey"></td>
14581 <td></td>
14582 <td class="paramtype">const float *&#160;</td>
14583 <td class="paramname"><em>boxJ</em>&#160;</td>
14584 </tr>
14585 <tr>
14586 <td></td>
14587 <td>)</td>
14588 <td></td><td></td>
14589 </tr>
14590 </table>
14591</div><div class="memdoc">
14592
14593<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00031">31</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
14594
14595<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00042">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>.</p>
14596<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// Box-corner format: ymin, xmin, ymax, xmax.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yMin = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xMin = 1;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yMax = 2;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xMax = 3;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">float</span> areaI = (boxI[yMax] - boxI[yMin]) * (boxI[xMax] - boxI[xMin]);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">float</span> areaJ = (boxJ[yMax] - boxJ[yMin]) * (boxJ[xMax] - boxJ[xMin]);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">float</span> yMinIntersection = std::max(boxI[yMin], boxJ[yMin]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">float</span> xMinIntersection = std::max(boxI[xMin], boxJ[xMin]);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">float</span> yMaxIntersection = std::min(boxI[yMax], boxJ[yMax]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">float</span> xMaxIntersection = std::min(boxI[xMax], boxJ[xMax]);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> areaIntersection = std::max(yMaxIntersection - yMinIntersection, 0.0f) *</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::max(xMaxIntersection - xMinIntersection, 0.0f);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">float</span> areaUnion = areaI + areaJ - areaIntersection;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> areaIntersection / areaUnion;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div></div><!-- fragment -->
14597</div>
14598</div>
14599<a id="a58bfb9626d373249745d78b95543116e"></a>
14600<h2 class="memtitle"><span class="permalink"><a href="#a58bfb9626d373249745d78b95543116e">&#9670;&nbsp;</a></span>IsActivationSupported()</h2>
14601
14602<div class="memitem">
14603<div class="memproto">
14604 <table class="memname">
14605 <tr>
14606 <td class="memname">bool IsActivationSupported </td>
14607 <td>(</td>
14608 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
14609 <td class="paramname"><em>backend</em>, </td>
14610 </tr>
14611 <tr>
14612 <td class="paramkey"></td>
14613 <td></td>
14614 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14615 <td class="paramname"><em>input</em>, </td>
14616 </tr>
14617 <tr>
14618 <td class="paramkey"></td>
14619 <td></td>
14620 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14621 <td class="paramname"><em>output</em>, </td>
14622 </tr>
14623 <tr>
14624 <td class="paramkey"></td>
14625 <td></td>
14626 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
14627 <td class="paramname"><em>descriptor</em>, </td>
14628 </tr>
14629 <tr>
14630 <td class="paramkey"></td>
14631 <td></td>
14632 <td class="paramtype">char *&#160;</td>
14633 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
14634 </tr>
14635 <tr>
14636 <td class="paramkey"></td>
14637 <td></td>
14638 <td class="paramtype">size_t&#160;</td>
14639 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
14640 </tr>
14641 <tr>
14642 <td></td>
14643 <td>)</td>
14644 <td></td><td></td>
14645 </tr>
14646 </table>
14647</div><div class="memdoc">
14648
14649<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
14650
14651<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00069">69</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
14652
14653<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
14654<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a58bfb9626d373249745d78b95543116e">IsActivationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a58bfb9626d373249745d78b95543116e"><div class="ttname"><a href="namespacearmnn.html#a58bfb9626d373249745d78b95543116e">armnn::IsActivationSupported</a></div><div class="ttdeci">bool IsActivationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ActivationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00069">LayerSupport.cpp:69</a></div></div>
14655<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
14656</div><!-- fragment -->
14657</div>
14658</div>
14659<a id="a1b01771dc5a057d09f8cd82492154a1f"></a>
14660<h2 class="memtitle"><span class="permalink"><a href="#a1b01771dc5a057d09f8cd82492154a1f">&#9670;&nbsp;</a></span>IsAdditionSupported()</h2>
14661
14662<div class="memitem">
14663<div class="memproto">
14664 <table class="memname">
14665 <tr>
14666 <td class="memname">bool IsAdditionSupported </td>
14667 <td>(</td>
14668 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
14669 <td class="paramname"><em>backend</em>, </td>
14670 </tr>
14671 <tr>
14672 <td class="paramkey"></td>
14673 <td></td>
14674 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14675 <td class="paramname"><em>input0</em>, </td>
14676 </tr>
14677 <tr>
14678 <td class="paramkey"></td>
14679 <td></td>
14680 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14681 <td class="paramname"><em>input1</em>, </td>
14682 </tr>
14683 <tr>
14684 <td class="paramkey"></td>
14685 <td></td>
14686 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14687 <td class="paramname"><em>output</em>, </td>
14688 </tr>
14689 <tr>
14690 <td class="paramkey"></td>
14691 <td></td>
14692 <td class="paramtype">char *&#160;</td>
14693 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
14694 </tr>
14695 <tr>
14696 <td class="paramkey"></td>
14697 <td></td>
14698 <td class="paramtype">size_t&#160;</td>
14699 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
14700 </tr>
14701 <tr>
14702 <td></td>
14703 <td>)</td>
14704 <td></td><td></td>
14705 </tr>
14706 </table>
14707</div><div class="memdoc">
14708
14709<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
14710
14711<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00079">79</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
14712
14713<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00064">CheckTensorDataTypesEqual()</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
14714<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearmnn.html#ac7cce6c8c3c53b2feeba6548fc3fb00c">CheckTensorDataTypesEqual</a>(input0, input1))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a1b01771dc5a057d09f8cd82492154a1f">IsAdditionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac7cce6c8c3c53b2feeba6548fc3fb00c"><div class="ttname"><a href="namespacearmnn.html#ac7cce6c8c3c53b2feeba6548fc3fb00c">armnn::CheckTensorDataTypesEqual</a></div><div class="ttdeci">bool CheckTensorDataTypesEqual(const TensorInfo &amp;input0, const TensorInfo &amp;input1)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00064">LayerSupport.cpp:64</a></div></div>
14715<div class="ttc" id="namespacearmnn_html_a1b01771dc5a057d09f8cd82492154a1f"><div class="ttname"><a href="namespacearmnn.html#a1b01771dc5a057d09f8cd82492154a1f">armnn::IsAdditionSupported</a></div><div class="ttdeci">bool IsAdditionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00079">LayerSupport.cpp:79</a></div></div>
14716<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
14717</div><!-- fragment -->
14718</div>
14719</div>
14720<a id="aa8d5d17d1edd51d899fe699eb6156b58"></a>
14721<h2 class="memtitle"><span class="permalink"><a href="#aa8d5d17d1edd51d899fe699eb6156b58">&#9670;&nbsp;</a></span>IsArgMinMaxSupported()</h2>
14722
14723<div class="memitem">
14724<div class="memproto">
14725 <table class="memname">
14726 <tr>
14727 <td class="memname">bool armnn::IsArgMinMaxSupported </td>
14728 <td>(</td>
14729 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
14730 <td class="paramname"><em>backend</em>, </td>
14731 </tr>
14732 <tr>
14733 <td class="paramkey"></td>
14734 <td></td>
14735 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14736 <td class="paramname"><em>input</em>, </td>
14737 </tr>
14738 <tr>
14739 <td class="paramkey"></td>
14740 <td></td>
14741 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14742 <td class="paramname"><em>output</em>, </td>
14743 </tr>
14744 <tr>
14745 <td class="paramkey"></td>
14746 <td></td>
14747 <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;&#160;</td>
14748 <td class="paramname"><em>descriptor</em>, </td>
14749 </tr>
14750 <tr>
14751 <td class="paramkey"></td>
14752 <td></td>
14753 <td class="paramtype">char *&#160;</td>
14754 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
14755 </tr>
14756 <tr>
14757 <td class="paramkey"></td>
14758 <td></td>
14759 <td class="paramtype">size_t&#160;</td>
14760 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
14761 </tr>
14762 <tr>
14763 <td></td>
14764 <td>)</td>
14765 <td></td><td></td>
14766 </tr>
14767 </table>
14768</div><div class="memdoc">
14769
14770<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00094">94</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
14771
14772<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
14773<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aa8d5d17d1edd51d899fe699eb6156b58">IsArgMinMaxSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
14774<div class="ttc" id="namespacearmnn_html_aa8d5d17d1edd51d899fe699eb6156b58"><div class="ttname"><a href="namespacearmnn.html#aa8d5d17d1edd51d899fe699eb6156b58">armnn::IsArgMinMaxSupported</a></div><div class="ttdeci">bool IsArgMinMaxSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ArgMinMaxDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00094">LayerSupport.cpp:94</a></div></div>
14775</div><!-- fragment -->
14776</div>
14777</div>
14778<a id="a7d18d6613bb865b66b05d4d6e0391934"></a>
14779<h2 class="memtitle"><span class="permalink"><a href="#a7d18d6613bb865b66b05d4d6e0391934">&#9670;&nbsp;</a></span>IsBatchNormalizationSupported()</h2>
14780
14781<div class="memitem">
14782<div class="memproto">
14783 <table class="memname">
14784 <tr>
14785 <td class="memname">bool IsBatchNormalizationSupported </td>
14786 <td>(</td>
14787 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
14788 <td class="paramname"><em>backend</em>, </td>
14789 </tr>
14790 <tr>
14791 <td class="paramkey"></td>
14792 <td></td>
14793 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14794 <td class="paramname"><em>input</em>, </td>
14795 </tr>
14796 <tr>
14797 <td class="paramkey"></td>
14798 <td></td>
14799 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14800 <td class="paramname"><em>output</em>, </td>
14801 </tr>
14802 <tr>
14803 <td class="paramkey"></td>
14804 <td></td>
14805 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14806 <td class="paramname"><em>mean</em>, </td>
14807 </tr>
14808 <tr>
14809 <td class="paramkey"></td>
14810 <td></td>
14811 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14812 <td class="paramname"><em>var</em>, </td>
14813 </tr>
14814 <tr>
14815 <td class="paramkey"></td>
14816 <td></td>
14817 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14818 <td class="paramname"><em>beta</em>, </td>
14819 </tr>
14820 <tr>
14821 <td class="paramkey"></td>
14822 <td></td>
14823 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14824 <td class="paramname"><em>gamma</em>, </td>
14825 </tr>
14826 <tr>
14827 <td class="paramkey"></td>
14828 <td></td>
14829 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;&#160;</td>
14830 <td class="paramname"><em>descriptor</em>, </td>
14831 </tr>
14832 <tr>
14833 <td class="paramkey"></td>
14834 <td></td>
14835 <td class="paramtype">char *&#160;</td>
14836 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
14837 </tr>
14838 <tr>
14839 <td class="paramkey"></td>
14840 <td></td>
14841 <td class="paramtype">size_t&#160;</td>
14842 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
14843 </tr>
14844 <tr>
14845 <td></td>
14846 <td>)</td>
14847 <td></td><td></td>
14848 </tr>
14849 </table>
14850</div><div class="memdoc">
14851
14852<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
14853
14854<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00104">104</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
14855
14856<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
14857<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacearmnn.html#a7d18d6613bb865b66b05d4d6e0391934">IsBatchNormalizationSupported</a>,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; input,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; output,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; mean,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; var,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; beta,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; gamma,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; descriptor);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a7d18d6613bb865b66b05d4d6e0391934"><div class="ttname"><a href="namespacearmnn.html#a7d18d6613bb865b66b05d4d6e0391934">armnn::IsBatchNormalizationSupported</a></div><div class="ttdeci">bool IsBatchNormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const TensorInfo &amp;mean, const TensorInfo &amp;var, const TensorInfo &amp;beta, const TensorInfo &amp;gamma, const BatchNormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00104">LayerSupport.cpp:104</a></div></div>
14858<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
14859</div><!-- fragment -->
14860</div>
14861</div>
14862<a id="a2399052d9cbb2b88720b07511a2e362f"></a>
14863<h2 class="memtitle"><span class="permalink"><a href="#a2399052d9cbb2b88720b07511a2e362f">&#9670;&nbsp;</a></span>IsBatchToSpaceNdSupported()</h2>
14864
14865<div class="memitem">
14866<div class="memproto">
14867 <table class="memname">
14868 <tr>
14869 <td class="memname">bool IsBatchToSpaceNdSupported </td>
14870 <td>(</td>
14871 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
14872 <td class="paramname"><em>backend</em>, </td>
14873 </tr>
14874 <tr>
14875 <td class="paramkey"></td>
14876 <td></td>
14877 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14878 <td class="paramname"><em>input</em>, </td>
14879 </tr>
14880 <tr>
14881 <td class="paramkey"></td>
14882 <td></td>
14883 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14884 <td class="paramname"><em>output</em>, </td>
14885 </tr>
14886 <tr>
14887 <td class="paramkey"></td>
14888 <td></td>
14889 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
14890 <td class="paramname"><em>descriptor</em>, </td>
14891 </tr>
14892 <tr>
14893 <td class="paramkey"></td>
14894 <td></td>
14895 <td class="paramtype">char *&#160;</td>
14896 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
14897 </tr>
14898 <tr>
14899 <td class="paramkey"></td>
14900 <td></td>
14901 <td class="paramtype">size_t&#160;</td>
14902 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
14903 </tr>
14904 <tr>
14905 <td></td>
14906 <td>)</td>
14907 <td></td><td></td>
14908 </tr>
14909 </table>
14910</div><div class="memdoc">
14911
14912<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
14913
14914<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00126">126</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
14915
14916<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
14917<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacearmnn.html#a2399052d9cbb2b88720b07511a2e362f">IsBatchToSpaceNdSupported</a>,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; input,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; output,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; descriptor);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a2399052d9cbb2b88720b07511a2e362f"><div class="ttname"><a href="namespacearmnn.html#a2399052d9cbb2b88720b07511a2e362f">armnn::IsBatchToSpaceNdSupported</a></div><div class="ttdeci">bool IsBatchToSpaceNdSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const BatchToSpaceNdDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00126">LayerSupport.cpp:126</a></div></div>
14918<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
14919</div><!-- fragment -->
14920</div>
14921</div>
14922<a id="a757df85e956e425c1a082d35a98ca4a9"></a>
14923<h2 class="memtitle"><span class="permalink"><a href="#a757df85e956e425c1a082d35a98ca4a9">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[1/2]</span></h2>
14924
14925<div class="memitem">
14926<div class="memproto">
14927 <table class="memname">
14928 <tr>
14929 <td class="memname">bool armnn::IsConcatSupported </td>
14930 <td>(</td>
14931 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
14932 <td class="paramname"><em>backend</em>, </td>
14933 </tr>
14934 <tr>
14935 <td class="paramkey"></td>
14936 <td></td>
14937 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
14938 <td class="paramname"><em>inputs</em>, </td>
14939 </tr>
14940 <tr>
14941 <td class="paramkey"></td>
14942 <td></td>
14943 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
14944 <td class="paramname"><em>output</em>, </td>
14945 </tr>
14946 <tr>
14947 <td class="paramkey"></td>
14948 <td></td>
14949 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
14950 <td class="paramname"><em>descriptor</em>, </td>
14951 </tr>
14952 <tr>
14953 <td class="paramkey"></td>
14954 <td></td>
14955 <td class="paramtype">char *&#160;</td>
14956 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
14957 </tr>
14958 <tr>
14959 <td class="paramkey"></td>
14960 <td></td>
14961 <td class="paramtype">size_t&#160;</td>
14962 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
14963 </tr>
14964 <tr>
14965 <td></td>
14966 <td>)</td>
14967 <td></td><td></td>
14968 </tr>
14969 </table>
14970</div><div class="memdoc">
14971
14972<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
14973
14974<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00140">IsConcatSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00493">NeonLayerSupport::IsMergerSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00536">ClLayerSupport::IsMergerSupported()</a>, and <a class="el" href="_ref_layer_support_8cpp_source.html#l01209">RefLayerSupport::IsMergerSupported()</a>.</p>
14975
14976</div>
14977</div>
14978<a id="ae1fc9dbaad02fff7f7227cc10536e1ee"></a>
14979<h2 class="memtitle"><span class="permalink"><a href="#ae1fc9dbaad02fff7f7227cc10536e1ee">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[2/2]</span></h2>
14980
14981<div class="memitem">
14982<div class="memproto">
14983 <table class="memname">
14984 <tr>
14985 <td class="memname">bool armnn::IsConcatSupported </td>
14986 <td>(</td>
14987 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
14988 <td class="paramname"><em>backend</em>, </td>
14989 </tr>
14990 <tr>
14991 <td class="paramkey"></td>
14992 <td></td>
14993 <td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
14994 <td class="paramname"><em>inputs</em>, </td>
14995 </tr>
14996 <tr>
14997 <td class="paramkey"></td>
14998 <td></td>
14999 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15000 <td class="paramname"><em>output</em>, </td>
15001 </tr>
15002 <tr>
15003 <td class="paramkey"></td>
15004 <td></td>
15005 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
15006 <td class="paramname"><em>descriptor</em>, </td>
15007 </tr>
15008 <tr>
15009 <td class="paramkey"></td>
15010 <td></td>
15011 <td class="paramtype">char *&#160;</td>
15012 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
15013 </tr>
15014 <tr>
15015 <td class="paramkey"></td>
15016 <td></td>
15017 <td class="paramtype">size_t&#160;</td>
15018 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
15019 </tr>
15020 <tr>
15021 <td></td>
15022 <td>)</td>
15023 <td></td><td></td>
15024 </tr>
15025 </table>
15026</div><div class="memdoc">
15027
15028<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00140">140</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15029
15030<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a757df85e956e425c1a082d35a98ca4a9">IsConcatSupported()</a>.</p>
15031<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; BOOST_ASSERT(inputs.size() &gt; 0);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#ae1fc9dbaad02fff7f7227cc10536e1ee">IsConcatSupported</a>, inputs, output, descriptor);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae1fc9dbaad02fff7f7227cc10536e1ee"><div class="ttname"><a href="namespacearmnn.html#ae1fc9dbaad02fff7f7227cc10536e1ee">armnn::IsConcatSupported</a></div><div class="ttdeci">bool IsConcatSupported(const BackendId &amp;backend, std::vector&lt; const TensorInfo *&gt; inputs, const TensorInfo &amp;output, const OriginsDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00140">LayerSupport.cpp:140</a></div></div>
15032<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15033</div><!-- fragment -->
15034</div>
15035</div>
15036<a id="acc76cdec78906a3457a9c2293a453869"></a>
15037<h2 class="memtitle"><span class="permalink"><a href="#acc76cdec78906a3457a9c2293a453869">&#9670;&nbsp;</a></span>IsConstantSupported()</h2>
15038
15039<div class="memitem">
15040<div class="memproto">
15041 <table class="memname">
15042 <tr>
15043 <td class="memname">bool IsConstantSupported </td>
15044 <td>(</td>
15045 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15046 <td class="paramname"><em>backend</em>, </td>
15047 </tr>
15048 <tr>
15049 <td class="paramkey"></td>
15050 <td></td>
15051 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15052 <td class="paramname"><em>output</em>, </td>
15053 </tr>
15054 <tr>
15055 <td class="paramkey"></td>
15056 <td></td>
15057 <td class="paramtype">char *&#160;</td>
15058 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15059 </tr>
15060 <tr>
15061 <td class="paramkey"></td>
15062 <td></td>
15063 <td class="paramtype">size_t&#160;</td>
15064 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15065 </tr>
15066 <tr>
15067 <td></td>
15068 <td>)</td>
15069 <td></td><td></td>
15070 </tr>
15071 </table>
15072</div><div class="memdoc">
15073
15074<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15075
15076<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00152">152</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15077
15078<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15079<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#acc76cdec78906a3457a9c2293a453869">IsConstantSupported</a>, output);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15080<div class="ttc" id="namespacearmnn_html_acc76cdec78906a3457a9c2293a453869"><div class="ttname"><a href="namespacearmnn.html#acc76cdec78906a3457a9c2293a453869">armnn::IsConstantSupported</a></div><div class="ttdeci">bool IsConstantSupported(const BackendId &amp;backend, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00152">LayerSupport.cpp:152</a></div></div>
15081</div><!-- fragment -->
15082</div>
15083</div>
15084<a id="aaa152f86599af5189c9d637fe7ade6d0"></a>
15085<h2 class="memtitle"><span class="permalink"><a href="#aaa152f86599af5189c9d637fe7ade6d0">&#9670;&nbsp;</a></span>IsConvertFp16ToFp32Supported()</h2>
15086
15087<div class="memitem">
15088<div class="memproto">
15089 <table class="memname">
15090 <tr>
15091 <td class="memname">bool IsConvertFp16ToFp32Supported </td>
15092 <td>(</td>
15093 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15094 <td class="paramname"><em>backend</em>, </td>
15095 </tr>
15096 <tr>
15097 <td class="paramkey"></td>
15098 <td></td>
15099 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15100 <td class="paramname"><em>input</em>, </td>
15101 </tr>
15102 <tr>
15103 <td class="paramkey"></td>
15104 <td></td>
15105 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15106 <td class="paramname"><em>output</em>, </td>
15107 </tr>
15108 <tr>
15109 <td class="paramkey"></td>
15110 <td></td>
15111 <td class="paramtype">char *&#160;</td>
15112 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15113 </tr>
15114 <tr>
15115 <td class="paramkey"></td>
15116 <td></td>
15117 <td class="paramtype">size_t&#160;</td>
15118 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15119 </tr>
15120 <tr>
15121 <td></td>
15122 <td>)</td>
15123 <td></td><td></td>
15124 </tr>
15125 </table>
15126</div><div class="memdoc">
15127
15128<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15129
15130<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00160">160</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15131
15132<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15133<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aaa152f86599af5189c9d637fe7ade6d0">IsConvertFp16ToFp32Supported</a>, input, output);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15134<div class="ttc" id="namespacearmnn_html_aaa152f86599af5189c9d637fe7ade6d0"><div class="ttname"><a href="namespacearmnn.html#aaa152f86599af5189c9d637fe7ade6d0">armnn::IsConvertFp16ToFp32Supported</a></div><div class="ttdeci">bool IsConvertFp16ToFp32Supported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00160">LayerSupport.cpp:160</a></div></div>
15135</div><!-- fragment -->
15136</div>
15137</div>
15138<a id="a98994026cec1578ceb7aa74c834b00d9"></a>
15139<h2 class="memtitle"><span class="permalink"><a href="#a98994026cec1578ceb7aa74c834b00d9">&#9670;&nbsp;</a></span>IsConvertFp32ToFp16Supported()</h2>
15140
15141<div class="memitem">
15142<div class="memproto">
15143 <table class="memname">
15144 <tr>
15145 <td class="memname">bool IsConvertFp32ToFp16Supported </td>
15146 <td>(</td>
15147 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15148 <td class="paramname"><em>backend</em>, </td>
15149 </tr>
15150 <tr>
15151 <td class="paramkey"></td>
15152 <td></td>
15153 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15154 <td class="paramname"><em>input</em>, </td>
15155 </tr>
15156 <tr>
15157 <td class="paramkey"></td>
15158 <td></td>
15159 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15160 <td class="paramname"><em>output</em>, </td>
15161 </tr>
15162 <tr>
15163 <td class="paramkey"></td>
15164 <td></td>
15165 <td class="paramtype">char *&#160;</td>
15166 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15167 </tr>
15168 <tr>
15169 <td class="paramkey"></td>
15170 <td></td>
15171 <td class="paramtype">size_t&#160;</td>
15172 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15173 </tr>
15174 <tr>
15175 <td></td>
15176 <td>)</td>
15177 <td></td><td></td>
15178 </tr>
15179 </table>
15180</div><div class="memdoc">
15181
15182<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15183
15184<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00169">169</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15185
15186<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15187<div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a98994026cec1578ceb7aa74c834b00d9">IsConvertFp32ToFp16Supported</a>, input, output);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15188<div class="ttc" id="namespacearmnn_html_a98994026cec1578ceb7aa74c834b00d9"><div class="ttname"><a href="namespacearmnn.html#a98994026cec1578ceb7aa74c834b00d9">armnn::IsConvertFp32ToFp16Supported</a></div><div class="ttdeci">bool IsConvertFp32ToFp16Supported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00169">LayerSupport.cpp:169</a></div></div>
15189</div><!-- fragment -->
15190</div>
15191</div>
15192<a id="af22d4421773ce95e0f2324fc1a66c0d9"></a>
15193<h2 class="memtitle"><span class="permalink"><a href="#af22d4421773ce95e0f2324fc1a66c0d9">&#9670;&nbsp;</a></span>IsConvolution2dSupported()</h2>
15194
15195<div class="memitem">
15196<div class="memproto">
15197 <table class="memname">
15198 <tr>
15199 <td class="memname">bool IsConvolution2dSupported </td>
15200 <td>(</td>
15201 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15202 <td class="paramname"><em>backend</em>, </td>
15203 </tr>
15204 <tr>
15205 <td class="paramkey"></td>
15206 <td></td>
15207 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15208 <td class="paramname"><em>input</em>, </td>
15209 </tr>
15210 <tr>
15211 <td class="paramkey"></td>
15212 <td></td>
15213 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15214 <td class="paramname"><em>output</em>, </td>
15215 </tr>
15216 <tr>
15217 <td class="paramkey"></td>
15218 <td></td>
15219 <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;&#160;</td>
15220 <td class="paramname"><em>descriptor</em>, </td>
15221 </tr>
15222 <tr>
15223 <td class="paramkey"></td>
15224 <td></td>
15225 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15226 <td class="paramname"><em>weights</em>, </td>
15227 </tr>
15228 <tr>
15229 <td class="paramkey"></td>
15230 <td></td>
15231 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
15232 <td class="paramname"><em>biases</em>, </td>
15233 </tr>
15234 <tr>
15235 <td class="paramkey"></td>
15236 <td></td>
15237 <td class="paramtype">char *&#160;</td>
15238 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15239 </tr>
15240 <tr>
15241 <td class="paramkey"></td>
15242 <td></td>
15243 <td class="paramtype">size_t&#160;</td>
15244 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15245 </tr>
15246 <tr>
15247 <td></td>
15248 <td>)</td>
15249 <td></td><td></td>
15250 </tr>
15251 </table>
15252</div><div class="memdoc">
15253
15254<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15255
15256<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00178">178</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15257
15258<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15259<div class="fragment"><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="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#af22d4421773ce95e0f2324fc1a66c0d9">IsConvolution2dSupported</a>, input, output, descriptor, weights, biases);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15260<div class="ttc" id="namespacearmnn_html_af22d4421773ce95e0f2324fc1a66c0d9"><div class="ttname"><a href="namespacearmnn.html#af22d4421773ce95e0f2324fc1a66c0d9">armnn::IsConvolution2dSupported</a></div><div class="ttdeci">bool IsConvolution2dSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const Convolution2dDescriptor &amp;descriptor, const TensorInfo &amp;weights, const Optional&lt; TensorInfo &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00178">LayerSupport.cpp:178</a></div></div>
15261</div><!-- fragment -->
15262</div>
15263</div>
15264<a id="a6a2e058d934e9d784eab57ee7121d69c"></a>
15265<h2 class="memtitle"><span class="permalink"><a href="#a6a2e058d934e9d784eab57ee7121d69c">&#9670;&nbsp;</a></span>IsDataType()</h2>
15266
15267<div class="memitem">
15268<div class="memproto">
15269 <table class="memname">
15270 <tr>
15271 <td class="memname">bool armnn::IsDataType </td>
15272 <td>(</td>
15273 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
15274 <td class="paramname"><em>info</em></td><td>)</td>
15275 <td></td>
15276 </tr>
15277 </table>
15278</div><div class="memdoc">
15279
15280<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00032">32</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
15281
15282<p class="reference">References <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, and <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>.</p>
15283<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">auto</span> checkType = [](<span class="keyword">const</span> TensorInfo&amp; tensorInfo) {<span class="keywordflow">return</span> tensorInfo.GetDataType() == ArmnnType;};</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">auto</span> it = std::find_if(std::begin(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos), std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos), checkType);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> (it != std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos))</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="keywordflow">return</span> <span class="keyword">true</span>;</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; it = std::find_if(std::begin(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos), std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos), checkType);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (it != std::end(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos))</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; <span class="keywordflow">return</span> <span class="keyword">true</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"> 45</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
15284</div><!-- fragment -->
15285</div>
15286</div>
15287<a id="a8b96de58aae24091d0ad761f27360630"></a>
15288<h2 class="memtitle"><span class="permalink"><a href="#a8b96de58aae24091d0ad761f27360630">&#9670;&nbsp;</a></span>IsDebugSupported()</h2>
15289
15290<div class="memitem">
15291<div class="memproto">
15292 <table class="memname">
15293 <tr>
15294 <td class="memname">bool IsDebugSupported </td>
15295 <td>(</td>
15296 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15297 <td class="paramname"><em>backend</em>, </td>
15298 </tr>
15299 <tr>
15300 <td class="paramkey"></td>
15301 <td></td>
15302 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15303 <td class="paramname"><em>input</em>, </td>
15304 </tr>
15305 <tr>
15306 <td class="paramkey"></td>
15307 <td></td>
15308 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15309 <td class="paramname"><em>output</em>, </td>
15310 </tr>
15311 <tr>
15312 <td class="paramkey"></td>
15313 <td></td>
15314 <td class="paramtype">char *&#160;</td>
15315 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15316 </tr>
15317 <tr>
15318 <td class="paramkey"></td>
15319 <td></td>
15320 <td class="paramtype">size_t&#160;</td>
15321 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15322 </tr>
15323 <tr>
15324 <td></td>
15325 <td>)</td>
15326 <td></td><td></td>
15327 </tr>
15328 </table>
15329</div><div class="memdoc">
15330
15331<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15332
15333<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00190">190</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15334
15335<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15336<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a8b96de58aae24091d0ad761f27360630">IsDebugSupported</a>, input, output);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a8b96de58aae24091d0ad761f27360630"><div class="ttname"><a href="namespacearmnn.html#a8b96de58aae24091d0ad761f27360630">armnn::IsDebugSupported</a></div><div class="ttdeci">bool IsDebugSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00190">LayerSupport.cpp:190</a></div></div>
15337<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15338</div><!-- fragment -->
15339</div>
15340</div>
15341<a id="a399d38872500c6ac84ae031673176ef3"></a>
15342<h2 class="memtitle"><span class="permalink"><a href="#a399d38872500c6ac84ae031673176ef3">&#9670;&nbsp;</a></span>IsDepthwiseConvolutionSupported()</h2>
15343
15344<div class="memitem">
15345<div class="memproto">
15346 <table class="memname">
15347 <tr>
15348 <td class="memname">bool IsDepthwiseConvolutionSupported </td>
15349 <td>(</td>
15350 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15351 <td class="paramname"><em>backend</em>, </td>
15352 </tr>
15353 <tr>
15354 <td class="paramkey"></td>
15355 <td></td>
15356 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15357 <td class="paramname"><em>input</em>, </td>
15358 </tr>
15359 <tr>
15360 <td class="paramkey"></td>
15361 <td></td>
15362 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15363 <td class="paramname"><em>output</em>, </td>
15364 </tr>
15365 <tr>
15366 <td class="paramkey"></td>
15367 <td></td>
15368 <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
15369 <td class="paramname"><em>descriptor</em>, </td>
15370 </tr>
15371 <tr>
15372 <td class="paramkey"></td>
15373 <td></td>
15374 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15375 <td class="paramname"><em>weights</em>, </td>
15376 </tr>
15377 <tr>
15378 <td class="paramkey"></td>
15379 <td></td>
15380 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
15381 <td class="paramname"><em>biases</em>, </td>
15382 </tr>
15383 <tr>
15384 <td class="paramkey"></td>
15385 <td></td>
15386 <td class="paramtype">char *&#160;</td>
15387 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15388 </tr>
15389 <tr>
15390 <td class="paramkey"></td>
15391 <td></td>
15392 <td class="paramtype">size_t&#160;</td>
15393 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15394 </tr>
15395 <tr>
15396 <td></td>
15397 <td>)</td>
15398 <td></td><td></td>
15399 </tr>
15400 </table>
15401</div><div class="memdoc">
15402
15403<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15404
15405<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00199">199</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15406
15407<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_descriptors_8hpp_source.html#l00486">DepthwiseConvolution2dDescriptor::m_DilationX</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00488">DepthwiseConvolution2dDescriptor::m_DilationY</a>.</p>
15408
15409<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.html#l00676">RefLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
15410<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (descriptor.m_DilationX == 1 &amp;&amp; descriptor.m_DilationY == 1)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// Pre 19.05 ArmNN did not have the dilation parameters.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// This version of IsDepthwiseConvolutionSupported is called for backwards-compatibility</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="namespacearmnn.html#a399d38872500c6ac84ae031673176ef3">IsDepthwiseConvolutionSupported</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; input,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; output,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; descriptor,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; weights,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; biases);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; IsDilatedDepthwiseConvolutionSupported,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; input,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; output,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; descriptor,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; weights,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; biases);</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"> 230</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15411<div class="ttc" id="namespacearmnn_html_a399d38872500c6ac84ae031673176ef3"><div class="ttname"><a href="namespacearmnn.html#a399d38872500c6ac84ae031673176ef3">armnn::IsDepthwiseConvolutionSupported</a></div><div class="ttdeci">bool IsDepthwiseConvolutionSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const DepthwiseConvolution2dDescriptor &amp;descriptor, const TensorInfo &amp;weights, const Optional&lt; TensorInfo &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00199">LayerSupport.cpp:199</a></div></div>
15412</div><!-- fragment -->
15413</div>
15414</div>
15415<a id="ac92dceabfbc1e46fe74f699f733886a8"></a>
15416<h2 class="memtitle"><span class="permalink"><a href="#ac92dceabfbc1e46fe74f699f733886a8">&#9670;&nbsp;</a></span>IsDequantizeSupported()</h2>
15417
15418<div class="memitem">
15419<div class="memproto">
15420 <table class="memname">
15421 <tr>
15422 <td class="memname">bool IsDequantizeSupported </td>
15423 <td>(</td>
15424 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15425 <td class="paramname"><em>backend</em>, </td>
15426 </tr>
15427 <tr>
15428 <td class="paramkey"></td>
15429 <td></td>
15430 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15431 <td class="paramname"><em>input</em>, </td>
15432 </tr>
15433 <tr>
15434 <td class="paramkey"></td>
15435 <td></td>
15436 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15437 <td class="paramname"><em>output</em>, </td>
15438 </tr>
15439 <tr>
15440 <td class="paramkey"></td>
15441 <td></td>
15442 <td class="paramtype">char *&#160;</td>
15443 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15444 </tr>
15445 <tr>
15446 <td class="paramkey"></td>
15447 <td></td>
15448 <td class="paramtype">size_t&#160;</td>
15449 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15450 </tr>
15451 <tr>
15452 <td></td>
15453 <td>)</td>
15454 <td></td><td></td>
15455 </tr>
15456 </table>
15457</div><div class="memdoc">
15458
15459<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15460
15461<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00232">232</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15462
15463<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#aa9da770c93f812b264861f98cfdd650c">IsDetectionPostProcessSupported()</a>.</p>
15464<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#ac92dceabfbc1e46fe74f699f733886a8">IsDequantizeSupported</a>, input, output);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15465<div class="ttc" id="namespacearmnn_html_ac92dceabfbc1e46fe74f699f733886a8"><div class="ttname"><a href="namespacearmnn.html#ac92dceabfbc1e46fe74f699f733886a8">armnn::IsDequantizeSupported</a></div><div class="ttdeci">bool IsDequantizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00232">LayerSupport.cpp:232</a></div></div>
15466</div><!-- fragment -->
15467</div>
15468</div>
15469<a id="aa9da770c93f812b264861f98cfdd650c"></a>
15470<h2 class="memtitle"><span class="permalink"><a href="#aa9da770c93f812b264861f98cfdd650c">&#9670;&nbsp;</a></span>IsDetectionPostProcessSupported()</h2>
15471
15472<div class="memitem">
15473<div class="memproto">
15474 <table class="memname">
15475 <tr>
15476 <td class="memname">bool armnn::IsDetectionPostProcessSupported </td>
15477 <td>(</td>
15478 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15479 <td class="paramname"><em>backend</em>, </td>
15480 </tr>
15481 <tr>
15482 <td class="paramkey"></td>
15483 <td></td>
15484 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15485 <td class="paramname"><em>input0</em>, </td>
15486 </tr>
15487 <tr>
15488 <td class="paramkey"></td>
15489 <td></td>
15490 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15491 <td class="paramname"><em>input1</em>, </td>
15492 </tr>
15493 <tr>
15494 <td class="paramkey"></td>
15495 <td></td>
15496 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
15497 <td class="paramname"><em>descriptor</em>, </td>
15498 </tr>
15499 <tr>
15500 <td class="paramkey"></td>
15501 <td></td>
15502 <td class="paramtype">char *&#160;</td>
15503 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
15504 </tr>
15505 <tr>
15506 <td class="paramkey"></td>
15507 <td></td>
15508 <td class="paramtype">size_t&#160;</td>
15509 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
15510 </tr>
15511 <tr>
15512 <td></td>
15513 <td>)</td>
15514 <td></td><td></td>
15515 </tr>
15516 </table>
15517</div><div class="memdoc">
15518
15519<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00232">IsDequantizeSupported()</a>.</p>
15520
15521</div>
15522</div>
15523<a id="a29b4b6b364a31632597970d0bad3d78f"></a>
15524<h2 class="memtitle"><span class="permalink"><a href="#a29b4b6b364a31632597970d0bad3d78f">&#9670;&nbsp;</a></span>IsDivisionSupported()</h2>
15525
15526<div class="memitem">
15527<div class="memproto">
15528 <table class="memname">
15529 <tr>
15530 <td class="memname">bool IsDivisionSupported </td>
15531 <td>(</td>
15532 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15533 <td class="paramname"><em>backend</em>, </td>
15534 </tr>
15535 <tr>
15536 <td class="paramkey"></td>
15537 <td></td>
15538 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15539 <td class="paramname"><em>input0</em>, </td>
15540 </tr>
15541 <tr>
15542 <td class="paramkey"></td>
15543 <td></td>
15544 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15545 <td class="paramname"><em>input1</em>, </td>
15546 </tr>
15547 <tr>
15548 <td class="paramkey"></td>
15549 <td></td>
15550 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15551 <td class="paramname"><em>output</em>, </td>
15552 </tr>
15553 <tr>
15554 <td class="paramkey"></td>
15555 <td></td>
15556 <td class="paramtype">char *&#160;</td>
15557 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15558 </tr>
15559 <tr>
15560 <td class="paramkey"></td>
15561 <td></td>
15562 <td class="paramtype">size_t&#160;</td>
15563 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15564 </tr>
15565 <tr>
15566 <td></td>
15567 <td>)</td>
15568 <td></td><td></td>
15569 </tr>
15570 </table>
15571</div><div class="memdoc">
15572
15573<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15574
15575<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00248">248</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15576
15577<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15578<div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a29b4b6b364a31632597970d0bad3d78f">IsDivisionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a29b4b6b364a31632597970d0bad3d78f"><div class="ttname"><a href="namespacearmnn.html#a29b4b6b364a31632597970d0bad3d78f">armnn::IsDivisionSupported</a></div><div class="ttdeci">bool IsDivisionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00248">LayerSupport.cpp:248</a></div></div>
15579<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15580</div><!-- fragment -->
15581</div>
15582</div>
15583<a id="a0e3cdea6143299b258a9c34b596bad4d"></a>
15584<h2 class="memtitle"><span class="permalink"><a href="#a0e3cdea6143299b258a9c34b596bad4d">&#9670;&nbsp;</a></span>IsEqualSupported()</h2>
15585
15586<div class="memitem">
15587<div class="memproto">
15588 <table class="memname">
15589 <tr>
15590 <td class="memname">bool IsEqualSupported </td>
15591 <td>(</td>
15592 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15593 <td class="paramname"><em>backend</em>, </td>
15594 </tr>
15595 <tr>
15596 <td class="paramkey"></td>
15597 <td></td>
15598 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15599 <td class="paramname"><em>input0</em>, </td>
15600 </tr>
15601 <tr>
15602 <td class="paramkey"></td>
15603 <td></td>
15604 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15605 <td class="paramname"><em>input1</em>, </td>
15606 </tr>
15607 <tr>
15608 <td class="paramkey"></td>
15609 <td></td>
15610 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15611 <td class="paramname"><em>output</em>, </td>
15612 </tr>
15613 <tr>
15614 <td class="paramkey"></td>
15615 <td></td>
15616 <td class="paramtype">char *&#160;</td>
15617 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15618 </tr>
15619 <tr>
15620 <td class="paramkey"></td>
15621 <td></td>
15622 <td class="paramtype">size_t&#160;</td>
15623 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15624 </tr>
15625 <tr>
15626 <td></td>
15627 <td>)</td>
15628 <td></td><td></td>
15629 </tr>
15630 </table>
15631</div><div class="memdoc">
15632
15633<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15634
15635<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00258">258</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15636
15637<p class="reference">References <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15638<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; IsComparisonSupported,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; input0,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; input1,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; output,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; ComparisonDescriptor(ComparisonOperation::Equal));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15639</div><!-- fragment -->
15640</div>
15641</div>
15642<a id="afe39427f8974f064b838df5c7f0ebebc"></a>
15643<h2 class="memtitle"><span class="permalink"><a href="#afe39427f8974f064b838df5c7f0ebebc">&#9670;&nbsp;</a></span>IsFakeQuantizationSupported()</h2>
15644
15645<div class="memitem">
15646<div class="memproto">
15647 <table class="memname">
15648 <tr>
15649 <td class="memname">bool IsFakeQuantizationSupported </td>
15650 <td>(</td>
15651 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15652 <td class="paramname"><em>backend</em>, </td>
15653 </tr>
15654 <tr>
15655 <td class="paramkey"></td>
15656 <td></td>
15657 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15658 <td class="paramname"><em>input</em>, </td>
15659 </tr>
15660 <tr>
15661 <td class="paramkey"></td>
15662 <td></td>
15663 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.html">FakeQuantizationDescriptor</a> &amp;&#160;</td>
15664 <td class="paramname"><em>descriptor</em>, </td>
15665 </tr>
15666 <tr>
15667 <td class="paramkey"></td>
15668 <td></td>
15669 <td class="paramtype">char *&#160;</td>
15670 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15671 </tr>
15672 <tr>
15673 <td class="paramkey"></td>
15674 <td></td>
15675 <td class="paramtype">size_t&#160;</td>
15676 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15677 </tr>
15678 <tr>
15679 <td></td>
15680 <td>)</td>
15681 <td></td><td></td>
15682 </tr>
15683 </table>
15684</div><div class="memdoc">
15685
15686<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15687
15688<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00273">273</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15689
15690<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15691<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#afe39427f8974f064b838df5c7f0ebebc">IsFakeQuantizationSupported</a>, input, descriptor);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15692<div class="ttc" id="namespacearmnn_html_afe39427f8974f064b838df5c7f0ebebc"><div class="ttname"><a href="namespacearmnn.html#afe39427f8974f064b838df5c7f0ebebc">armnn::IsFakeQuantizationSupported</a></div><div class="ttdeci">bool IsFakeQuantizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const FakeQuantizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00273">LayerSupport.cpp:273</a></div></div>
15693</div><!-- fragment -->
15694</div>
15695</div>
15696<a id="ad78d822be14a8d585cd038cf0e73cd7e"></a>
15697<h2 class="memtitle"><span class="permalink"><a href="#ad78d822be14a8d585cd038cf0e73cd7e">&#9670;&nbsp;</a></span>IsFloat16()</h2>
15698
15699<div class="memitem">
15700<div class="memproto">
15701 <table class="memname">
15702 <tr>
15703 <td class="memname">bool armnn::IsFloat16 </td>
15704 <td>(</td>
15705 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
15706 <td class="paramname"><em>info</em></td><td>)</td>
15707 <td></td>
15708 </tr>
15709 </table>
15710</div><div class="memdoc">
15711
15712<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00053">53</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
15713
15714<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
15715
15716<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>, and <a class="el" href="_ref_workload_factory_8cpp_source.html#l00433">RefWorkloadFactory::CreatePad()</a>.</p>
15717<div class="fragment"><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; <span class="keywordflow">return</span> IsDataType&lt;DataType::Float16&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
15718</div><!-- fragment -->
15719</div>
15720</div>
15721<a id="a89e9c52419c572f05bf9737a7a60b267"></a>
15722<h2 class="memtitle"><span class="permalink"><a href="#a89e9c52419c572f05bf9737a7a60b267">&#9670;&nbsp;</a></span>IsFloorSupported()</h2>
15723
15724<div class="memitem">
15725<div class="memproto">
15726 <table class="memname">
15727 <tr>
15728 <td class="memname">bool IsFloorSupported </td>
15729 <td>(</td>
15730 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15731 <td class="paramname"><em>backend</em>, </td>
15732 </tr>
15733 <tr>
15734 <td class="paramkey"></td>
15735 <td></td>
15736 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15737 <td class="paramname"><em>input</em>, </td>
15738 </tr>
15739 <tr>
15740 <td class="paramkey"></td>
15741 <td></td>
15742 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15743 <td class="paramname"><em>output</em>, </td>
15744 </tr>
15745 <tr>
15746 <td class="paramkey"></td>
15747 <td></td>
15748 <td class="paramtype">char *&#160;</td>
15749 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15750 </tr>
15751 <tr>
15752 <td class="paramkey"></td>
15753 <td></td>
15754 <td class="paramtype">size_t&#160;</td>
15755 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15756 </tr>
15757 <tr>
15758 <td></td>
15759 <td>)</td>
15760 <td></td><td></td>
15761 </tr>
15762 </table>
15763</div><div class="memdoc">
15764
15765<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15766
15767<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00282">282</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15768
15769<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
15770<div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;{</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// By definition (that is, regardless of compute device), shapes and data type must match.</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (input.GetShape() != output.GetShape() || input.GetDataType() != output.GetDataType())</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a89e9c52419c572f05bf9737a7a60b267">IsFloorSupported</a>, input, output);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a89e9c52419c572f05bf9737a7a60b267"><div class="ttname"><a href="namespacearmnn.html#a89e9c52419c572f05bf9737a7a60b267">armnn::IsFloorSupported</a></div><div class="ttdeci">bool IsFloorSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00282">LayerSupport.cpp:282</a></div></div>
15771<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15772</div><!-- fragment -->
15773</div>
15774</div>
15775<a id="aa2f4e75d4a4f61b24de0dfe150952c80"></a>
15776<h2 class="memtitle"><span class="permalink"><a href="#aa2f4e75d4a4f61b24de0dfe150952c80">&#9670;&nbsp;</a></span>IsFullyConnectedSupported()</h2>
15777
15778<div class="memitem">
15779<div class="memproto">
15780 <table class="memname">
15781 <tr>
15782 <td class="memname">bool IsFullyConnectedSupported </td>
15783 <td>(</td>
15784 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15785 <td class="paramname"><em>backend</em>, </td>
15786 </tr>
15787 <tr>
15788 <td class="paramkey"></td>
15789 <td></td>
15790 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15791 <td class="paramname"><em>input</em>, </td>
15792 </tr>
15793 <tr>
15794 <td class="paramkey"></td>
15795 <td></td>
15796 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15797 <td class="paramname"><em>output</em>, </td>
15798 </tr>
15799 <tr>
15800 <td class="paramkey"></td>
15801 <td></td>
15802 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15803 <td class="paramname"><em>weights</em>, </td>
15804 </tr>
15805 <tr>
15806 <td class="paramkey"></td>
15807 <td></td>
15808 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15809 <td class="paramname"><em>biases</em>, </td>
15810 </tr>
15811 <tr>
15812 <td class="paramkey"></td>
15813 <td></td>
15814 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
15815 <td class="paramname"><em>descriptor</em>, </td>
15816 </tr>
15817 <tr>
15818 <td class="paramkey"></td>
15819 <td></td>
15820 <td class="paramtype">char *&#160;</td>
15821 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15822 </tr>
15823 <tr>
15824 <td class="paramkey"></td>
15825 <td></td>
15826 <td class="paramtype">size_t&#160;</td>
15827 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15828 </tr>
15829 <tr>
15830 <td></td>
15831 <td>)</td>
15832 <td></td><td></td>
15833 </tr>
15834 </table>
15835</div><div class="memdoc">
15836
15837<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15838
15839<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00296">296</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15840
15841<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15842<div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aa2f4e75d4a4f61b24de0dfe150952c80">IsFullyConnectedSupported</a>, input, output, weights, biases, descriptor);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa2f4e75d4a4f61b24de0dfe150952c80"><div class="ttname"><a href="namespacearmnn.html#aa2f4e75d4a4f61b24de0dfe150952c80">armnn::IsFullyConnectedSupported</a></div><div class="ttdeci">bool IsFullyConnectedSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const TensorInfo &amp;weights, const TensorInfo &amp;biases, const FullyConnectedDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00296">LayerSupport.cpp:296</a></div></div>
15843<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15844</div><!-- fragment -->
15845</div>
15846</div>
15847<a id="a658eea4e746b1e664796c48d7eaf19f0"></a>
15848<h2 class="memtitle"><span class="permalink"><a href="#a658eea4e746b1e664796c48d7eaf19f0">&#9670;&nbsp;</a></span>IsGatherSupported()</h2>
15849
15850<div class="memitem">
15851<div class="memproto">
15852 <table class="memname">
15853 <tr>
15854 <td class="memname">bool armnn::IsGatherSupported </td>
15855 <td>(</td>
15856 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15857 <td class="paramname"><em>backend</em>, </td>
15858 </tr>
15859 <tr>
15860 <td class="paramkey"></td>
15861 <td></td>
15862 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15863 <td class="paramname"><em>input0</em>, </td>
15864 </tr>
15865 <tr>
15866 <td class="paramkey"></td>
15867 <td></td>
15868 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15869 <td class="paramname"><em>input1</em>, </td>
15870 </tr>
15871 <tr>
15872 <td class="paramkey"></td>
15873 <td></td>
15874 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15875 <td class="paramname"><em>output</em>, </td>
15876 </tr>
15877 <tr>
15878 <td class="paramkey"></td>
15879 <td></td>
15880 <td class="paramtype">char *&#160;</td>
15881 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
15882 </tr>
15883 <tr>
15884 <td class="paramkey"></td>
15885 <td></td>
15886 <td class="paramtype">size_t&#160;</td>
15887 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
15888 </tr>
15889 <tr>
15890 <td></td>
15891 <td>)</td>
15892 <td></td><td></td>
15893 </tr>
15894 </table>
15895</div><div class="memdoc">
15896
15897<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00308">308</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15898
15899<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15900<div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a658eea4e746b1e664796c48d7eaf19f0">IsGatherSupported</a>, input0, input1, output);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a658eea4e746b1e664796c48d7eaf19f0"><div class="ttname"><a href="namespacearmnn.html#a658eea4e746b1e664796c48d7eaf19f0">armnn::IsGatherSupported</a></div><div class="ttdeci">bool IsGatherSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00308">LayerSupport.cpp:308</a></div></div>
15901<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15902</div><!-- fragment -->
15903</div>
15904</div>
15905<a id="adffa596b4bdecd54ca460853cd1439e2"></a>
15906<h2 class="memtitle"><span class="permalink"><a href="#adffa596b4bdecd54ca460853cd1439e2">&#9670;&nbsp;</a></span>IsGreaterSupported()</h2>
15907
15908<div class="memitem">
15909<div class="memproto">
15910 <table class="memname">
15911 <tr>
15912 <td class="memname">bool IsGreaterSupported </td>
15913 <td>(</td>
15914 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15915 <td class="paramname"><em>backend</em>, </td>
15916 </tr>
15917 <tr>
15918 <td class="paramkey"></td>
15919 <td></td>
15920 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15921 <td class="paramname"><em>input0</em>, </td>
15922 </tr>
15923 <tr>
15924 <td class="paramkey"></td>
15925 <td></td>
15926 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15927 <td class="paramname"><em>input1</em>, </td>
15928 </tr>
15929 <tr>
15930 <td class="paramkey"></td>
15931 <td></td>
15932 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15933 <td class="paramname"><em>output</em>, </td>
15934 </tr>
15935 <tr>
15936 <td class="paramkey"></td>
15937 <td></td>
15938 <td class="paramtype">char *&#160;</td>
15939 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15940 </tr>
15941 <tr>
15942 <td class="paramkey"></td>
15943 <td></td>
15944 <td class="paramtype">size_t&#160;</td>
15945 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15946 </tr>
15947 <tr>
15948 <td></td>
15949 <td>)</td>
15950 <td></td><td></td>
15951 </tr>
15952 </table>
15953</div><div class="memdoc">
15954
15955<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
15956
15957<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00318">318</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
15958
15959<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a>.</p>
15960<div class="fragment"><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; IsComparisonSupported,</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; input0,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; input1,</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; output,</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; ComparisonDescriptor(ComparisonOperation::Greater));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
15961</div><!-- fragment -->
15962</div>
15963</div>
15964<a id="a197a353aa963497d29a07796268ea5c1"></a>
15965<h2 class="memtitle"><span class="permalink"><a href="#a197a353aa963497d29a07796268ea5c1">&#9670;&nbsp;</a></span>IsInputSupported()</h2>
15966
15967<div class="memitem">
15968<div class="memproto">
15969 <table class="memname">
15970 <tr>
15971 <td class="memname">bool IsInputSupported </td>
15972 <td>(</td>
15973 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
15974 <td class="paramname"><em>backend</em>, </td>
15975 </tr>
15976 <tr>
15977 <td class="paramkey"></td>
15978 <td></td>
15979 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
15980 <td class="paramname"><em>input</em>, </td>
15981 </tr>
15982 <tr>
15983 <td class="paramkey"></td>
15984 <td></td>
15985 <td class="paramtype">char *&#160;</td>
15986 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15987 </tr>
15988 <tr>
15989 <td class="paramkey"></td>
15990 <td></td>
15991 <td class="paramtype">size_t&#160;</td>
15992 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15993 </tr>
15994 <tr>
15995 <td></td>
15996 <td>)</td>
15997 <td></td><td></td>
15998 </tr>
15999 </table>
16000</div><div class="memdoc">
16001
16002<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16003
16004<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00333">333</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16005
16006<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16007<div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;{</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a197a353aa963497d29a07796268ea5c1">IsInputSupported</a>, input);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16008<div class="ttc" id="namespacearmnn_html_a197a353aa963497d29a07796268ea5c1"><div class="ttname"><a href="namespacearmnn.html#a197a353aa963497d29a07796268ea5c1">armnn::IsInputSupported</a></div><div class="ttdeci">bool IsInputSupported(const BackendId &amp;backend, const TensorInfo &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00333">LayerSupport.cpp:333</a></div></div>
16009</div><!-- fragment -->
16010</div>
16011</div>
16012<a id="a0906736b90464c0eb3ce5a87e05ebeee"></a>
16013<h2 class="memtitle"><span class="permalink"><a href="#a0906736b90464c0eb3ce5a87e05ebeee">&#9670;&nbsp;</a></span>IsL2NormalizationSupported()</h2>
16014
16015<div class="memitem">
16016<div class="memproto">
16017 <table class="memname">
16018 <tr>
16019 <td class="memname">bool IsL2NormalizationSupported </td>
16020 <td>(</td>
16021 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16022 <td class="paramname"><em>backend</em>, </td>
16023 </tr>
16024 <tr>
16025 <td class="paramkey"></td>
16026 <td></td>
16027 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16028 <td class="paramname"><em>input</em>, </td>
16029 </tr>
16030 <tr>
16031 <td class="paramkey"></td>
16032 <td></td>
16033 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16034 <td class="paramname"><em>output</em>, </td>
16035 </tr>
16036 <tr>
16037 <td class="paramkey"></td>
16038 <td></td>
16039 <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;&#160;</td>
16040 <td class="paramname"><em>descriptor</em>, </td>
16041 </tr>
16042 <tr>
16043 <td class="paramkey"></td>
16044 <td></td>
16045 <td class="paramtype">char *&#160;</td>
16046 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16047 </tr>
16048 <tr>
16049 <td class="paramkey"></td>
16050 <td></td>
16051 <td class="paramtype">size_t&#160;</td>
16052 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16053 </tr>
16054 <tr>
16055 <td></td>
16056 <td>)</td>
16057 <td></td><td></td>
16058 </tr>
16059 </table>
16060</div><div class="memdoc">
16061
16062<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16063
16064<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00342">342</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16065
16066<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16067<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;{</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a0906736b90464c0eb3ce5a87e05ebeee">IsL2NormalizationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16068<div class="ttc" id="namespacearmnn_html_a0906736b90464c0eb3ce5a87e05ebeee"><div class="ttname"><a href="namespacearmnn.html#a0906736b90464c0eb3ce5a87e05ebeee">armnn::IsL2NormalizationSupported</a></div><div class="ttdeci">bool IsL2NormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const L2NormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00342">LayerSupport.cpp:342</a></div></div>
16069</div><!-- fragment -->
16070</div>
16071</div>
16072<a id="a3e8b3af7771ffb37ede50aa2d9cc3af6"></a>
16073<h2 class="memtitle"><span class="permalink"><a href="#a3e8b3af7771ffb37ede50aa2d9cc3af6">&#9670;&nbsp;</a></span>IsLstmSupported()</h2>
16074
16075<div class="memitem">
16076<div class="memproto">
16077 <table class="memname">
16078 <tr>
16079 <td class="memname">bool IsLstmSupported </td>
16080 <td>(</td>
16081 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16082 <td class="paramname"><em>backend</em>, </td>
16083 </tr>
16084 <tr>
16085 <td class="paramkey"></td>
16086 <td></td>
16087 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16088 <td class="paramname"><em>input</em>, </td>
16089 </tr>
16090 <tr>
16091 <td class="paramkey"></td>
16092 <td></td>
16093 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16094 <td class="paramname"><em>outputStateIn</em>, </td>
16095 </tr>
16096 <tr>
16097 <td class="paramkey"></td>
16098 <td></td>
16099 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16100 <td class="paramname"><em>cellStateIn</em>, </td>
16101 </tr>
16102 <tr>
16103 <td class="paramkey"></td>
16104 <td></td>
16105 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16106 <td class="paramname"><em>scratchBuffer</em>, </td>
16107 </tr>
16108 <tr>
16109 <td class="paramkey"></td>
16110 <td></td>
16111 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16112 <td class="paramname"><em>outputStateOut</em>, </td>
16113 </tr>
16114 <tr>
16115 <td class="paramkey"></td>
16116 <td></td>
16117 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16118 <td class="paramname"><em>cellStateOut</em>, </td>
16119 </tr>
16120 <tr>
16121 <td class="paramkey"></td>
16122 <td></td>
16123 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16124 <td class="paramname"><em>output</em>, </td>
16125 </tr>
16126 <tr>
16127 <td class="paramkey"></td>
16128 <td></td>
16129 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;&#160;</td>
16130 <td class="paramname"><em>descriptor</em>, </td>
16131 </tr>
16132 <tr>
16133 <td class="paramkey"></td>
16134 <td></td>
16135 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;&#160;</td>
16136 <td class="paramname"><em>paramsInfo</em>, </td>
16137 </tr>
16138 <tr>
16139 <td class="paramkey"></td>
16140 <td></td>
16141 <td class="paramtype">char *&#160;</td>
16142 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16143 </tr>
16144 <tr>
16145 <td class="paramkey"></td>
16146 <td></td>
16147 <td class="paramtype">size_t&#160;</td>
16148 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16149 </tr>
16150 <tr>
16151 <td></td>
16152 <td>)</td>
16153 <td></td><td></td>
16154 </tr>
16155 </table>
16156</div><div class="memdoc">
16157
16158<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16159
16160<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00352">352</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16161
16162<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16163<div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a3e8b3af7771ffb37ede50aa2d9cc3af6">IsLstmSupported</a>, input, outputStateIn, cellStateIn,</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; scratchBuffer, outputStateOut, cellStateOut,</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; output, descriptor, paramsInfo);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16164<div class="ttc" id="namespacearmnn_html_a3e8b3af7771ffb37ede50aa2d9cc3af6"><div class="ttname"><a href="namespacearmnn.html#a3e8b3af7771ffb37ede50aa2d9cc3af6">armnn::IsLstmSupported</a></div><div class="ttdeci">bool IsLstmSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;outputStateIn, const TensorInfo &amp;cellStateIn, const TensorInfo &amp;scratchBuffer, const TensorInfo &amp;outputStateOut, const TensorInfo &amp;cellStateOut, const TensorInfo &amp;output, const LstmDescriptor &amp;descriptor, const LstmInputParamsInfo &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00352">LayerSupport.cpp:352</a></div></div>
16165</div><!-- fragment -->
16166</div>
16167</div>
16168<a id="a3b85a270baf98ea6b040bd395c2d700a"></a>
16169<h2 class="memtitle"><span class="permalink"><a href="#a3b85a270baf98ea6b040bd395c2d700a">&#9670;&nbsp;</a></span>IsMaximumSupported()</h2>
16170
16171<div class="memitem">
16172<div class="memproto">
16173 <table class="memname">
16174 <tr>
16175 <td class="memname">bool IsMaximumSupported </td>
16176 <td>(</td>
16177 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16178 <td class="paramname"><em>backend</em>, </td>
16179 </tr>
16180 <tr>
16181 <td class="paramkey"></td>
16182 <td></td>
16183 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16184 <td class="paramname"><em>input0</em>, </td>
16185 </tr>
16186 <tr>
16187 <td class="paramkey"></td>
16188 <td></td>
16189 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16190 <td class="paramname"><em>input1</em>, </td>
16191 </tr>
16192 <tr>
16193 <td class="paramkey"></td>
16194 <td></td>
16195 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16196 <td class="paramname"><em>output</em>, </td>
16197 </tr>
16198 <tr>
16199 <td class="paramkey"></td>
16200 <td></td>
16201 <td class="paramtype">char *&#160;</td>
16202 <td class="paramname"><em>reasonIfUnSupported</em> = <code>nullptr</code>, </td>
16203 </tr>
16204 <tr>
16205 <td class="paramkey"></td>
16206 <td></td>
16207 <td class="paramtype">size_t&#160;</td>
16208 <td class="paramname"><em>reasonIfUnSupportedMaxLength</em> = <code>0</code>&#160;</td>
16209 </tr>
16210 <tr>
16211 <td></td>
16212 <td>)</td>
16213 <td></td><td></td>
16214 </tr>
16215 </table>
16216</div><div class="memdoc">
16217
16218<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16219
16220<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00365">365</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16221
16222<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16223<div class="fragment"><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a3b85a270baf98ea6b040bd395c2d700a">IsMaximumSupported</a>, input0, input1, output);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a3b85a270baf98ea6b040bd395c2d700a"><div class="ttname"><a href="namespacearmnn.html#a3b85a270baf98ea6b040bd395c2d700a">armnn::IsMaximumSupported</a></div><div class="ttdeci">bool IsMaximumSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnSupported=nullptr, size_t reasonIfUnSupportedMaxLength=0)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00365">LayerSupport.cpp:365</a></div></div>
16224<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16225</div><!-- fragment -->
16226</div>
16227</div>
16228<a id="a0cdc60b4988b2193b97590e35f34a07e"></a>
16229<h2 class="memtitle"><span class="permalink"><a href="#a0cdc60b4988b2193b97590e35f34a07e">&#9670;&nbsp;</a></span>IsMeanSupported()</h2>
16230
16231<div class="memitem">
16232<div class="memproto">
16233 <table class="memname">
16234 <tr>
16235 <td class="memname">bool IsMeanSupported </td>
16236 <td>(</td>
16237 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16238 <td class="paramname"><em>backend</em>, </td>
16239 </tr>
16240 <tr>
16241 <td class="paramkey"></td>
16242 <td></td>
16243 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16244 <td class="paramname"><em>input</em>, </td>
16245 </tr>
16246 <tr>
16247 <td class="paramkey"></td>
16248 <td></td>
16249 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16250 <td class="paramname"><em>output</em>, </td>
16251 </tr>
16252 <tr>
16253 <td class="paramkey"></td>
16254 <td></td>
16255 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;&#160;</td>
16256 <td class="paramname"><em>descriptor</em>, </td>
16257 </tr>
16258 <tr>
16259 <td class="paramkey"></td>
16260 <td></td>
16261 <td class="paramtype">char *&#160;</td>
16262 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16263 </tr>
16264 <tr>
16265 <td class="paramkey"></td>
16266 <td></td>
16267 <td class="paramtype">size_t&#160;</td>
16268 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16269 </tr>
16270 <tr>
16271 <td></td>
16272 <td>)</td>
16273 <td></td><td></td>
16274 </tr>
16275 </table>
16276</div><div class="memdoc">
16277
16278<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16279
16280<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00375">375</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16281
16282<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16283<div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a0cdc60b4988b2193b97590e35f34a07e">IsMeanSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16284<div class="ttc" id="namespacearmnn_html_a0cdc60b4988b2193b97590e35f34a07e"><div class="ttname"><a href="namespacearmnn.html#a0cdc60b4988b2193b97590e35f34a07e">armnn::IsMeanSupported</a></div><div class="ttdeci">bool IsMeanSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const MeanDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00375">LayerSupport.cpp:375</a></div></div>
16285</div><!-- fragment -->
16286</div>
16287</div>
16288<a id="a87ac712443e46c0deb38ab0eaf637e70"></a>
16289<h2 class="memtitle"><span class="permalink"><a href="#a87ac712443e46c0deb38ab0eaf637e70">&#9670;&nbsp;</a></span>IsMemCopySupported()</h2>
16290
16291<div class="memitem">
16292<div class="memproto">
16293 <table class="memname">
16294 <tr>
16295 <td class="memname">bool IsMemCopySupported </td>
16296 <td>(</td>
16297 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16298 <td class="paramname"><em>backend</em>, </td>
16299 </tr>
16300 <tr>
16301 <td class="paramkey"></td>
16302 <td></td>
16303 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16304 <td class="paramname"><em>input</em>, </td>
16305 </tr>
16306 <tr>
16307 <td class="paramkey"></td>
16308 <td></td>
16309 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16310 <td class="paramname"><em>output</em>, </td>
16311 </tr>
16312 <tr>
16313 <td class="paramkey"></td>
16314 <td></td>
16315 <td class="paramtype">char *&#160;</td>
16316 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16317 </tr>
16318 <tr>
16319 <td class="paramkey"></td>
16320 <td></td>
16321 <td class="paramtype">size_t&#160;</td>
16322 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16323 </tr>
16324 <tr>
16325 <td></td>
16326 <td>)</td>
16327 <td></td><td></td>
16328 </tr>
16329 </table>
16330</div><div class="memdoc">
16331
16332<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16333
16334<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00385">385</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16335
16336<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16337<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a87ac712443e46c0deb38ab0eaf637e70">IsMemCopySupported</a>, input, output);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a87ac712443e46c0deb38ab0eaf637e70"><div class="ttname"><a href="namespacearmnn.html#a87ac712443e46c0deb38ab0eaf637e70">armnn::IsMemCopySupported</a></div><div class="ttdeci">bool IsMemCopySupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00385">LayerSupport.cpp:385</a></div></div>
16338<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16339</div><!-- fragment -->
16340</div>
16341</div>
16342<a id="a99260bf94e4f8d0c8a527970cd52ce93"></a>
16343<h2 class="memtitle"><span class="permalink"><a href="#a99260bf94e4f8d0c8a527970cd52ce93">&#9670;&nbsp;</a></span>IsMemImportSupported()</h2>
16344
16345<div class="memitem">
16346<div class="memproto">
16347 <table class="memname">
16348 <tr>
16349 <td class="memname">bool armnn::IsMemImportSupported </td>
16350 <td>(</td>
16351 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16352 <td class="paramname"><em>backend</em>, </td>
16353 </tr>
16354 <tr>
16355 <td class="paramkey"></td>
16356 <td></td>
16357 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16358 <td class="paramname"><em>input</em>, </td>
16359 </tr>
16360 <tr>
16361 <td class="paramkey"></td>
16362 <td></td>
16363 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16364 <td class="paramname"><em>output</em>, </td>
16365 </tr>
16366 <tr>
16367 <td class="paramkey"></td>
16368 <td></td>
16369 <td class="paramtype">char *&#160;</td>
16370 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
16371 </tr>
16372 <tr>
16373 <td class="paramkey"></td>
16374 <td></td>
16375 <td class="paramtype">size_t&#160;</td>
16376 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
16377 </tr>
16378 <tr>
16379 <td></td>
16380 <td>)</td>
16381 <td></td><td></td>
16382 </tr>
16383 </table>
16384</div><div class="memdoc">
16385
16386<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00394">394</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16387
16388<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16389<div class="fragment"><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a99260bf94e4f8d0c8a527970cd52ce93">IsMemImportSupported</a>, input, output);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16390<div class="ttc" id="namespacearmnn_html_a99260bf94e4f8d0c8a527970cd52ce93"><div class="ttname"><a href="namespacearmnn.html#a99260bf94e4f8d0c8a527970cd52ce93">armnn::IsMemImportSupported</a></div><div class="ttdeci">bool IsMemImportSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00394">LayerSupport.cpp:394</a></div></div>
16391</div><!-- fragment -->
16392</div>
16393</div>
16394<a id="a6e2c7ec2b8d47bde2bc9fa04bb2091f6"></a>
16395<h2 class="memtitle"><span class="permalink"><a href="#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[1/2]</span></h2>
16396
16397<div class="memitem">
16398<div class="memproto">
16399 <table class="memname">
16400 <tr>
16401 <td class="memname">bool armnn::IsMergerSupported </td>
16402 <td>(</td>
16403 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16404 <td class="paramname"><em>backend</em>, </td>
16405 </tr>
16406 <tr>
16407 <td class="paramkey"></td>
16408 <td></td>
16409 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
16410 <td class="paramname"><em>inputs</em>, </td>
16411 </tr>
16412 <tr>
16413 <td class="paramkey"></td>
16414 <td></td>
16415 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16416 <td class="paramname"><em>output</em>, </td>
16417 </tr>
16418 <tr>
16419 <td class="paramkey"></td>
16420 <td></td>
16421 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
16422 <td class="paramname"><em>descriptor</em>, </td>
16423 </tr>
16424 <tr>
16425 <td class="paramkey"></td>
16426 <td></td>
16427 <td class="paramtype">char *&#160;</td>
16428 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16429 </tr>
16430 <tr>
16431 <td class="paramkey"></td>
16432 <td></td>
16433 <td class="paramtype">size_t&#160;</td>
16434 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16435 </tr>
16436 <tr>
16437 <td></td>
16438 <td>)</td>
16439 <td></td><td></td>
16440 </tr>
16441 </table>
16442</div><div class="memdoc">
16443
16444<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16445
16446<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00414">IsMergerSupported()</a>.</p>
16447
16448</div>
16449</div>
16450<a id="adf5de1faf58e2eea99a932883edc3ed0"></a>
16451<h2 class="memtitle"><span class="permalink"><a href="#adf5de1faf58e2eea99a932883edc3ed0">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[2/2]</span></h2>
16452
16453<div class="memitem">
16454<div class="memproto">
16455 <table class="memname">
16456 <tr>
16457 <td class="memname">bool armnn::IsMergerSupported </td>
16458 <td>(</td>
16459 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16460 <td class="paramname"><em>backend</em>, </td>
16461 </tr>
16462 <tr>
16463 <td class="paramkey"></td>
16464 <td></td>
16465 <td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
16466 <td class="paramname"><em>inputs</em>, </td>
16467 </tr>
16468 <tr>
16469 <td class="paramkey"></td>
16470 <td></td>
16471 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16472 <td class="paramname"><em>output</em>, </td>
16473 </tr>
16474 <tr>
16475 <td class="paramkey"></td>
16476 <td></td>
16477 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
16478 <td class="paramname"><em>descriptor</em>, </td>
16479 </tr>
16480 <tr>
16481 <td class="paramkey"></td>
16482 <td></td>
16483 <td class="paramtype">char *&#160;</td>
16484 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
16485 </tr>
16486 <tr>
16487 <td class="paramkey"></td>
16488 <td></td>
16489 <td class="paramtype">size_t&#160;</td>
16490 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
16491 </tr>
16492 <tr>
16493 <td></td>
16494 <td>)</td>
16495 <td></td><td></td>
16496 </tr>
16497 </table>
16498</div><div class="memdoc">
16499
16500<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00414">414</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16501
16502<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">IsMergerSupported()</a>.</p>
16503<div class="fragment"><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;{</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; BOOST_ASSERT(inputs.size() &gt; 0);</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"> 423</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#adf5de1faf58e2eea99a932883edc3ed0">IsMergerSupported</a>, inputs, output, descriptor);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
16504<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16505<div class="ttc" id="namespacearmnn_html_adf5de1faf58e2eea99a932883edc3ed0"><div class="ttname"><a href="namespacearmnn.html#adf5de1faf58e2eea99a932883edc3ed0">armnn::IsMergerSupported</a></div><div class="ttdeci">bool IsMergerSupported(const BackendId &amp;backend, std::vector&lt; const TensorInfo *&gt; inputs, const TensorInfo &amp;output, const OriginsDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00414">LayerSupport.cpp:414</a></div></div>
16506<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
16507</div><!-- fragment -->
16508</div>
16509</div>
16510<a id="a7f518a73b9f7e41c5584c1f49bca8568"></a>
16511<h2 class="memtitle"><span class="permalink"><a href="#a7f518a73b9f7e41c5584c1f49bca8568">&#9670;&nbsp;</a></span>IsMergeSupported()</h2>
16512
16513<div class="memitem">
16514<div class="memproto">
16515 <table class="memname">
16516 <tr>
16517 <td class="memname">bool IsMergeSupported </td>
16518 <td>(</td>
16519 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16520 <td class="paramname"><em>backend</em>, </td>
16521 </tr>
16522 <tr>
16523 <td class="paramkey"></td>
16524 <td></td>
16525 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16526 <td class="paramname"><em>input0</em>, </td>
16527 </tr>
16528 <tr>
16529 <td class="paramkey"></td>
16530 <td></td>
16531 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16532 <td class="paramname"><em>input1</em>, </td>
16533 </tr>
16534 <tr>
16535 <td class="paramkey"></td>
16536 <td></td>
16537 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16538 <td class="paramname"><em>output</em>, </td>
16539 </tr>
16540 <tr>
16541 <td class="paramkey"></td>
16542 <td></td>
16543 <td class="paramtype">char *&#160;</td>
16544 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16545 </tr>
16546 <tr>
16547 <td class="paramkey"></td>
16548 <td></td>
16549 <td class="paramtype">size_t&#160;</td>
16550 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16551 </tr>
16552 <tr>
16553 <td></td>
16554 <td>)</td>
16555 <td></td><td></td>
16556 </tr>
16557 </table>
16558</div><div class="memdoc">
16559
16560<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16561
16562<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00403">403</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16563
16564<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16565<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a7f518a73b9f7e41c5584c1f49bca8568">IsMergeSupported</a>, input0, input1, output);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a7f518a73b9f7e41c5584c1f49bca8568"><div class="ttname"><a href="namespacearmnn.html#a7f518a73b9f7e41c5584c1f49bca8568">armnn::IsMergeSupported</a></div><div class="ttdeci">bool IsMergeSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00403">LayerSupport.cpp:403</a></div></div>
16566<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16567</div><!-- fragment -->
16568</div>
16569</div>
16570<a id="ab99d3d944b80f47bd1be70f63cc60abb"></a>
16571<h2 class="memtitle"><span class="permalink"><a href="#ab99d3d944b80f47bd1be70f63cc60abb">&#9670;&nbsp;</a></span>IsMinimumSupported()</h2>
16572
16573<div class="memitem">
16574<div class="memproto">
16575 <table class="memname">
16576 <tr>
16577 <td class="memname">bool IsMinimumSupported </td>
16578 <td>(</td>
16579 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16580 <td class="paramname"><em>backend</em>, </td>
16581 </tr>
16582 <tr>
16583 <td class="paramkey"></td>
16584 <td></td>
16585 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16586 <td class="paramname"><em>input0</em>, </td>
16587 </tr>
16588 <tr>
16589 <td class="paramkey"></td>
16590 <td></td>
16591 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16592 <td class="paramname"><em>input1</em>, </td>
16593 </tr>
16594 <tr>
16595 <td class="paramkey"></td>
16596 <td></td>
16597 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16598 <td class="paramname"><em>output</em>, </td>
16599 </tr>
16600 <tr>
16601 <td class="paramkey"></td>
16602 <td></td>
16603 <td class="paramtype">char *&#160;</td>
16604 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16605 </tr>
16606 <tr>
16607 <td class="paramkey"></td>
16608 <td></td>
16609 <td class="paramtype">size_t&#160;</td>
16610 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16611 </tr>
16612 <tr>
16613 <td></td>
16614 <td>)</td>
16615 <td></td><td></td>
16616 </tr>
16617 </table>
16618</div><div class="memdoc">
16619
16620<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16621
16622<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00428">428</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16623
16624<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16625<div class="fragment"><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;{</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#ab99d3d944b80f47bd1be70f63cc60abb">IsMinimumSupported</a>, input0, input1, output);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16626<div class="ttc" id="namespacearmnn_html_ab99d3d944b80f47bd1be70f63cc60abb"><div class="ttname"><a href="namespacearmnn.html#ab99d3d944b80f47bd1be70f63cc60abb">armnn::IsMinimumSupported</a></div><div class="ttdeci">bool IsMinimumSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00428">LayerSupport.cpp:428</a></div></div>
16627</div><!-- fragment -->
16628</div>
16629</div>
16630<a id="a56ff60c2946bf0b7e772007acce0d7ec"></a>
16631<h2 class="memtitle"><span class="permalink"><a href="#a56ff60c2946bf0b7e772007acce0d7ec">&#9670;&nbsp;</a></span>IsMultiplicationSupported()</h2>
16632
16633<div class="memitem">
16634<div class="memproto">
16635 <table class="memname">
16636 <tr>
16637 <td class="memname">bool IsMultiplicationSupported </td>
16638 <td>(</td>
16639 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16640 <td class="paramname"><em>backend</em>, </td>
16641 </tr>
16642 <tr>
16643 <td class="paramkey"></td>
16644 <td></td>
16645 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16646 <td class="paramname"><em>input0</em>, </td>
16647 </tr>
16648 <tr>
16649 <td class="paramkey"></td>
16650 <td></td>
16651 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16652 <td class="paramname"><em>input1</em>, </td>
16653 </tr>
16654 <tr>
16655 <td class="paramkey"></td>
16656 <td></td>
16657 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16658 <td class="paramname"><em>output</em>, </td>
16659 </tr>
16660 <tr>
16661 <td class="paramkey"></td>
16662 <td></td>
16663 <td class="paramtype">char *&#160;</td>
16664 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16665 </tr>
16666 <tr>
16667 <td class="paramkey"></td>
16668 <td></td>
16669 <td class="paramtype">size_t&#160;</td>
16670 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16671 </tr>
16672 <tr>
16673 <td></td>
16674 <td>)</td>
16675 <td></td><td></td>
16676 </tr>
16677 </table>
16678</div><div class="memdoc">
16679
16680<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16681
16682<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00438">438</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16683
16684<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16685<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a56ff60c2946bf0b7e772007acce0d7ec">IsMultiplicationSupported</a>, input0, input1, output);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16686<div class="ttc" id="namespacearmnn_html_a56ff60c2946bf0b7e772007acce0d7ec"><div class="ttname"><a href="namespacearmnn.html#a56ff60c2946bf0b7e772007acce0d7ec">armnn::IsMultiplicationSupported</a></div><div class="ttdeci">bool IsMultiplicationSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00438">LayerSupport.cpp:438</a></div></div>
16687</div><!-- fragment -->
16688</div>
16689</div>
16690<a id="a754b0ac19fd6341ce2b5f480c3b35e8e"></a>
16691<h2 class="memtitle"><span class="permalink"><a href="#a754b0ac19fd6341ce2b5f480c3b35e8e">&#9670;&nbsp;</a></span>IsNormalizationSupported()</h2>
16692
16693<div class="memitem">
16694<div class="memproto">
16695 <table class="memname">
16696 <tr>
16697 <td class="memname">bool IsNormalizationSupported </td>
16698 <td>(</td>
16699 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16700 <td class="paramname"><em>backend</em>, </td>
16701 </tr>
16702 <tr>
16703 <td class="paramkey"></td>
16704 <td></td>
16705 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16706 <td class="paramname"><em>input</em>, </td>
16707 </tr>
16708 <tr>
16709 <td class="paramkey"></td>
16710 <td></td>
16711 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16712 <td class="paramname"><em>output</em>, </td>
16713 </tr>
16714 <tr>
16715 <td class="paramkey"></td>
16716 <td></td>
16717 <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;&#160;</td>
16718 <td class="paramname"><em>descriptor</em>, </td>
16719 </tr>
16720 <tr>
16721 <td class="paramkey"></td>
16722 <td></td>
16723 <td class="paramtype">char *&#160;</td>
16724 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16725 </tr>
16726 <tr>
16727 <td class="paramkey"></td>
16728 <td></td>
16729 <td class="paramtype">size_t&#160;</td>
16730 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16731 </tr>
16732 <tr>
16733 <td></td>
16734 <td>)</td>
16735 <td></td><td></td>
16736 </tr>
16737 </table>
16738</div><div class="memdoc">
16739
16740<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16741
16742<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00448">448</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16743
16744<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16745<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a754b0ac19fd6341ce2b5f480c3b35e8e">IsNormalizationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a754b0ac19fd6341ce2b5f480c3b35e8e"><div class="ttname"><a href="namespacearmnn.html#a754b0ac19fd6341ce2b5f480c3b35e8e">armnn::IsNormalizationSupported</a></div><div class="ttdeci">bool IsNormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const NormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00448">LayerSupport.cpp:448</a></div></div>
16746<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16747</div><!-- fragment -->
16748</div>
16749</div>
16750<a id="ad05c0670c947d35d39b3b0217e9975cf"></a>
16751<h2 class="memtitle"><span class="permalink"><a href="#ad05c0670c947d35d39b3b0217e9975cf">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[1/4]</span></h2>
16752
16753<div class="memitem">
16754<div class="memproto">
16755 <table class="memname">
16756 <tr>
16757 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
16758 <td>(</td>
16759 <td class="paramtype">const QueueDescriptorType &amp;&#160;</td>
16760 <td class="paramname"></td><td>)</td>
16761 <td></td>
16762 </tr>
16763 </table>
16764</div><div class="memdoc">
16765
16766<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00019">19</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
16767<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div></div><!-- fragment -->
16768</div>
16769</div>
16770<a id="a93e7b76d19b33076b2a4eae44014d5ea"></a>
16771<h2 class="memtitle"><span class="permalink"><a href="#a93e7b76d19b33076b2a4eae44014d5ea">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[2/4]</span></h2>
16772
16773<div class="memitem">
16774<div class="memproto">
16775 <table class="memname">
16776 <tr>
16777 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
16778 <td>(</td>
16779 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.html">MemCopyQueueDescriptor</a> &amp;&#160;</td>
16780 <td class="paramname"></td><td>)</td>
16781 <td></td>
16782 </tr>
16783 </table>
16784</div><div class="memdoc">
16785
16786<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00022">22</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
16787<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
16788</div>
16789</div>
16790<a id="a05323af66b9f762e269a27562a2bbdd0"></a>
16791<h2 class="memtitle"><span class="permalink"><a href="#a05323af66b9f762e269a27562a2bbdd0">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[3/4]</span></h2>
16792
16793<div class="memitem">
16794<div class="memproto">
16795 <table class="memname">
16796 <tr>
16797 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
16798 <td>(</td>
16799 <td class="paramtype">const <a class="el" href="structarmnn_1_1_constant_queue_descriptor.html">ConstantQueueDescriptor</a> &amp;&#160;</td>
16800 <td class="paramname"></td><td>)</td>
16801 <td></td>
16802 </tr>
16803 </table>
16804</div><div class="memdoc">
16805
16806<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00025">25</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
16807<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
16808</div>
16809</div>
16810<a id="a91332212b6a2cc9c0ea32af03c600b4f"></a>
16811<h2 class="memtitle"><span class="permalink"><a href="#a91332212b6a2cc9c0ea32af03c600b4f">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[4/4]</span></h2>
16812
16813<div class="memitem">
16814<div class="memproto">
16815 <table class="memname">
16816 <tr>
16817 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
16818 <td>(</td>
16819 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_queue_descriptor.html">PermuteQueueDescriptor</a> &amp;&#160;</td>
16820 <td class="paramname"></td><td>)</td>
16821 <td></td>
16822 </tr>
16823 </table>
16824</div><div class="memdoc">
16825
16826<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.html#l00028">28</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.html">RefWorkloadFactory.hpp</a>.</p>
16827<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
16828</div>
16829</div>
16830<a id="a701cecec7714cf8bc9dca804f473610d"></a>
16831<h2 class="memtitle"><span class="permalink"><a href="#a701cecec7714cf8bc9dca804f473610d">&#9670;&nbsp;</a></span>IsOutputSupported()</h2>
16832
16833<div class="memitem">
16834<div class="memproto">
16835 <table class="memname">
16836 <tr>
16837 <td class="memname">bool IsOutputSupported </td>
16838 <td>(</td>
16839 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16840 <td class="paramname"><em>backend</em>, </td>
16841 </tr>
16842 <tr>
16843 <td class="paramkey"></td>
16844 <td></td>
16845 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16846 <td class="paramname"><em>output</em>, </td>
16847 </tr>
16848 <tr>
16849 <td class="paramkey"></td>
16850 <td></td>
16851 <td class="paramtype">char *&#160;</td>
16852 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16853 </tr>
16854 <tr>
16855 <td class="paramkey"></td>
16856 <td></td>
16857 <td class="paramtype">size_t&#160;</td>
16858 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16859 </tr>
16860 <tr>
16861 <td></td>
16862 <td>)</td>
16863 <td></td><td></td>
16864 </tr>
16865 </table>
16866</div><div class="memdoc">
16867
16868<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16869
16870<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00458">458</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16871
16872<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16873<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a701cecec7714cf8bc9dca804f473610d">IsOutputSupported</a>, output);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16874<div class="ttc" id="namespacearmnn_html_a701cecec7714cf8bc9dca804f473610d"><div class="ttname"><a href="namespacearmnn.html#a701cecec7714cf8bc9dca804f473610d">armnn::IsOutputSupported</a></div><div class="ttdeci">bool IsOutputSupported(const BackendId &amp;backend, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00458">LayerSupport.cpp:458</a></div></div>
16875</div><!-- fragment -->
16876</div>
16877</div>
16878<a id="a515e8a98d7ef9ecda64a2e1e5298461a"></a>
16879<h2 class="memtitle"><span class="permalink"><a href="#a515e8a98d7ef9ecda64a2e1e5298461a">&#9670;&nbsp;</a></span>IsPadSupported()</h2>
16880
16881<div class="memitem">
16882<div class="memproto">
16883 <table class="memname">
16884 <tr>
16885 <td class="memname">bool IsPadSupported </td>
16886 <td>(</td>
16887 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16888 <td class="paramname"><em>backend</em>, </td>
16889 </tr>
16890 <tr>
16891 <td class="paramkey"></td>
16892 <td></td>
16893 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16894 <td class="paramname"><em>input</em>, </td>
16895 </tr>
16896 <tr>
16897 <td class="paramkey"></td>
16898 <td></td>
16899 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16900 <td class="paramname"><em>output</em>, </td>
16901 </tr>
16902 <tr>
16903 <td class="paramkey"></td>
16904 <td></td>
16905 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;&#160;</td>
16906 <td class="paramname"><em>descriptor</em>, </td>
16907 </tr>
16908 <tr>
16909 <td class="paramkey"></td>
16910 <td></td>
16911 <td class="paramtype">char *&#160;</td>
16912 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16913 </tr>
16914 <tr>
16915 <td class="paramkey"></td>
16916 <td></td>
16917 <td class="paramtype">size_t&#160;</td>
16918 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16919 </tr>
16920 <tr>
16921 <td></td>
16922 <td>)</td>
16923 <td></td><td></td>
16924 </tr>
16925 </table>
16926</div><div class="memdoc">
16927
16928<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16929
16930<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00466">466</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16931
16932<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16933<div class="fragment"><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;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a515e8a98d7ef9ecda64a2e1e5298461a">IsPadSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16934<div class="ttc" id="namespacearmnn_html_a515e8a98d7ef9ecda64a2e1e5298461a"><div class="ttname"><a href="namespacearmnn.html#a515e8a98d7ef9ecda64a2e1e5298461a">armnn::IsPadSupported</a></div><div class="ttdeci">bool IsPadSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const PadDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00466">LayerSupport.cpp:466</a></div></div>
16935</div><!-- fragment -->
16936</div>
16937</div>
16938<a id="aa3a1bea3b3cd5611f13c06020dababc4"></a>
16939<h2 class="memtitle"><span class="permalink"><a href="#aa3a1bea3b3cd5611f13c06020dababc4">&#9670;&nbsp;</a></span>IsPermuteSupported()</h2>
16940
16941<div class="memitem">
16942<div class="memproto">
16943 <table class="memname">
16944 <tr>
16945 <td class="memname">bool IsPermuteSupported </td>
16946 <td>(</td>
16947 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
16948 <td class="paramname"><em>backend</em>, </td>
16949 </tr>
16950 <tr>
16951 <td class="paramkey"></td>
16952 <td></td>
16953 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16954 <td class="paramname"><em>input</em>, </td>
16955 </tr>
16956 <tr>
16957 <td class="paramkey"></td>
16958 <td></td>
16959 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
16960 <td class="paramname"><em>output</em>, </td>
16961 </tr>
16962 <tr>
16963 <td class="paramkey"></td>
16964 <td></td>
16965 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;&#160;</td>
16966 <td class="paramname"><em>descriptor</em>, </td>
16967 </tr>
16968 <tr>
16969 <td class="paramkey"></td>
16970 <td></td>
16971 <td class="paramtype">char *&#160;</td>
16972 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16973 </tr>
16974 <tr>
16975 <td class="paramkey"></td>
16976 <td></td>
16977 <td class="paramtype">size_t&#160;</td>
16978 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16979 </tr>
16980 <tr>
16981 <td></td>
16982 <td>)</td>
16983 <td></td><td></td>
16984 </tr>
16985 </table>
16986</div><div class="memdoc">
16987
16988<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
16989
16990<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00501">501</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
16991
16992<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16993<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aa3a1bea3b3cd5611f13c06020dababc4">IsPermuteSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
16994<div class="ttc" id="namespacearmnn_html_aa3a1bea3b3cd5611f13c06020dababc4"><div class="ttname"><a href="namespacearmnn.html#aa3a1bea3b3cd5611f13c06020dababc4">armnn::IsPermuteSupported</a></div><div class="ttdeci">bool IsPermuteSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const PermuteDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00501">LayerSupport.cpp:501</a></div></div>
16995</div><!-- fragment -->
16996</div>
16997</div>
16998<a id="aea548aa1485adbeeb3e393a13bb6bff8"></a>
16999<h2 class="memtitle"><span class="permalink"><a href="#aea548aa1485adbeeb3e393a13bb6bff8">&#9670;&nbsp;</a></span>IsPooling2dSupported()</h2>
17000
17001<div class="memitem">
17002<div class="memproto">
17003 <table class="memname">
17004 <tr>
17005 <td class="memname">bool IsPooling2dSupported </td>
17006 <td>(</td>
17007 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17008 <td class="paramname"><em>backend</em>, </td>
17009 </tr>
17010 <tr>
17011 <td class="paramkey"></td>
17012 <td></td>
17013 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17014 <td class="paramname"><em>input</em>, </td>
17015 </tr>
17016 <tr>
17017 <td class="paramkey"></td>
17018 <td></td>
17019 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17020 <td class="paramname"><em>output</em>, </td>
17021 </tr>
17022 <tr>
17023 <td class="paramkey"></td>
17024 <td></td>
17025 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
17026 <td class="paramname"><em>descriptor</em>, </td>
17027 </tr>
17028 <tr>
17029 <td class="paramkey"></td>
17030 <td></td>
17031 <td class="paramtype">char *&#160;</td>
17032 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17033 </tr>
17034 <tr>
17035 <td class="paramkey"></td>
17036 <td></td>
17037 <td class="paramtype">size_t&#160;</td>
17038 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17039 </tr>
17040 <tr>
17041 <td></td>
17042 <td>)</td>
17043 <td></td><td></td>
17044 </tr>
17045 </table>
17046</div><div class="memdoc">
17047
17048<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17049
17050<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00511">511</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17051
17052<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17053<div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aea548aa1485adbeeb3e393a13bb6bff8">IsPooling2dSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17054<div class="ttc" id="namespacearmnn_html_aea548aa1485adbeeb3e393a13bb6bff8"><div class="ttname"><a href="namespacearmnn.html#aea548aa1485adbeeb3e393a13bb6bff8">armnn::IsPooling2dSupported</a></div><div class="ttdeci">bool IsPooling2dSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const Pooling2dDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00511">LayerSupport.cpp:511</a></div></div>
17055</div><!-- fragment -->
17056</div>
17057</div>
17058<a id="a3b4773564c3fd8c88e697ffe0afbe10d"></a>
17059<h2 class="memtitle"><span class="permalink"><a href="#a3b4773564c3fd8c88e697ffe0afbe10d">&#9670;&nbsp;</a></span>IsPreCompiledSupported()</h2>
17060
17061<div class="memitem">
17062<div class="memproto">
17063 <table class="memname">
17064 <tr>
17065 <td class="memname">bool armnn::IsPreCompiledSupported </td>
17066 <td>(</td>
17067 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17068 <td class="paramname"><em>backend</em>, </td>
17069 </tr>
17070 <tr>
17071 <td class="paramkey"></td>
17072 <td></td>
17073 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17074 <td class="paramname"><em>input</em>, </td>
17075 </tr>
17076 <tr>
17077 <td class="paramkey"></td>
17078 <td></td>
17079 <td class="paramtype">char *&#160;</td>
17080 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17081 </tr>
17082 <tr>
17083 <td class="paramkey"></td>
17084 <td></td>
17085 <td class="paramtype">size_t&#160;</td>
17086 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17087 </tr>
17088 <tr>
17089 <td></td>
17090 <td>)</td>
17091 <td></td><td></td>
17092 </tr>
17093 </table>
17094</div><div class="memdoc">
17095
17096<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17097
17098</div>
17099</div>
17100<a id="a5a0c1871f7e4822adb8b15e8ae76bca0"></a>
17101<h2 class="memtitle"><span class="permalink"><a href="#a5a0c1871f7e4822adb8b15e8ae76bca0">&#9670;&nbsp;</a></span>IsPreluSupported()</h2>
17102
17103<div class="memitem">
17104<div class="memproto">
17105 <table class="memname">
17106 <tr>
17107 <td class="memname">bool IsPreluSupported </td>
17108 <td>(</td>
17109 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17110 <td class="paramname"><em>backend</em>, </td>
17111 </tr>
17112 <tr>
17113 <td class="paramkey"></td>
17114 <td></td>
17115 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17116 <td class="paramname"><em>input</em>, </td>
17117 </tr>
17118 <tr>
17119 <td class="paramkey"></td>
17120 <td></td>
17121 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17122 <td class="paramname"><em>alpha</em>, </td>
17123 </tr>
17124 <tr>
17125 <td class="paramkey"></td>
17126 <td></td>
17127 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17128 <td class="paramname"><em>output</em>, </td>
17129 </tr>
17130 <tr>
17131 <td class="paramkey"></td>
17132 <td></td>
17133 <td class="paramtype">char *&#160;</td>
17134 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17135 </tr>
17136 <tr>
17137 <td class="paramkey"></td>
17138 <td></td>
17139 <td class="paramtype">size_t&#160;</td>
17140 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17141 </tr>
17142 <tr>
17143 <td></td>
17144 <td>)</td>
17145 <td></td><td></td>
17146 </tr>
17147 </table>
17148</div><div class="memdoc">
17149
17150<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17151
17152<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00521">521</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17153
17154<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17155<div class="fragment"><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;{</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a5a0c1871f7e4822adb8b15e8ae76bca0">IsPreluSupported</a>, input, alpha, output);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5a0c1871f7e4822adb8b15e8ae76bca0"><div class="ttname"><a href="namespacearmnn.html#a5a0c1871f7e4822adb8b15e8ae76bca0">armnn::IsPreluSupported</a></div><div class="ttdeci">bool IsPreluSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;alpha, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00521">LayerSupport.cpp:521</a></div></div>
17156<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17157</div><!-- fragment -->
17158</div>
17159</div>
17160<a id="a47d136a5519331dee24f5e01b206ae7c"></a>
17161<h2 class="memtitle"><span class="permalink"><a href="#a47d136a5519331dee24f5e01b206ae7c">&#9670;&nbsp;</a></span>IsQAsymmS8()</h2>
17162
17163<div class="memitem">
17164<div class="memproto">
17165 <table class="memname">
17166 <tr>
17167 <td class="memname">bool armnn::IsQAsymmS8 </td>
17168 <td>(</td>
17169 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
17170 <td class="paramname"><em>info</em></td><td>)</td>
17171 <td></td>
17172 </tr>
17173 </table>
17174</div><div class="memdoc">
17175
17176<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00068">68</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
17177
17178<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17179
17180<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
17181<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QAsymmS8&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17182</div><!-- fragment -->
17183</div>
17184</div>
17185<a id="a37c36bbf668cd8a0d7dcd731c9b591d7"></a>
17186<h2 class="memtitle"><span class="permalink"><a href="#a37c36bbf668cd8a0d7dcd731c9b591d7">&#9670;&nbsp;</a></span>IsQAsymmU8()</h2>
17187
17188<div class="memitem">
17189<div class="memproto">
17190 <table class="memname">
17191 <tr>
17192 <td class="memname">bool armnn::IsQAsymmU8 </td>
17193 <td>(</td>
17194 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
17195 <td class="paramname"><em>info</em></td><td>)</td>
17196 <td></td>
17197 </tr>
17198 </table>
17199</div><div class="memdoc">
17200
17201<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00073">73</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
17202
17203<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17204
17205<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
17206<div class="fragment"><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; <span class="keywordflow">return</span> IsDataType&lt;DataType::QAsymmU8&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17207</div><!-- fragment -->
17208</div>
17209</div>
17210<a id="abcd0d843d5736b78740ae73249b6b977"></a>
17211<h2 class="memtitle"><span class="permalink"><a href="#abcd0d843d5736b78740ae73249b6b977">&#9670;&nbsp;</a></span>IsQSymmS16()</h2>
17212
17213<div class="memitem">
17214<div class="memproto">
17215 <table class="memname">
17216 <tr>
17217 <td class="memname">bool armnn::IsQSymmS16 </td>
17218 <td>(</td>
17219 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
17220 <td class="paramname"><em>info</em></td><td>)</td>
17221 <td></td>
17222 </tr>
17223 </table>
17224</div><div class="memdoc">
17225
17226<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00058">58</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
17227
17228<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17229
17230<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.html#l00433">RefWorkloadFactory::CreatePad()</a>, and <a class="el" href="_ref_workload_factory_8cpp_source.html#l00447">RefWorkloadFactory::CreatePermute()</a>.</p>
17231<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QSymmS16&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17232</div><!-- fragment -->
17233</div>
17234</div>
17235<a id="a09a7cd515c3b495e61b2a5116bf6a335"></a>
17236<h2 class="memtitle"><span class="permalink"><a href="#a09a7cd515c3b495e61b2a5116bf6a335">&#9670;&nbsp;</a></span>IsQSymmS8()</h2>
17237
17238<div class="memitem">
17239<div class="memproto">
17240 <table class="memname">
17241 <tr>
17242 <td class="memname">bool armnn::IsQSymmS8 </td>
17243 <td>(</td>
17244 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
17245 <td class="paramname"><em>info</em></td><td>)</td>
17246 <td></td>
17247 </tr>
17248 </table>
17249</div><div class="memdoc">
17250
17251<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00063">63</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
17252
17253<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17254
17255<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
17256<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QSymmS8&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17257</div><!-- fragment -->
17258</div>
17259</div>
17260<a id="ad91bc7bfe29186f5d78c28386c6c5309"></a>
17261<h2 class="memtitle"><span class="permalink"><a href="#ad91bc7bfe29186f5d78c28386c6c5309">&#9670;&nbsp;</a></span>IsQuantized8BitType()</h2>
17262
17263<div class="memitem">
17264<div class="memproto">
17265 <table class="memname">
17266 <tr>
17267 <td class="memname">constexpr bool armnn::IsQuantized8BitType </td>
17268 <td>(</td>
17269 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
17270 <td class="paramname"><em>dataType</em></td><td>)</td>
17271 <td></td>
17272 </tr>
17273 </table>
17274</div><div class="memdoc">
17275
17276<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00237">237</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
17277
17278<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>.</p>
17279
17280<p class="reference">Referenced by <a class="el" href="_workload_data_8cpp_source.html#l00025">GetBiasDataType()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00410">RefLayerSupport::IsConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00538">RefLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_types_utils_8hpp_source.html#l00247">IsQuantizedType()</a>.</p>
17281<div class="fragment"><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; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QAsymmU8 ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; dataType == DataType::QAsymmS8 ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; dataType == DataType::QSymmS8 ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; dataType == DataType::QuantizedSymm8PerAxis;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
17282<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
17283</div><!-- fragment -->
17284</div>
17285</div>
17286<a id="a4069381c4737d57fc7fd299a61ad9ca1"></a>
17287<h2 class="memtitle"><span class="permalink"><a href="#a4069381c4737d57fc7fd299a61ad9ca1">&#9670;&nbsp;</a></span>IsQuantizedLstmSupported()</h2>
17288
17289<div class="memitem">
17290<div class="memproto">
17291 <table class="memname">
17292 <tr>
17293 <td class="memname">bool IsQuantizedLstmSupported </td>
17294 <td>(</td>
17295 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17296 <td class="paramname"><em>backend</em>, </td>
17297 </tr>
17298 <tr>
17299 <td class="paramkey"></td>
17300 <td></td>
17301 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17302 <td class="paramname"><em>input</em>, </td>
17303 </tr>
17304 <tr>
17305 <td class="paramkey"></td>
17306 <td></td>
17307 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17308 <td class="paramname"><em>previousCellStateIn</em>, </td>
17309 </tr>
17310 <tr>
17311 <td class="paramkey"></td>
17312 <td></td>
17313 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17314 <td class="paramname"><em>previousOutputIn</em>, </td>
17315 </tr>
17316 <tr>
17317 <td class="paramkey"></td>
17318 <td></td>
17319 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17320 <td class="paramname"><em>cellStateOut</em>, </td>
17321 </tr>
17322 <tr>
17323 <td class="paramkey"></td>
17324 <td></td>
17325 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17326 <td class="paramname"><em>output</em>, </td>
17327 </tr>
17328 <tr>
17329 <td class="paramkey"></td>
17330 <td></td>
17331 <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
17332 <td class="paramname"><em>paramsInfo</em>, </td>
17333 </tr>
17334 <tr>
17335 <td class="paramkey"></td>
17336 <td></td>
17337 <td class="paramtype">char *&#160;</td>
17338 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17339 </tr>
17340 <tr>
17341 <td class="paramkey"></td>
17342 <td></td>
17343 <td class="paramtype">size_t&#160;</td>
17344 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17345 </tr>
17346 <tr>
17347 <td></td>
17348 <td>)</td>
17349 <td></td><td></td>
17350 </tr>
17351 </table>
17352</div><div class="memdoc">
17353
17354<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17355
17356<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00486">486</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17357
17358<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17359<div class="fragment"><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;{</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a4069381c4737d57fc7fd299a61ad9ca1">IsQuantizedLstmSupported</a>, input, previousCellStateIn, previousOutputIn,</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; cellStateOut, output, paramsInfo);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4069381c4737d57fc7fd299a61ad9ca1"><div class="ttname"><a href="namespacearmnn.html#a4069381c4737d57fc7fd299a61ad9ca1">armnn::IsQuantizedLstmSupported</a></div><div class="ttdeci">bool IsQuantizedLstmSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;previousCellStateIn, const TensorInfo &amp;previousOutputIn, const TensorInfo &amp;cellStateOut, const TensorInfo &amp;output, const QuantizedLstmInputParamsInfo &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00486">LayerSupport.cpp:486</a></div></div>
17360<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17361</div><!-- fragment -->
17362</div>
17363</div>
17364<a id="ad44c007f21af2d0375e3ef9400a1b275"></a>
17365<h2 class="memtitle"><span class="permalink"><a href="#ad44c007f21af2d0375e3ef9400a1b275">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[1/2]</span></h2>
17366
17367<div class="memitem">
17368<div class="memproto">
17369 <table class="memname">
17370 <tr>
17371 <td class="memname">constexpr bool armnn::IsQuantizedType </td>
17372 <td>(</td>
17373 <td class="paramname"></td><td>)</td>
17374 <td></td>
17375 </tr>
17376 </table>
17377</div><div class="memdoc">
17378
17379<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00232">232</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
17380
17381<p class="reference">Referenced by <a class="el" href="_tensor_8cpp_source.html#l00290">TensorInfo::IsQuantized()</a>, <a class="el" href="_workload_data_8cpp_source.html#l02197">QuantizeQueueDescriptor::Validate()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l02512">DequantizeQueueDescriptor::Validate()</a>.</p>
17382<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> std::is_integral&lt;T&gt;::value;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;}</div></div><!-- fragment -->
17383</div>
17384</div>
17385<a id="aa172264d7075abf828e0b6894996a561"></a>
17386<h2 class="memtitle"><span class="permalink"><a href="#aa172264d7075abf828e0b6894996a561">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[2/2]</span></h2>
17387
17388<div class="memitem">
17389<div class="memproto">
17390 <table class="memname">
17391 <tr>
17392 <td class="memname">constexpr bool armnn::IsQuantizedType </td>
17393 <td>(</td>
17394 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
17395 <td class="paramname"><em>dataType</em></td><td>)</td>
17396 <td></td>
17397 </tr>
17398 </table>
17399</div><div class="memdoc">
17400
17401<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00247">247</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
17402
17403<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00237">IsQuantized8BitType()</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
17404<div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS16 || <a class="code" href="namespacearmnn.html#ad91bc7bfe29186f5d78c28386c6c5309">IsQuantized8BitType</a>(dataType);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad91bc7bfe29186f5d78c28386c6c5309"><div class="ttname"><a href="namespacearmnn.html#ad91bc7bfe29186f5d78c28386c6c5309">armnn::IsQuantized8BitType</a></div><div class="ttdeci">constexpr bool IsQuantized8BitType(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00237">TypesUtils.hpp:237</a></div></div>
17405</div><!-- fragment -->
17406</div>
17407</div>
17408<a id="a599a95f708fa0b6a6230dc6c9e73ea3e"></a>
17409<h2 class="memtitle"><span class="permalink"><a href="#a599a95f708fa0b6a6230dc6c9e73ea3e">&#9670;&nbsp;</a></span>IsQuantizeSupported()</h2>
17410
17411<div class="memitem">
17412<div class="memproto">
17413 <table class="memname">
17414 <tr>
17415 <td class="memname">bool armnn::IsQuantizeSupported </td>
17416 <td>(</td>
17417 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17418 <td class="paramname"><em>backend</em>, </td>
17419 </tr>
17420 <tr>
17421 <td class="paramkey"></td>
17422 <td></td>
17423 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17424 <td class="paramname"><em>input</em>, </td>
17425 </tr>
17426 <tr>
17427 <td class="paramkey"></td>
17428 <td></td>
17429 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17430 <td class="paramname"><em>output</em>, </td>
17431 </tr>
17432 <tr>
17433 <td class="paramkey"></td>
17434 <td></td>
17435 <td class="paramtype">char *&#160;</td>
17436 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
17437 </tr>
17438 <tr>
17439 <td class="paramkey"></td>
17440 <td></td>
17441 <td class="paramtype">size_t&#160;</td>
17442 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
17443 </tr>
17444 <tr>
17445 <td></td>
17446 <td>)</td>
17447 <td></td><td></td>
17448 </tr>
17449 </table>
17450</div><div class="memdoc">
17451
17452<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00477">477</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17453
17454<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17455<div class="fragment"><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;{</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a599a95f708fa0b6a6230dc6c9e73ea3e">IsQuantizeSupported</a>, input, output);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17456<div class="ttc" id="namespacearmnn_html_a599a95f708fa0b6a6230dc6c9e73ea3e"><div class="ttname"><a href="namespacearmnn.html#a599a95f708fa0b6a6230dc6c9e73ea3e">armnn::IsQuantizeSupported</a></div><div class="ttdeci">bool IsQuantizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00477">LayerSupport.cpp:477</a></div></div>
17457</div><!-- fragment -->
17458</div>
17459</div>
17460<a id="a6b10dc0d12c7f4a52ad01b9975dbe908"></a>
17461<h2 class="memtitle"><span class="permalink"><a href="#a6b10dc0d12c7f4a52ad01b9975dbe908">&#9670;&nbsp;</a></span>IsReadyForSplitAssignment()</h2>
17462
17463<div class="memitem">
17464<div class="memproto">
17465 <table class="memname">
17466 <tr>
17467 <td class="memname">bool armnn::IsReadyForSplitAssignment </td>
17468 <td>(</td>
17469 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
17470 <td class="paramname"><em>layerInfos</em>, </td>
17471 </tr>
17472 <tr>
17473 <td class="paramkey"></td>
17474 <td></td>
17475 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
17476 <td class="paramname"><em>layerInfo</em>&#160;</td>
17477 </tr>
17478 <tr>
17479 <td></td>
17480 <td>)</td>
17481 <td></td><td></td>
17482 </tr>
17483 </table>
17484</div><div class="memdoc">
17485
17486<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00366">366</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.html">SubgraphViewSelector.cpp</a>.</p>
17487
17488<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00259">ForEachLayerInput()</a>.</p>
17489
17490<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.html#l00381">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
17491<div class="fragment"><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="keywordtype">bool</span> ready = <span class="keyword">true</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; [&amp;ready](LayerSelectionInfo&amp; parentInfo)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (!parentInfo.m_IsProcessed)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; ready = false;</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"> 376</span>&#160; });</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> ready;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_afce94270d9c4a51cd0c4ac6a58af4e26"><div class="ttname"><a href="namespacearmnn.html#afce94270d9c4a51cd0c4ac6a58af4e26">armnn::ForEachLayerInput</a></div><div class="ttdeci">void ForEachLayerInput(LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.html#l00259">SubgraphViewSelector.cpp:259</a></div></div>
17492</div><!-- fragment -->
17493</div>
17494</div>
17495<a id="af5014cbc003abcf201d4372b0012734c"></a>
17496<h2 class="memtitle"><span class="permalink"><a href="#af5014cbc003abcf201d4372b0012734c">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[1/2]</span></h2>
17497
17498<div class="memitem">
17499<div class="memproto">
17500 <table class="memname">
17501 <tr>
17502 <td class="memname">bool armnn::IsReshapeSupported </td>
17503 <td>(</td>
17504 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17505 <td class="paramname"><em>backend</em>, </td>
17506 </tr>
17507 <tr>
17508 <td class="paramkey"></td>
17509 <td></td>
17510 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17511 <td class="paramname"><em>input</em>, </td>
17512 </tr>
17513 <tr>
17514 <td class="paramkey"></td>
17515 <td></td>
17516 <td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;&#160;</td>
17517 <td class="paramname"><em>descriptor</em>, </td>
17518 </tr>
17519 <tr>
17520 <td class="paramkey"></td>
17521 <td></td>
17522 <td class="paramtype">char *&#160;</td>
17523 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17524 </tr>
17525 <tr>
17526 <td class="paramkey"></td>
17527 <td></td>
17528 <td class="paramtype">size_t&#160;</td>
17529 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17530 </tr>
17531 <tr>
17532 <td></td>
17533 <td>)</td>
17534 <td></td><td></td>
17535 </tr>
17536 </table>
17537</div><div class="memdoc">
17538
17539<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17540
17541<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00531">IsReshapeSupported()</a>.</p>
17542
17543</div>
17544</div>
17545<a id="a4bb384bc41a94bc7c3b4f543cd3fd437"></a>
17546<h2 class="memtitle"><span class="permalink"><a href="#a4bb384bc41a94bc7c3b4f543cd3fd437">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[2/2]</span></h2>
17547
17548<div class="memitem">
17549<div class="memproto">
17550 <table class="memname">
17551 <tr>
17552 <td class="memname">bool armnn::IsReshapeSupported </td>
17553 <td>(</td>
17554 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17555 <td class="paramname"><em>backend</em>, </td>
17556 </tr>
17557 <tr>
17558 <td class="paramkey"></td>
17559 <td></td>
17560 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17561 <td class="paramname"><em>input</em>, </td>
17562 </tr>
17563 <tr>
17564 <td class="paramkey"></td>
17565 <td></td>
17566 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17567 <td class="paramname"><em>output</em>, </td>
17568 </tr>
17569 <tr>
17570 <td class="paramkey"></td>
17571 <td></td>
17572 <td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.html">ReshapeDescriptor</a> &amp;&#160;</td>
17573 <td class="paramname"><em>descriptor</em>, </td>
17574 </tr>
17575 <tr>
17576 <td class="paramkey"></td>
17577 <td></td>
17578 <td class="paramtype">char *&#160;</td>
17579 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
17580 </tr>
17581 <tr>
17582 <td class="paramkey"></td>
17583 <td></td>
17584 <td class="paramtype">size_t&#160;</td>
17585 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
17586 </tr>
17587 <tr>
17588 <td></td>
17589 <td>)</td>
17590 <td></td><td></td>
17591 </tr>
17592 </table>
17593</div><div class="memdoc">
17594
17595<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00531">531</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17596
17597<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#af5014cbc003abcf201d4372b0012734c">IsReshapeSupported()</a>.</p>
17598<div class="fragment"><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;{</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a4bb384bc41a94bc7c3b4f543cd3fd437">IsReshapeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17599<div class="ttc" id="namespacearmnn_html_a4bb384bc41a94bc7c3b4f543cd3fd437"><div class="ttname"><a href="namespacearmnn.html#a4bb384bc41a94bc7c3b4f543cd3fd437">armnn::IsReshapeSupported</a></div><div class="ttdeci">bool IsReshapeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ReshapeDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00531">LayerSupport.cpp:531</a></div></div>
17600</div><!-- fragment -->
17601</div>
17602</div>
17603<a id="a936d3f949a334668f839fb0bdd170b72"></a>
17604<h2 class="memtitle"><span class="permalink"><a href="#a936d3f949a334668f839fb0bdd170b72">&#9670;&nbsp;</a></span>IsResizeBilinearSupported()</h2>
17605
17606<div class="memitem">
17607<div class="memproto">
17608 <table class="memname">
17609 <tr>
17610 <td class="memname">bool IsResizeBilinearSupported </td>
17611 <td>(</td>
17612 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17613 <td class="paramname"><em>backend</em>, </td>
17614 </tr>
17615 <tr>
17616 <td class="paramkey"></td>
17617 <td></td>
17618 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17619 <td class="paramname"><em>input</em>, </td>
17620 </tr>
17621 <tr>
17622 <td class="paramkey"></td>
17623 <td></td>
17624 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17625 <td class="paramname"><em>output</em>, </td>
17626 </tr>
17627 <tr>
17628 <td class="paramkey"></td>
17629 <td></td>
17630 <td class="paramtype">char *&#160;</td>
17631 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17632 </tr>
17633 <tr>
17634 <td class="paramkey"></td>
17635 <td></td>
17636 <td class="paramtype">size_t&#160;</td>
17637 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17638 </tr>
17639 <tr>
17640 <td></td>
17641 <td>)</td>
17642 <td></td><td></td>
17643 </tr>
17644 </table>
17645</div><div class="memdoc">
17646
17647<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17648
17649<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00552">552</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17650
17651<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_layer_support_8cpp_source.html#l00541">IsResizeSupported()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00749">ResizeDescriptor::m_Method</a>, <a class="el" href="_descriptors_8hpp_source.html#l00746">ResizeDescriptor::m_TargetHeight</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00744">ResizeDescriptor::m_TargetWidth</a>.</p>
17652<div class="fragment"><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;{</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; ResizeDescriptor descriptor;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; descriptor.m_Method = ResizeMethod::Bilinear;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape = output.GetShape();</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; descriptor.m_TargetWidth = outputShape[3];</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; descriptor.m_TargetHeight = outputShape[2];</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17653<div class="ttc" id="namespacearmnn_html_a90a1aadb53c7537f225252afd681ff22"><div class="ttname"><a href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">armnn::IsResizeSupported</a></div><div class="ttdeci">bool IsResizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ResizeDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00541">LayerSupport.cpp:541</a></div></div>
17654</div><!-- fragment -->
17655</div>
17656</div>
17657<a id="a90a1aadb53c7537f225252afd681ff22"></a>
17658<h2 class="memtitle"><span class="permalink"><a href="#a90a1aadb53c7537f225252afd681ff22">&#9670;&nbsp;</a></span>IsResizeSupported()</h2>
17659
17660<div class="memitem">
17661<div class="memproto">
17662 <table class="memname">
17663 <tr>
17664 <td class="memname">bool IsResizeSupported </td>
17665 <td>(</td>
17666 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17667 <td class="paramname"><em>backend</em>, </td>
17668 </tr>
17669 <tr>
17670 <td class="paramkey"></td>
17671 <td></td>
17672 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17673 <td class="paramname"><em>input</em>, </td>
17674 </tr>
17675 <tr>
17676 <td class="paramkey"></td>
17677 <td></td>
17678 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17679 <td class="paramname"><em>output</em>, </td>
17680 </tr>
17681 <tr>
17682 <td class="paramkey"></td>
17683 <td></td>
17684 <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;&#160;</td>
17685 <td class="paramname"><em>descriptor</em>, </td>
17686 </tr>
17687 <tr>
17688 <td class="paramkey"></td>
17689 <td></td>
17690 <td class="paramtype">char *&#160;</td>
17691 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17692 </tr>
17693 <tr>
17694 <td class="paramkey"></td>
17695 <td></td>
17696 <td class="paramtype">size_t&#160;</td>
17697 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17698 </tr>
17699 <tr>
17700 <td></td>
17701 <td>)</td>
17702 <td></td><td></td>
17703 </tr>
17704 </table>
17705</div><div class="memdoc">
17706
17707<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17708
17709<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00541">541</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17710
17711<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17712
17713<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.html#l00663">ClLayerSupport::IsResizeBilinearSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00643">NeonLayerSupport::IsResizeBilinearSupported()</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00552">IsResizeBilinearSupported()</a>.</p>
17714<div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17715<div class="ttc" id="namespacearmnn_html_a90a1aadb53c7537f225252afd681ff22"><div class="ttname"><a href="namespacearmnn.html#a90a1aadb53c7537f225252afd681ff22">armnn::IsResizeSupported</a></div><div class="ttdeci">bool IsResizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ResizeDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00541">LayerSupport.cpp:541</a></div></div>
17716</div><!-- fragment -->
17717</div>
17718</div>
17719<a id="accc42ba9679a474e75b43cdf1efa9422"></a>
17720<h2 class="memtitle"><span class="permalink"><a href="#accc42ba9679a474e75b43cdf1efa9422">&#9670;&nbsp;</a></span>IsRsqrtSupported()</h2>
17721
17722<div class="memitem">
17723<div class="memproto">
17724 <table class="memname">
17725 <tr>
17726 <td class="memname">bool IsRsqrtSupported </td>
17727 <td>(</td>
17728 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17729 <td class="paramname"><em>backend</em>, </td>
17730 </tr>
17731 <tr>
17732 <td class="paramkey"></td>
17733 <td></td>
17734 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17735 <td class="paramname"><em>input</em>, </td>
17736 </tr>
17737 <tr>
17738 <td class="paramkey"></td>
17739 <td></td>
17740 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17741 <td class="paramname"><em>output</em>, </td>
17742 </tr>
17743 <tr>
17744 <td class="paramkey"></td>
17745 <td></td>
17746 <td class="paramtype">char *&#160;</td>
17747 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17748 </tr>
17749 <tr>
17750 <td class="paramkey"></td>
17751 <td></td>
17752 <td class="paramtype">size_t&#160;</td>
17753 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17754 </tr>
17755 <tr>
17756 <td></td>
17757 <td>)</td>
17758 <td></td><td></td>
17759 </tr>
17760 </table>
17761</div><div class="memdoc">
17762
17763<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17764
17765<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00568">568</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17766
17767<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.html#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a>.</p>
17768<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; IsElementwiseUnarySupported,</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; input,</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; output,</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ElementwiseUnaryDescriptor(UnaryOperation::Rsqrt));</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17769</div><!-- fragment -->
17770</div>
17771</div>
17772<a id="a87b99791ccf8793961db67ea19eb6fa4"></a>
17773<h2 class="memtitle"><span class="permalink"><a href="#a87b99791ccf8793961db67ea19eb6fa4">&#9670;&nbsp;</a></span>IsSigned32()</h2>
17774
17775<div class="memitem">
17776<div class="memproto">
17777 <table class="memname">
17778 <tr>
17779 <td class="memname">bool armnn::IsSigned32 </td>
17780 <td>(</td>
17781 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.html">WorkloadInfo</a> &amp;&#160;</td>
17782 <td class="paramname"><em>info</em></td><td>)</td>
17783 <td></td>
17784 </tr>
17785 </table>
17786</div><div class="memdoc">
17787
17788<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.html#l00048">48</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.html">RefWorkloadFactory.cpp</a>.</p>
17789
17790<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17791
17792<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.html#l00198">RefWorkloadFactory::CreateDebug()</a>.</p>
17793<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::Signed32&gt;(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17794</div><!-- fragment -->
17795</div>
17796</div>
17797<a id="a477695b3df8c0abd2efcf02051f61065"></a>
17798<h2 class="memtitle"><span class="permalink"><a href="#a477695b3df8c0abd2efcf02051f61065">&#9670;&nbsp;</a></span>IsSoftmaxSupported()</h2>
17799
17800<div class="memitem">
17801<div class="memproto">
17802 <table class="memname">
17803 <tr>
17804 <td class="memname">bool IsSoftmaxSupported </td>
17805 <td>(</td>
17806 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17807 <td class="paramname"><em>backend</em>, </td>
17808 </tr>
17809 <tr>
17810 <td class="paramkey"></td>
17811 <td></td>
17812 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17813 <td class="paramname"><em>input</em>, </td>
17814 </tr>
17815 <tr>
17816 <td class="paramkey"></td>
17817 <td></td>
17818 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17819 <td class="paramname"><em>output</em>, </td>
17820 </tr>
17821 <tr>
17822 <td class="paramkey"></td>
17823 <td></td>
17824 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
17825 <td class="paramname"><em>descriptor</em>, </td>
17826 </tr>
17827 <tr>
17828 <td class="paramkey"></td>
17829 <td></td>
17830 <td class="paramtype">char *&#160;</td>
17831 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17832 </tr>
17833 <tr>
17834 <td class="paramkey"></td>
17835 <td></td>
17836 <td class="paramtype">size_t&#160;</td>
17837 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17838 </tr>
17839 <tr>
17840 <td></td>
17841 <td>)</td>
17842 <td></td><td></td>
17843 </tr>
17844 </table>
17845</div><div class="memdoc">
17846
17847<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17848
17849<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00581">581</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17850
17851<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17852<div class="fragment"><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;{</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a477695b3df8c0abd2efcf02051f61065">IsSoftmaxSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a477695b3df8c0abd2efcf02051f61065"><div class="ttname"><a href="namespacearmnn.html#a477695b3df8c0abd2efcf02051f61065">armnn::IsSoftmaxSupported</a></div><div class="ttdeci">bool IsSoftmaxSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SoftmaxDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00581">LayerSupport.cpp:581</a></div></div>
17853<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17854</div><!-- fragment -->
17855</div>
17856</div>
17857<a id="a4b3a41e24d4b9e2b4cb431dc90c48970"></a>
17858<h2 class="memtitle"><span class="permalink"><a href="#a4b3a41e24d4b9e2b4cb431dc90c48970">&#9670;&nbsp;</a></span>IsSpaceToBatchNdSupported()</h2>
17859
17860<div class="memitem">
17861<div class="memproto">
17862 <table class="memname">
17863 <tr>
17864 <td class="memname">bool IsSpaceToBatchNdSupported </td>
17865 <td>(</td>
17866 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17867 <td class="paramname"><em>backend</em>, </td>
17868 </tr>
17869 <tr>
17870 <td class="paramkey"></td>
17871 <td></td>
17872 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17873 <td class="paramname"><em>input</em>, </td>
17874 </tr>
17875 <tr>
17876 <td class="paramkey"></td>
17877 <td></td>
17878 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17879 <td class="paramname"><em>output</em>, </td>
17880 </tr>
17881 <tr>
17882 <td class="paramkey"></td>
17883 <td></td>
17884 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
17885 <td class="paramname"><em>descriptor</em>, </td>
17886 </tr>
17887 <tr>
17888 <td class="paramkey"></td>
17889 <td></td>
17890 <td class="paramtype">char *&#160;</td>
17891 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17892 </tr>
17893 <tr>
17894 <td class="paramkey"></td>
17895 <td></td>
17896 <td class="paramtype">size_t&#160;</td>
17897 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17898 </tr>
17899 <tr>
17900 <td></td>
17901 <td>)</td>
17902 <td></td><td></td>
17903 </tr>
17904 </table>
17905</div><div class="memdoc">
17906
17907<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17908
17909<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00591">591</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17910
17911<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17912<div class="fragment"><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;{</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a4b3a41e24d4b9e2b4cb431dc90c48970">IsSpaceToBatchNdSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4b3a41e24d4b9e2b4cb431dc90c48970"><div class="ttname"><a href="namespacearmnn.html#a4b3a41e24d4b9e2b4cb431dc90c48970">armnn::IsSpaceToBatchNdSupported</a></div><div class="ttdeci">bool IsSpaceToBatchNdSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SpaceToBatchNdDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00591">LayerSupport.cpp:591</a></div></div>
17913<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17914</div><!-- fragment -->
17915</div>
17916</div>
17917<a id="addffaddb4bdb6ec506fe08debcce9b75"></a>
17918<h2 class="memtitle"><span class="permalink"><a href="#addffaddb4bdb6ec506fe08debcce9b75">&#9670;&nbsp;</a></span>IsSpaceToDepthSupported()</h2>
17919
17920<div class="memitem">
17921<div class="memproto">
17922 <table class="memname">
17923 <tr>
17924 <td class="memname">bool IsSpaceToDepthSupported </td>
17925 <td>(</td>
17926 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17927 <td class="paramname"><em>backend</em>, </td>
17928 </tr>
17929 <tr>
17930 <td class="paramkey"></td>
17931 <td></td>
17932 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17933 <td class="paramname"><em>input</em>, </td>
17934 </tr>
17935 <tr>
17936 <td class="paramkey"></td>
17937 <td></td>
17938 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17939 <td class="paramname"><em>output</em>, </td>
17940 </tr>
17941 <tr>
17942 <td class="paramkey"></td>
17943 <td></td>
17944 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
17945 <td class="paramname"><em>descriptor</em>, </td>
17946 </tr>
17947 <tr>
17948 <td class="paramkey"></td>
17949 <td></td>
17950 <td class="paramtype">char *&#160;</td>
17951 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17952 </tr>
17953 <tr>
17954 <td class="paramkey"></td>
17955 <td></td>
17956 <td class="paramtype">size_t&#160;</td>
17957 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17958 </tr>
17959 <tr>
17960 <td></td>
17961 <td>)</td>
17962 <td></td><td></td>
17963 </tr>
17964 </table>
17965</div><div class="memdoc">
17966
17967<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
17968
17969<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00601">601</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
17970
17971<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17972<div class="fragment"><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#addffaddb4bdb6ec506fe08debcce9b75">IsSpaceToDepthSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_addffaddb4bdb6ec506fe08debcce9b75"><div class="ttname"><a href="namespacearmnn.html#addffaddb4bdb6ec506fe08debcce9b75">armnn::IsSpaceToDepthSupported</a></div><div class="ttdeci">bool IsSpaceToDepthSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SpaceToDepthDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00601">LayerSupport.cpp:601</a></div></div>
17973<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
17974</div><!-- fragment -->
17975</div>
17976</div>
17977<a id="a7ce5f7168bf0d1e7efe269d59ed564ba"></a>
17978<h2 class="memtitle"><span class="permalink"><a href="#a7ce5f7168bf0d1e7efe269d59ed564ba">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[1/2]</span></h2>
17979
17980<div class="memitem">
17981<div class="memproto">
17982 <table class="memname">
17983 <tr>
17984 <td class="memname">bool IsSplitterSupported </td>
17985 <td>(</td>
17986 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
17987 <td class="paramname"><em>backend</em>, </td>
17988 </tr>
17989 <tr>
17990 <td class="paramkey"></td>
17991 <td></td>
17992 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
17993 <td class="paramname"><em>input</em>, </td>
17994 </tr>
17995 <tr>
17996 <td class="paramkey"></td>
17997 <td></td>
17998 <td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
17999 <td class="paramname"><em>descriptor</em>, </td>
18000 </tr>
18001 <tr>
18002 <td class="paramkey"></td>
18003 <td></td>
18004 <td class="paramtype">char *&#160;</td>
18005 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18006 </tr>
18007 <tr>
18008 <td class="paramkey"></td>
18009 <td></td>
18010 <td class="paramtype">size_t&#160;</td>
18011 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18012 </tr>
18013 <tr>
18014 <td></td>
18015 <td>)</td>
18016 <td></td><td></td>
18017 </tr>
18018 </table>
18019</div><div class="memdoc">
18020
18021<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00612">612</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
18022
18023<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18024
18025<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.html#l00623">IsSplitterSupported()</a>.</p>
18026<div class="fragment"><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; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a>, input, descriptor);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
18027<div class="ttc" id="namespacearmnn_html_a7ce5f7168bf0d1e7efe269d59ed564ba"><div class="ttname"><a href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">armnn::IsSplitterSupported</a></div><div class="ttdeci">bool IsSplitterSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const ViewsDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00612">LayerSupport.cpp:612</a></div></div>
18028<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
18029<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
18030</div><!-- fragment -->
18031</div>
18032</div>
18033<a id="a6487e532e0cb72a210096185e31e2bd6"></a>
18034<h2 class="memtitle"><span class="permalink"><a href="#a6487e532e0cb72a210096185e31e2bd6">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[2/2]</span></h2>
18035
18036<div class="memitem">
18037<div class="memproto">
18038 <table class="memname">
18039 <tr>
18040 <td class="memname">bool IsSplitterSupported </td>
18041 <td>(</td>
18042 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
18043 <td class="paramname"><em>backend</em>, </td>
18044 </tr>
18045 <tr>
18046 <td class="paramkey"></td>
18047 <td></td>
18048 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18049 <td class="paramname"><em>input</em>, </td>
18050 </tr>
18051 <tr>
18052 <td class="paramkey"></td>
18053 <td></td>
18054 <td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
18055 <td class="paramname"><em>outputs</em>, </td>
18056 </tr>
18057 <tr>
18058 <td class="paramkey"></td>
18059 <td></td>
18060 <td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
18061 <td class="paramname"><em>descriptor</em>, </td>
18062 </tr>
18063 <tr>
18064 <td class="paramkey"></td>
18065 <td></td>
18066 <td class="paramtype">char *&#160;</td>
18067 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18068 </tr>
18069 <tr>
18070 <td class="paramkey"></td>
18071 <td></td>
18072 <td class="paramtype">size_t&#160;</td>
18073 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18074 </tr>
18075 <tr>
18076 <td></td>
18077 <td>)</td>
18078 <td></td><td></td>
18079 </tr>
18080 </table>
18081</div><div class="memdoc">
18082
18083<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
18084
18085<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00623">623</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
18086
18087<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="_layer_support_8cpp_source.html#l00612">IsSplitterSupported()</a>.</p>
18088<div class="fragment"><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;{</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a>, input, outputs, descriptor);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a7ce5f7168bf0d1e7efe269d59ed564ba"><div class="ttname"><a href="namespacearmnn.html#a7ce5f7168bf0d1e7efe269d59ed564ba">armnn::IsSplitterSupported</a></div><div class="ttdeci">bool IsSplitterSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const ViewsDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00612">LayerSupport.cpp:612</a></div></div>
18089<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
18090</div><!-- fragment -->
18091</div>
18092</div>
18093<a id="a10e8442be2b8596afd5770e98b904caa"></a>
18094<h2 class="memtitle"><span class="permalink"><a href="#a10e8442be2b8596afd5770e98b904caa">&#9670;&nbsp;</a></span>IsStackSupported()</h2>
18095
18096<div class="memitem">
18097<div class="memproto">
18098 <table class="memname">
18099 <tr>
18100 <td class="memname">bool armnn::IsStackSupported </td>
18101 <td>(</td>
18102 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
18103 <td class="paramname"><em>backend</em>, </td>
18104 </tr>
18105 <tr>
18106 <td class="paramkey"></td>
18107 <td></td>
18108 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt;&#160;</td>
18109 <td class="paramname"><em>inputs</em>, </td>
18110 </tr>
18111 <tr>
18112 <td class="paramkey"></td>
18113 <td></td>
18114 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18115 <td class="paramname"><em>output</em>, </td>
18116 </tr>
18117 <tr>
18118 <td class="paramkey"></td>
18119 <td></td>
18120 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;&#160;</td>
18121 <td class="paramname"><em>descriptor</em>, </td>
18122 </tr>
18123 <tr>
18124 <td class="paramkey"></td>
18125 <td></td>
18126 <td class="paramtype">char *&#160;</td>
18127 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18128 </tr>
18129 <tr>
18130 <td class="paramkey"></td>
18131 <td></td>
18132 <td class="paramtype">size_t&#160;</td>
18133 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18134 </tr>
18135 <tr>
18136 <td></td>
18137 <td>)</td>
18138 <td></td><td></td>
18139 </tr>
18140 </table>
18141</div><div class="memdoc">
18142
18143<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
18144
18145</div>
18146</div>
18147<a id="aebe3dc6730e1b29aee9c9f33b8f94121"></a>
18148<h2 class="memtitle"><span class="permalink"><a href="#aebe3dc6730e1b29aee9c9f33b8f94121">&#9670;&nbsp;</a></span>IsStridedSliceSupported()</h2>
18149
18150<div class="memitem">
18151<div class="memproto">
18152 <table class="memname">
18153 <tr>
18154 <td class="memname">bool IsStridedSliceSupported </td>
18155 <td>(</td>
18156 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
18157 <td class="paramname"><em>backend</em>, </td>
18158 </tr>
18159 <tr>
18160 <td class="paramkey"></td>
18161 <td></td>
18162 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18163 <td class="paramname"><em>input</em>, </td>
18164 </tr>
18165 <tr>
18166 <td class="paramkey"></td>
18167 <td></td>
18168 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18169 <td class="paramname"><em>output</em>, </td>
18170 </tr>
18171 <tr>
18172 <td class="paramkey"></td>
18173 <td></td>
18174 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
18175 <td class="paramname"><em>descriptor</em>, </td>
18176 </tr>
18177 <tr>
18178 <td class="paramkey"></td>
18179 <td></td>
18180 <td class="paramtype">char *&#160;</td>
18181 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18182 </tr>
18183 <tr>
18184 <td class="paramkey"></td>
18185 <td></td>
18186 <td class="paramtype">size_t&#160;</td>
18187 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18188 </tr>
18189 <tr>
18190 <td></td>
18191 <td>)</td>
18192 <td></td><td></td>
18193 </tr>
18194 </table>
18195</div><div class="memdoc">
18196
18197<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
18198
18199<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00633">633</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
18200
18201<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18202<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#aebe3dc6730e1b29aee9c9f33b8f94121">IsStridedSliceSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aebe3dc6730e1b29aee9c9f33b8f94121"><div class="ttname"><a href="namespacearmnn.html#aebe3dc6730e1b29aee9c9f33b8f94121">armnn::IsStridedSliceSupported</a></div><div class="ttdeci">bool IsStridedSliceSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const StridedSliceDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00633">LayerSupport.cpp:633</a></div></div>
18203<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
18204</div><!-- fragment -->
18205</div>
18206</div>
18207<a id="afbf752a51fa513e0a54e343be130d962"></a>
18208<h2 class="memtitle"><span class="permalink"><a href="#afbf752a51fa513e0a54e343be130d962">&#9670;&nbsp;</a></span>IsSubtractionSupported()</h2>
18209
18210<div class="memitem">
18211<div class="memproto">
18212 <table class="memname">
18213 <tr>
18214 <td class="memname">bool IsSubtractionSupported </td>
18215 <td>(</td>
18216 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
18217 <td class="paramname"><em>backend</em>, </td>
18218 </tr>
18219 <tr>
18220 <td class="paramkey"></td>
18221 <td></td>
18222 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18223 <td class="paramname"><em>input0</em>, </td>
18224 </tr>
18225 <tr>
18226 <td class="paramkey"></td>
18227 <td></td>
18228 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18229 <td class="paramname"><em>input1</em>, </td>
18230 </tr>
18231 <tr>
18232 <td class="paramkey"></td>
18233 <td></td>
18234 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18235 <td class="paramname"><em>output</em>, </td>
18236 </tr>
18237 <tr>
18238 <td class="paramkey"></td>
18239 <td></td>
18240 <td class="paramtype">char *&#160;</td>
18241 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18242 </tr>
18243 <tr>
18244 <td class="paramkey"></td>
18245 <td></td>
18246 <td class="paramtype">size_t&#160;</td>
18247 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18248 </tr>
18249 <tr>
18250 <td></td>
18251 <td>)</td>
18252 <td></td><td></td>
18253 </tr>
18254 </table>
18255</div><div class="memdoc">
18256
18257<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
18258
18259<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00643">643</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
18260
18261<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18262<div class="fragment"><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="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#afbf752a51fa513e0a54e343be130d962">IsSubtractionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
18263<div class="ttc" id="namespacearmnn_html_afbf752a51fa513e0a54e343be130d962"><div class="ttname"><a href="namespacearmnn.html#afbf752a51fa513e0a54e343be130d962">armnn::IsSubtractionSupported</a></div><div class="ttdeci">bool IsSubtractionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00643">LayerSupport.cpp:643</a></div></div>
18264</div><!-- fragment -->
18265</div>
18266</div>
18267<a id="af6dbe371ec651a8e0063624fdf32afc0"></a>
18268<h2 class="memtitle"><span class="permalink"><a href="#af6dbe371ec651a8e0063624fdf32afc0">&#9670;&nbsp;</a></span>IsSupportedForDataTypeGeneric()</h2>
18269
18270<div class="memitem">
18271<div class="memproto">
18272 <table class="memname">
18273 <tr>
18274 <td class="memname">bool armnn::IsSupportedForDataTypeGeneric </td>
18275 <td>(</td>
18276 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
18277 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
18278 </tr>
18279 <tr>
18280 <td class="paramkey"></td>
18281 <td></td>
18282 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
18283 <td class="paramname"><em>dataType</em>, </td>
18284 </tr>
18285 <tr>
18286 <td class="paramkey"></td>
18287 <td></td>
18288 <td class="paramtype">Float16Func&#160;</td>
18289 <td class="paramname"><em>float16FuncPtr</em>, </td>
18290 </tr>
18291 <tr>
18292 <td class="paramkey"></td>
18293 <td></td>
18294 <td class="paramtype">Float32Func&#160;</td>
18295 <td class="paramname"><em>float32FuncPtr</em>, </td>
18296 </tr>
18297 <tr>
18298 <td class="paramkey"></td>
18299 <td></td>
18300 <td class="paramtype">Uint8Func&#160;</td>
18301 <td class="paramname"><em>uint8FuncPtr</em>, </td>
18302 </tr>
18303 <tr>
18304 <td class="paramkey"></td>
18305 <td></td>
18306 <td class="paramtype">Int32Func&#160;</td>
18307 <td class="paramname"><em>int32FuncPtr</em>, </td>
18308 </tr>
18309 <tr>
18310 <td class="paramkey"></td>
18311 <td></td>
18312 <td class="paramtype">BooleanFunc&#160;</td>
18313 <td class="paramname"><em>booleanFuncPtr</em>, </td>
18314 </tr>
18315 <tr>
18316 <td class="paramkey"></td>
18317 <td></td>
18318 <td class="paramtype">Params &amp;&amp;...&#160;</td>
18319 <td class="paramname"><em>params</em>&#160;</td>
18320 </tr>
18321 <tr>
18322 <td></td>
18323 <td>)</td>
18324 <td></td><td></td>
18325 </tr>
18326 </table>
18327</div><div class="memdoc">
18328
18329<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00028">28</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
18330
18331<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
18332
18333<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.html#l00370">RefLayerSupport::IsConvertFp16ToFp32Supported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.html#l00390">RefLayerSupport::IsConvertFp32ToFp16Supported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.html#l00379">NeonLayerSupport::IsFloorSupported()</a>.</p>
18334<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">switch</span>(dataType)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> float16FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> float32FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> uint8FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> int32FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> DataType::Boolean:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> booleanFuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;}</div></div><!-- fragment -->
18335</div>
18336</div>
18337<a id="a85fcfea412723413a05f0743c84053aa"></a>
18338<h2 class="memtitle"><span class="permalink"><a href="#a85fcfea412723413a05f0743c84053aa">&#9670;&nbsp;</a></span>IsSwitchSupported()</h2>
18339
18340<div class="memitem">
18341<div class="memproto">
18342 <table class="memname">
18343 <tr>
18344 <td class="memname">bool IsSwitchSupported </td>
18345 <td>(</td>
18346 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
18347 <td class="paramname"><em>backend</em>, </td>
18348 </tr>
18349 <tr>
18350 <td class="paramkey"></td>
18351 <td></td>
18352 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18353 <td class="paramname"><em>input0</em>, </td>
18354 </tr>
18355 <tr>
18356 <td class="paramkey"></td>
18357 <td></td>
18358 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18359 <td class="paramname"><em>input1</em>, </td>
18360 </tr>
18361 <tr>
18362 <td class="paramkey"></td>
18363 <td></td>
18364 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18365 <td class="paramname"><em>output0</em>, </td>
18366 </tr>
18367 <tr>
18368 <td class="paramkey"></td>
18369 <td></td>
18370 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18371 <td class="paramname"><em>output1</em>, </td>
18372 </tr>
18373 <tr>
18374 <td class="paramkey"></td>
18375 <td></td>
18376 <td class="paramtype">char *&#160;</td>
18377 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18378 </tr>
18379 <tr>
18380 <td class="paramkey"></td>
18381 <td></td>
18382 <td class="paramtype">size_t&#160;</td>
18383 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18384 </tr>
18385 <tr>
18386 <td></td>
18387 <td>)</td>
18388 <td></td><td></td>
18389 </tr>
18390 </table>
18391</div><div class="memdoc">
18392
18393<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
18394
18395<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.html#l00653">653</a> of file <a class="el" href="_layer_support_8cpp_source.html">LayerSupport.cpp</a>.</p>
18396
18397<p class="reference">References <a class="el" href="_layer_support_8cpp_source.html#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18398<div class="fragment"><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;{</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.html#a85fcfea412723413a05f0743c84053aa">IsSwitchSupported</a>, input0, input1, output0, output1);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a85fcfea412723413a05f0743c84053aa"><div class="ttname"><a href="namespacearmnn.html#a85fcfea412723413a05f0743c84053aa">armnn::IsSwitchSupported</a></div><div class="ttdeci">bool IsSwitchSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output0, const TensorInfo &amp;output1, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00653">LayerSupport.cpp:653</a></div></div>
18399<div class="ttc" id="_layer_support_8cpp_html_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.html#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.html#l00038">LayerSupport.cpp:38</a></div></div>
18400</div><!-- fragment -->
18401</div>
18402</div>
18403<a id="ac6cc8e0bd35d229486fe6d844d88e0d4"></a>
18404<h2 class="memtitle"><span class="permalink"><a href="#ac6cc8e0bd35d229486fe6d844d88e0d4">&#9670;&nbsp;</a></span>IsTransposeConvolution2dSupported()</h2>
18405
18406<div class="memitem">
18407<div class="memproto">
18408 <table class="memname">
18409 <tr>
18410 <td class="memname">bool armnn::IsTransposeConvolution2dSupported </td>
18411 <td>(</td>
18412 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
18413 <td class="paramname"><em>backend</em>, </td>
18414 </tr>
18415 <tr>
18416 <td class="paramkey"></td>
18417 <td></td>
18418 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18419 <td class="paramname"><em>input</em>, </td>
18420 </tr>
18421 <tr>
18422 <td class="paramkey"></td>
18423 <td></td>
18424 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18425 <td class="paramname"><em>output</em>, </td>
18426 </tr>
18427 <tr>
18428 <td class="paramkey"></td>
18429 <td></td>
18430 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
18431 <td class="paramname"><em>descriptor</em>, </td>
18432 </tr>
18433 <tr>
18434 <td class="paramkey"></td>
18435 <td></td>
18436 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
18437 <td class="paramname"><em>weights</em>, </td>
18438 </tr>
18439 <tr>
18440 <td class="paramkey"></td>
18441 <td></td>
18442 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
18443 <td class="paramname"><em>biases</em>, </td>
18444 </tr>
18445 <tr>
18446 <td class="paramkey"></td>
18447 <td></td>
18448 <td class="paramtype">char *&#160;</td>
18449 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18450 </tr>
18451 <tr>
18452 <td class="paramkey"></td>
18453 <td></td>
18454 <td class="paramtype">size_t&#160;</td>
18455 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18456 </tr>
18457 <tr>
18458 <td></td>
18459 <td>)</td>
18460 <td></td><td></td>
18461 </tr>
18462 </table>
18463</div><div class="memdoc">
18464
18465<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.html" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.html">ILayerSupport</a> interfaces. </p>
18466
18467</div>
18468</div>
18469<a id="ac4fb1513cf6f4f3f40ab3d6559ec4067"></a>
18470<h2 class="memtitle"><span class="permalink"><a href="#ac4fb1513cf6f4f3f40ab3d6559ec4067">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[1/57]</span></h2>
18471
18472<div class="memitem">
18473<div class="memproto">
18474 <table class="memname">
18475 <tr>
18476 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18477 <td>(</td>
18478 <td class="paramtype">const T *&#160;</td>
18479 <td class="paramname"> = <code>nullptr</code></td><td>)</td>
18480 <td></td>
18481 </tr>
18482 </table>
18483</div><div class="memdoc">
18484
18485</div>
18486</div>
18487<a id="afb1e69829289fb07cc349c0884f27abd"></a>
18488<h2 class="memtitle"><span class="permalink"><a href="#afb1e69829289fb07cc349c0884f27abd">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[2/57]</span></h2>
18489
18490<div class="memitem">
18491<div class="memproto">
18492 <table class="memname">
18493 <tr>
18494 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18495 <td>(</td>
18496 <td class="paramtype">const <a class="el" href="classarmnn_1_1_activation_layer.html">ActivationLayer</a> *&#160;</td>
18497 <td class="paramname"></td><td>)</td>
18498 <td></td>
18499 </tr>
18500 </table>
18501</div><div class="memdoc">
18502
18503<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00093">93</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18504
18505</div>
18506</div>
18507<a id="acc630e11a5baa28ad5723568a7a60109"></a>
18508<h2 class="memtitle"><span class="permalink"><a href="#acc630e11a5baa28ad5723568a7a60109">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[3/57]</span></h2>
18509
18510<div class="memitem">
18511<div class="memproto">
18512 <table class="memname">
18513 <tr>
18514 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18515 <td>(</td>
18516 <td class="paramtype">const <a class="el" href="classarmnn_1_1_addition_layer.html">AdditionLayer</a> *&#160;</td>
18517 <td class="paramname"></td><td>)</td>
18518 <td></td>
18519 </tr>
18520 </table>
18521</div><div class="memdoc">
18522
18523<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00094">94</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18524
18525</div>
18526</div>
18527<a id="a324e860c347972fce7a1c07531bed06e"></a>
18528<h2 class="memtitle"><span class="permalink"><a href="#a324e860c347972fce7a1c07531bed06e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[4/57]</span></h2>
18529
18530<div class="memitem">
18531<div class="memproto">
18532 <table class="memname">
18533 <tr>
18534 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18535 <td>(</td>
18536 <td class="paramtype">const <a class="el" href="classarmnn_1_1_arg_min_max_layer.html">ArgMinMaxLayer</a> *&#160;</td>
18537 <td class="paramname"></td><td>)</td>
18538 <td></td>
18539 </tr>
18540 </table>
18541</div><div class="memdoc">
18542
18543<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00095">95</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18544
18545</div>
18546</div>
18547<a id="ae22db3ab5196edbb2e4e5244adc512e3"></a>
18548<h2 class="memtitle"><span class="permalink"><a href="#ae22db3ab5196edbb2e4e5244adc512e3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[5/57]</span></h2>
18549
18550<div class="memitem">
18551<div class="memproto">
18552 <table class="memname">
18553 <tr>
18554 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18555 <td>(</td>
18556 <td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_normalization_layer.html">BatchNormalizationLayer</a> *&#160;</td>
18557 <td class="paramname"></td><td>)</td>
18558 <td></td>
18559 </tr>
18560 </table>
18561</div><div class="memdoc">
18562
18563<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00096">96</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18564
18565</div>
18566</div>
18567<a id="a87ffe3fb58ec36989d343e53e23fb0f8"></a>
18568<h2 class="memtitle"><span class="permalink"><a href="#a87ffe3fb58ec36989d343e53e23fb0f8">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[6/57]</span></h2>
18569
18570<div class="memitem">
18571<div class="memproto">
18572 <table class="memname">
18573 <tr>
18574 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18575 <td>(</td>
18576 <td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.html">BatchToSpaceNdLayer</a> *&#160;</td>
18577 <td class="paramname"></td><td>)</td>
18578 <td></td>
18579 </tr>
18580 </table>
18581</div><div class="memdoc">
18582
18583<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00097">97</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18584
18585</div>
18586</div>
18587<a id="a43b8024cb70c07116be132ca28b12a21"></a>
18588<h2 class="memtitle"><span class="permalink"><a href="#a43b8024cb70c07116be132ca28b12a21">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[7/57]</span></h2>
18589
18590<div class="memitem">
18591<div class="memproto">
18592 <table class="memname">
18593 <tr>
18594 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18595 <td>(</td>
18596 <td class="paramtype">const <a class="el" href="classarmnn_1_1_comparison_layer.html">ComparisonLayer</a> *&#160;</td>
18597 <td class="paramname"></td><td>)</td>
18598 <td></td>
18599 </tr>
18600 </table>
18601</div><div class="memdoc">
18602
18603<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00098">98</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18604
18605</div>
18606</div>
18607<a id="a300c356944bb1e9d2dff6191d1c3501c"></a>
18608<h2 class="memtitle"><span class="permalink"><a href="#a300c356944bb1e9d2dff6191d1c3501c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[8/57]</span></h2>
18609
18610<div class="memitem">
18611<div class="memproto">
18612 <table class="memname">
18613 <tr>
18614 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18615 <td>(</td>
18616 <td class="paramtype">const <a class="el" href="classarmnn_1_1_concat_layer.html">ConcatLayer</a> *&#160;</td>
18617 <td class="paramname"></td><td>)</td>
18618 <td></td>
18619 </tr>
18620 </table>
18621</div><div class="memdoc">
18622
18623<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00099">99</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18624
18625</div>
18626</div>
18627<a id="a307007c2249288fe158bfdfaf9e1c413"></a>
18628<h2 class="memtitle"><span class="permalink"><a href="#a307007c2249288fe158bfdfaf9e1c413">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[9/57]</span></h2>
18629
18630<div class="memitem">
18631<div class="memproto">
18632 <table class="memname">
18633 <tr>
18634 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18635 <td>(</td>
18636 <td class="paramtype">const <a class="el" href="classarmnn_1_1_constant_layer.html">ConstantLayer</a> *&#160;</td>
18637 <td class="paramname"></td><td>)</td>
18638 <td></td>
18639 </tr>
18640 </table>
18641</div><div class="memdoc">
18642
18643<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00100">100</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18644
18645</div>
18646</div>
18647<a id="a4471d39d8390fc550c1f8688639e66f5"></a>
18648<h2 class="memtitle"><span class="permalink"><a href="#a4471d39d8390fc550c1f8688639e66f5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[10/57]</span></h2>
18649
18650<div class="memitem">
18651<div class="memproto">
18652 <table class="memname">
18653 <tr>
18654 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18655 <td>(</td>
18656 <td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.html">ConvertFp16ToFp32Layer</a> *&#160;</td>
18657 <td class="paramname"></td><td>)</td>
18658 <td></td>
18659 </tr>
18660 </table>
18661</div><div class="memdoc">
18662
18663<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00101">101</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18664
18665</div>
18666</div>
18667<a id="af8df06bed5f1257864645e45948afa5c"></a>
18668<h2 class="memtitle"><span class="permalink"><a href="#af8df06bed5f1257864645e45948afa5c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[11/57]</span></h2>
18669
18670<div class="memitem">
18671<div class="memproto">
18672 <table class="memname">
18673 <tr>
18674 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18675 <td>(</td>
18676 <td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.html">ConvertFp32ToFp16Layer</a> *&#160;</td>
18677 <td class="paramname"></td><td>)</td>
18678 <td></td>
18679 </tr>
18680 </table>
18681</div><div class="memdoc">
18682
18683<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00102">102</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18684
18685</div>
18686</div>
18687<a id="ab2f52d0c728933e36f581a07676d9fe9"></a>
18688<h2 class="memtitle"><span class="permalink"><a href="#ab2f52d0c728933e36f581a07676d9fe9">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[12/57]</span></h2>
18689
18690<div class="memitem">
18691<div class="memproto">
18692 <table class="memname">
18693 <tr>
18694 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18695 <td>(</td>
18696 <td class="paramtype">const <a class="el" href="classarmnn_1_1_convolution2d_layer.html">Convolution2dLayer</a> *&#160;</td>
18697 <td class="paramname"></td><td>)</td>
18698 <td></td>
18699 </tr>
18700 </table>
18701</div><div class="memdoc">
18702
18703<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00103">103</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18704
18705</div>
18706</div>
18707<a id="ad596268fcd03c87a4b6fde86f4732546"></a>
18708<h2 class="memtitle"><span class="permalink"><a href="#ad596268fcd03c87a4b6fde86f4732546">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[13/57]</span></h2>
18709
18710<div class="memitem">
18711<div class="memproto">
18712 <table class="memname">
18713 <tr>
18714 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18715 <td>(</td>
18716 <td class="paramtype">const <a class="el" href="classarmnn_1_1_debug_layer.html">DebugLayer</a> *&#160;</td>
18717 <td class="paramname"></td><td>)</td>
18718 <td></td>
18719 </tr>
18720 </table>
18721</div><div class="memdoc">
18722
18723<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00104">104</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18724
18725</div>
18726</div>
18727<a id="a939154289f544a02baec0735b27b8894"></a>
18728<h2 class="memtitle"><span class="permalink"><a href="#a939154289f544a02baec0735b27b8894">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[14/57]</span></h2>
18729
18730<div class="memitem">
18731<div class="memproto">
18732 <table class="memname">
18733 <tr>
18734 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18735 <td>(</td>
18736 <td class="paramtype">const <a class="el" href="classarmnn_1_1_depth_to_space_layer.html">DepthToSpaceLayer</a> *&#160;</td>
18737 <td class="paramname"></td><td>)</td>
18738 <td></td>
18739 </tr>
18740 </table>
18741</div><div class="memdoc">
18742
18743<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00105">105</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18744
18745</div>
18746</div>
18747<a id="a26a46c27bca08b5bd26abba341f1d795"></a>
18748<h2 class="memtitle"><span class="permalink"><a href="#a26a46c27bca08b5bd26abba341f1d795">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[15/57]</span></h2>
18749
18750<div class="memitem">
18751<div class="memproto">
18752 <table class="memname">
18753 <tr>
18754 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18755 <td>(</td>
18756 <td class="paramtype">const <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.html">DepthwiseConvolution2dLayer</a> *&#160;</td>
18757 <td class="paramname"></td><td>)</td>
18758 <td></td>
18759 </tr>
18760 </table>
18761</div><div class="memdoc">
18762
18763<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00106">106</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18764
18765</div>
18766</div>
18767<a id="a95e2d190d7483017b4f4841dd07776e5"></a>
18768<h2 class="memtitle"><span class="permalink"><a href="#a95e2d190d7483017b4f4841dd07776e5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[16/57]</span></h2>
18769
18770<div class="memitem">
18771<div class="memproto">
18772 <table class="memname">
18773 <tr>
18774 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18775 <td>(</td>
18776 <td class="paramtype">const <a class="el" href="classarmnn_1_1_dequantize_layer.html">DequantizeLayer</a> *&#160;</td>
18777 <td class="paramname"></td><td>)</td>
18778 <td></td>
18779 </tr>
18780 </table>
18781</div><div class="memdoc">
18782
18783<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00107">107</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18784
18785</div>
18786</div>
18787<a id="a22772d461066f995cd72d13066b0f46d"></a>
18788<h2 class="memtitle"><span class="permalink"><a href="#a22772d461066f995cd72d13066b0f46d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[17/57]</span></h2>
18789
18790<div class="memitem">
18791<div class="memproto">
18792 <table class="memname">
18793 <tr>
18794 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18795 <td>(</td>
18796 <td class="paramtype">const <a class="el" href="classarmnn_1_1_detection_post_process_layer.html">DetectionPostProcessLayer</a> *&#160;</td>
18797 <td class="paramname"></td><td>)</td>
18798 <td></td>
18799 </tr>
18800 </table>
18801</div><div class="memdoc">
18802
18803<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00108">108</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18804
18805</div>
18806</div>
18807<a id="a955b1001b8c57c60ce443a1e31468f20"></a>
18808<h2 class="memtitle"><span class="permalink"><a href="#a955b1001b8c57c60ce443a1e31468f20">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[18/57]</span></h2>
18809
18810<div class="memitem">
18811<div class="memproto">
18812 <table class="memname">
18813 <tr>
18814 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18815 <td>(</td>
18816 <td class="paramtype">const <a class="el" href="classarmnn_1_1_division_layer.html">DivisionLayer</a> *&#160;</td>
18817 <td class="paramname"></td><td>)</td>
18818 <td></td>
18819 </tr>
18820 </table>
18821</div><div class="memdoc">
18822
18823<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00109">109</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18824
18825</div>
18826</div>
18827<a id="a72f7601d11f32c8d9ccb49a80fcf662a"></a>
18828<h2 class="memtitle"><span class="permalink"><a href="#a72f7601d11f32c8d9ccb49a80fcf662a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[19/57]</span></h2>
18829
18830<div class="memitem">
18831<div class="memproto">
18832 <table class="memname">
18833 <tr>
18834 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18835 <td>(</td>
18836 <td class="paramtype">const <a class="el" href="classarmnn_1_1_elementwise_unary_layer.html">ElementwiseUnaryLayer</a> *&#160;</td>
18837 <td class="paramname"></td><td>)</td>
18838 <td></td>
18839 </tr>
18840 </table>
18841</div><div class="memdoc">
18842
18843<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00110">110</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18844
18845</div>
18846</div>
18847<a id="a4acae0cdcdfab8e941af5c4e42e58cb3"></a>
18848<h2 class="memtitle"><span class="permalink"><a href="#a4acae0cdcdfab8e941af5c4e42e58cb3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[20/57]</span></h2>
18849
18850<div class="memitem">
18851<div class="memproto">
18852 <table class="memname">
18853 <tr>
18854 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18855 <td>(</td>
18856 <td class="paramtype">const <a class="el" href="classarmnn_1_1_fake_quantization_layer.html">FakeQuantizationLayer</a> *&#160;</td>
18857 <td class="paramname"></td><td>)</td>
18858 <td></td>
18859 </tr>
18860 </table>
18861</div><div class="memdoc">
18862
18863<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00111">111</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18864
18865</div>
18866</div>
18867<a id="a575f5487e62465b6b9edbc447a26f32f"></a>
18868<h2 class="memtitle"><span class="permalink"><a href="#a575f5487e62465b6b9edbc447a26f32f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[21/57]</span></h2>
18869
18870<div class="memitem">
18871<div class="memproto">
18872 <table class="memname">
18873 <tr>
18874 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18875 <td>(</td>
18876 <td class="paramtype">const <a class="el" href="classarmnn_1_1_floor_layer.html">FloorLayer</a> *&#160;</td>
18877 <td class="paramname"></td><td>)</td>
18878 <td></td>
18879 </tr>
18880 </table>
18881</div><div class="memdoc">
18882
18883<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00112">112</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18884
18885</div>
18886</div>
18887<a id="aa689e4a3aa77e9d9e5851f566c5eb8b3"></a>
18888<h2 class="memtitle"><span class="permalink"><a href="#aa689e4a3aa77e9d9e5851f566c5eb8b3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[22/57]</span></h2>
18889
18890<div class="memitem">
18891<div class="memproto">
18892 <table class="memname">
18893 <tr>
18894 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18895 <td>(</td>
18896 <td class="paramtype">const <a class="el" href="classarmnn_1_1_fully_connected_layer.html">FullyConnectedLayer</a> *&#160;</td>
18897 <td class="paramname"></td><td>)</td>
18898 <td></td>
18899 </tr>
18900 </table>
18901</div><div class="memdoc">
18902
18903<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00113">113</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18904
18905</div>
18906</div>
18907<a id="a548fb17a9bff172e751ae4bd3add62b5"></a>
18908<h2 class="memtitle"><span class="permalink"><a href="#a548fb17a9bff172e751ae4bd3add62b5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[23/57]</span></h2>
18909
18910<div class="memitem">
18911<div class="memproto">
18912 <table class="memname">
18913 <tr>
18914 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18915 <td>(</td>
18916 <td class="paramtype">const <a class="el" href="classarmnn_1_1_gather_layer.html">GatherLayer</a> *&#160;</td>
18917 <td class="paramname"></td><td>)</td>
18918 <td></td>
18919 </tr>
18920 </table>
18921</div><div class="memdoc">
18922
18923<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00114">114</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18924
18925</div>
18926</div>
18927<a id="adef1c8c63daa9d348a29e74eac33a054"></a>
18928<h2 class="memtitle"><span class="permalink"><a href="#adef1c8c63daa9d348a29e74eac33a054">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[24/57]</span></h2>
18929
18930<div class="memitem">
18931<div class="memproto">
18932 <table class="memname">
18933 <tr>
18934 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18935 <td>(</td>
18936 <td class="paramtype">const <a class="el" href="classarmnn_1_1_input_layer.html">InputLayer</a> *&#160;</td>
18937 <td class="paramname"></td><td>)</td>
18938 <td></td>
18939 </tr>
18940 </table>
18941</div><div class="memdoc">
18942
18943<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00115">115</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18944
18945</div>
18946</div>
18947<a id="a57bcf309be7adcc91001834979f87bde"></a>
18948<h2 class="memtitle"><span class="permalink"><a href="#a57bcf309be7adcc91001834979f87bde">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[25/57]</span></h2>
18949
18950<div class="memitem">
18951<div class="memproto">
18952 <table class="memname">
18953 <tr>
18954 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18955 <td>(</td>
18956 <td class="paramtype">const <a class="el" href="classarmnn_1_1_instance_normalization_layer.html">InstanceNormalizationLayer</a> *&#160;</td>
18957 <td class="paramname"></td><td>)</td>
18958 <td></td>
18959 </tr>
18960 </table>
18961</div><div class="memdoc">
18962
18963<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00116">116</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18964
18965</div>
18966</div>
18967<a id="a36f16b97bcb662caaa4eae24ea16cccf"></a>
18968<h2 class="memtitle"><span class="permalink"><a href="#a36f16b97bcb662caaa4eae24ea16cccf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[26/57]</span></h2>
18969
18970<div class="memitem">
18971<div class="memproto">
18972 <table class="memname">
18973 <tr>
18974 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18975 <td>(</td>
18976 <td class="paramtype">const <a class="el" href="classarmnn_1_1_l2_normalization_layer.html">L2NormalizationLayer</a> *&#160;</td>
18977 <td class="paramname"></td><td>)</td>
18978 <td></td>
18979 </tr>
18980 </table>
18981</div><div class="memdoc">
18982
18983<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00117">117</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
18984
18985</div>
18986</div>
18987<a id="afb6f9bd4f43118749a0336074bed7b35"></a>
18988<h2 class="memtitle"><span class="permalink"><a href="#afb6f9bd4f43118749a0336074bed7b35">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[27/57]</span></h2>
18989
18990<div class="memitem">
18991<div class="memproto">
18992 <table class="memname">
18993 <tr>
18994 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
18995 <td>(</td>
18996 <td class="paramtype">const <a class="el" href="classarmnn_1_1_log_softmax_layer.html">LogSoftmaxLayer</a> *&#160;</td>
18997 <td class="paramname"></td><td>)</td>
18998 <td></td>
18999 </tr>
19000 </table>
19001</div><div class="memdoc">
19002
19003<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00118">118</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19004
19005</div>
19006</div>
19007<a id="a0d08fb555c6d1cba705fd73b71797a28"></a>
19008<h2 class="memtitle"><span class="permalink"><a href="#a0d08fb555c6d1cba705fd73b71797a28">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[28/57]</span></h2>
19009
19010<div class="memitem">
19011<div class="memproto">
19012 <table class="memname">
19013 <tr>
19014 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19015 <td>(</td>
19016 <td class="paramtype">const <a class="el" href="classarmnn_1_1_lstm_layer.html">LstmLayer</a> *&#160;</td>
19017 <td class="paramname"></td><td>)</td>
19018 <td></td>
19019 </tr>
19020 </table>
19021</div><div class="memdoc">
19022
19023<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00119">119</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19024
19025</div>
19026</div>
19027<a id="a6b231c8a547d4030d9a4a1618810c20b"></a>
19028<h2 class="memtitle"><span class="permalink"><a href="#a6b231c8a547d4030d9a4a1618810c20b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[29/57]</span></h2>
19029
19030<div class="memitem">
19031<div class="memproto">
19032 <table class="memname">
19033 <tr>
19034 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19035 <td>(</td>
19036 <td class="paramtype">const <a class="el" href="classarmnn_1_1_maximum_layer.html">MaximumLayer</a> *&#160;</td>
19037 <td class="paramname"></td><td>)</td>
19038 <td></td>
19039 </tr>
19040 </table>
19041</div><div class="memdoc">
19042
19043<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00120">120</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19044
19045</div>
19046</div>
19047<a id="af079ba32db74f53aba1ad19193cd2a4b"></a>
19048<h2 class="memtitle"><span class="permalink"><a href="#af079ba32db74f53aba1ad19193cd2a4b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[30/57]</span></h2>
19049
19050<div class="memitem">
19051<div class="memproto">
19052 <table class="memname">
19053 <tr>
19054 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19055 <td>(</td>
19056 <td class="paramtype">const <a class="el" href="classarmnn_1_1_mean_layer.html">MeanLayer</a> *&#160;</td>
19057 <td class="paramname"></td><td>)</td>
19058 <td></td>
19059 </tr>
19060 </table>
19061</div><div class="memdoc">
19062
19063<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00121">121</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19064
19065</div>
19066</div>
19067<a id="aa17969606f64ea581c28431f2395e653"></a>
19068<h2 class="memtitle"><span class="permalink"><a href="#aa17969606f64ea581c28431f2395e653">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[31/57]</span></h2>
19069
19070<div class="memitem">
19071<div class="memproto">
19072 <table class="memname">
19073 <tr>
19074 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19075 <td>(</td>
19076 <td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_copy_layer.html">MemCopyLayer</a> *&#160;</td>
19077 <td class="paramname"></td><td>)</td>
19078 <td></td>
19079 </tr>
19080 </table>
19081</div><div class="memdoc">
19082
19083<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00122">122</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19084
19085</div>
19086</div>
19087<a id="a70f3d83f6d1e3918eab895c8083058fa"></a>
19088<h2 class="memtitle"><span class="permalink"><a href="#a70f3d83f6d1e3918eab895c8083058fa">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[32/57]</span></h2>
19089
19090<div class="memitem">
19091<div class="memproto">
19092 <table class="memname">
19093 <tr>
19094 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19095 <td>(</td>
19096 <td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_import_layer.html">MemImportLayer</a> *&#160;</td>
19097 <td class="paramname"></td><td>)</td>
19098 <td></td>
19099 </tr>
19100 </table>
19101</div><div class="memdoc">
19102
19103<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00123">123</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19104
19105</div>
19106</div>
19107<a id="a9e8199bdc39f928f694591a41d7aa0c0"></a>
19108<h2 class="memtitle"><span class="permalink"><a href="#a9e8199bdc39f928f694591a41d7aa0c0">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[33/57]</span></h2>
19109
19110<div class="memitem">
19111<div class="memproto">
19112 <table class="memname">
19113 <tr>
19114 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19115 <td>(</td>
19116 <td class="paramtype">const <a class="el" href="classarmnn_1_1_merge_layer.html">MergeLayer</a> *&#160;</td>
19117 <td class="paramname"></td><td>)</td>
19118 <td></td>
19119 </tr>
19120 </table>
19121</div><div class="memdoc">
19122
19123<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00124">124</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19124
19125</div>
19126</div>
19127<a id="ad32a13408ace1c1fa520ed64a2cbe70f"></a>
19128<h2 class="memtitle"><span class="permalink"><a href="#ad32a13408ace1c1fa520ed64a2cbe70f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[34/57]</span></h2>
19129
19130<div class="memitem">
19131<div class="memproto">
19132 <table class="memname">
19133 <tr>
19134 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19135 <td>(</td>
19136 <td class="paramtype">const <a class="el" href="classarmnn_1_1_minimum_layer.html">MinimumLayer</a> *&#160;</td>
19137 <td class="paramname"></td><td>)</td>
19138 <td></td>
19139 </tr>
19140 </table>
19141</div><div class="memdoc">
19142
19143<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00125">125</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19144
19145</div>
19146</div>
19147<a id="a40f1546c0fa69f318eeab4b29cc64b70"></a>
19148<h2 class="memtitle"><span class="permalink"><a href="#a40f1546c0fa69f318eeab4b29cc64b70">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[35/57]</span></h2>
19149
19150<div class="memitem">
19151<div class="memproto">
19152 <table class="memname">
19153 <tr>
19154 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19155 <td>(</td>
19156 <td class="paramtype">const <a class="el" href="classarmnn_1_1_multiplication_layer.html">MultiplicationLayer</a> *&#160;</td>
19157 <td class="paramname"></td><td>)</td>
19158 <td></td>
19159 </tr>
19160 </table>
19161</div><div class="memdoc">
19162
19163<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00126">126</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19164
19165</div>
19166</div>
19167<a id="a140713619ee498a149854a5376b8d072"></a>
19168<h2 class="memtitle"><span class="permalink"><a href="#a140713619ee498a149854a5376b8d072">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[36/57]</span></h2>
19169
19170<div class="memitem">
19171<div class="memproto">
19172 <table class="memname">
19173 <tr>
19174 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19175 <td>(</td>
19176 <td class="paramtype">const <a class="el" href="classarmnn_1_1_normalization_layer.html">NormalizationLayer</a> *&#160;</td>
19177 <td class="paramname"></td><td>)</td>
19178 <td></td>
19179 </tr>
19180 </table>
19181</div><div class="memdoc">
19182
19183<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00127">127</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19184
19185</div>
19186</div>
19187<a id="a7a6e68f66d1d3819640b0f2d46a55fd1"></a>
19188<h2 class="memtitle"><span class="permalink"><a href="#a7a6e68f66d1d3819640b0f2d46a55fd1">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[37/57]</span></h2>
19189
19190<div class="memitem">
19191<div class="memproto">
19192 <table class="memname">
19193 <tr>
19194 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19195 <td>(</td>
19196 <td class="paramtype">const <a class="el" href="classarmnn_1_1_output_layer.html">OutputLayer</a> *&#160;</td>
19197 <td class="paramname"></td><td>)</td>
19198 <td></td>
19199 </tr>
19200 </table>
19201</div><div class="memdoc">
19202
19203<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00128">128</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19204
19205</div>
19206</div>
19207<a id="ab6f1994db909dcc399cb1f8bc50c2d3d"></a>
19208<h2 class="memtitle"><span class="permalink"><a href="#ab6f1994db909dcc399cb1f8bc50c2d3d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[38/57]</span></h2>
19209
19210<div class="memitem">
19211<div class="memproto">
19212 <table class="memname">
19213 <tr>
19214 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19215 <td>(</td>
19216 <td class="paramtype">const <a class="el" href="classarmnn_1_1_pad_layer.html">PadLayer</a> *&#160;</td>
19217 <td class="paramname"></td><td>)</td>
19218 <td></td>
19219 </tr>
19220 </table>
19221</div><div class="memdoc">
19222
19223<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00129">129</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19224
19225</div>
19226</div>
19227<a id="a1e6b17606926b8f69dbeda7f7ff1df95"></a>
19228<h2 class="memtitle"><span class="permalink"><a href="#a1e6b17606926b8f69dbeda7f7ff1df95">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[39/57]</span></h2>
19229
19230<div class="memitem">
19231<div class="memproto">
19232 <table class="memname">
19233 <tr>
19234 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19235 <td>(</td>
19236 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permute_layer.html">PermuteLayer</a> *&#160;</td>
19237 <td class="paramname"></td><td>)</td>
19238 <td></td>
19239 </tr>
19240 </table>
19241</div><div class="memdoc">
19242
19243<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00130">130</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19244
19245</div>
19246</div>
19247<a id="ade84059b48b38da3a233bed287864c5b"></a>
19248<h2 class="memtitle"><span class="permalink"><a href="#ade84059b48b38da3a233bed287864c5b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[40/57]</span></h2>
19249
19250<div class="memitem">
19251<div class="memproto">
19252 <table class="memname">
19253 <tr>
19254 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19255 <td>(</td>
19256 <td class="paramtype">const <a class="el" href="classarmnn_1_1_pooling2d_layer.html">Pooling2dLayer</a> *&#160;</td>
19257 <td class="paramname"></td><td>)</td>
19258 <td></td>
19259 </tr>
19260 </table>
19261</div><div class="memdoc">
19262
19263<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00131">131</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19264
19265</div>
19266</div>
19267<a id="a6e5eaa19ff232f11daa9a1c6caccf7fe"></a>
19268<h2 class="memtitle"><span class="permalink"><a href="#a6e5eaa19ff232f11daa9a1c6caccf7fe">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[41/57]</span></h2>
19269
19270<div class="memitem">
19271<div class="memproto">
19272 <table class="memname">
19273 <tr>
19274 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19275 <td>(</td>
19276 <td class="paramtype">const <a class="el" href="classarmnn_1_1_pre_compiled_layer.html">PreCompiledLayer</a> *&#160;</td>
19277 <td class="paramname"></td><td>)</td>
19278 <td></td>
19279 </tr>
19280 </table>
19281</div><div class="memdoc">
19282
19283<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00132">132</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19284
19285</div>
19286</div>
19287<a id="a58a5defa35b12773a97760efadffef4f"></a>
19288<h2 class="memtitle"><span class="permalink"><a href="#a58a5defa35b12773a97760efadffef4f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[42/57]</span></h2>
19289
19290<div class="memitem">
19291<div class="memproto">
19292 <table class="memname">
19293 <tr>
19294 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19295 <td>(</td>
19296 <td class="paramtype">const <a class="el" href="classarmnn_1_1_prelu_layer.html">PreluLayer</a> *&#160;</td>
19297 <td class="paramname"></td><td>)</td>
19298 <td></td>
19299 </tr>
19300 </table>
19301</div><div class="memdoc">
19302
19303<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00133">133</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19304
19305</div>
19306</div>
19307<a id="aaaaf64c0888ab25bfae770bd4c2ec34b"></a>
19308<h2 class="memtitle"><span class="permalink"><a href="#aaaaf64c0888ab25bfae770bd4c2ec34b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[43/57]</span></h2>
19309
19310<div class="memitem">
19311<div class="memproto">
19312 <table class="memname">
19313 <tr>
19314 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19315 <td>(</td>
19316 <td class="paramtype">const <a class="el" href="classarmnn_1_1_quantize_layer.html">QuantizeLayer</a> *&#160;</td>
19317 <td class="paramname"></td><td>)</td>
19318 <td></td>
19319 </tr>
19320 </table>
19321</div><div class="memdoc">
19322
19323<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00134">134</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19324
19325</div>
19326</div>
19327<a id="a31bcd6f755df954a4d7b020a09499105"></a>
19328<h2 class="memtitle"><span class="permalink"><a href="#a31bcd6f755df954a4d7b020a09499105">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[44/57]</span></h2>
19329
19330<div class="memitem">
19331<div class="memproto">
19332 <table class="memname">
19333 <tr>
19334 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19335 <td>(</td>
19336 <td class="paramtype">const <a class="el" href="classarmnn_1_1_quantized_lstm_layer.html">QuantizedLstmLayer</a> *&#160;</td>
19337 <td class="paramname"></td><td>)</td>
19338 <td></td>
19339 </tr>
19340 </table>
19341</div><div class="memdoc">
19342
19343<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00135">135</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19344
19345</div>
19346</div>
19347<a id="a6a17f58da2071720e3003a56a092aab3"></a>
19348<h2 class="memtitle"><span class="permalink"><a href="#a6a17f58da2071720e3003a56a092aab3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[45/57]</span></h2>
19349
19350<div class="memitem">
19351<div class="memproto">
19352 <table class="memname">
19353 <tr>
19354 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19355 <td>(</td>
19356 <td class="paramtype">const <a class="el" href="classarmnn_1_1_reshape_layer.html">ReshapeLayer</a> *&#160;</td>
19357 <td class="paramname"></td><td>)</td>
19358 <td></td>
19359 </tr>
19360 </table>
19361</div><div class="memdoc">
19362
19363<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00136">136</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19364
19365</div>
19366</div>
19367<a id="aafc370ea363f0565c3a8bced1e37c79e"></a>
19368<h2 class="memtitle"><span class="permalink"><a href="#aafc370ea363f0565c3a8bced1e37c79e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[46/57]</span></h2>
19369
19370<div class="memitem">
19371<div class="memproto">
19372 <table class="memname">
19373 <tr>
19374 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19375 <td>(</td>
19376 <td class="paramtype">const <a class="el" href="classarmnn_1_1_resize_layer.html">ResizeLayer</a> *&#160;</td>
19377 <td class="paramname"></td><td>)</td>
19378 <td></td>
19379 </tr>
19380 </table>
19381</div><div class="memdoc">
19382
19383<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00137">137</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19384
19385</div>
19386</div>
19387<a id="a3cbbb4e00618b072ace46751e660a295"></a>
19388<h2 class="memtitle"><span class="permalink"><a href="#a3cbbb4e00618b072ace46751e660a295">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[47/57]</span></h2>
19389
19390<div class="memitem">
19391<div class="memproto">
19392 <table class="memname">
19393 <tr>
19394 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19395 <td>(</td>
19396 <td class="paramtype">const <a class="el" href="classarmnn_1_1_slice_layer.html">SliceLayer</a> *&#160;</td>
19397 <td class="paramname"></td><td>)</td>
19398 <td></td>
19399 </tr>
19400 </table>
19401</div><div class="memdoc">
19402
19403<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00138">138</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19404
19405</div>
19406</div>
19407<a id="af6af4b51e08d3e811620811ab5e0cd2d"></a>
19408<h2 class="memtitle"><span class="permalink"><a href="#af6af4b51e08d3e811620811ab5e0cd2d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[48/57]</span></h2>
19409
19410<div class="memitem">
19411<div class="memproto">
19412 <table class="memname">
19413 <tr>
19414 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19415 <td>(</td>
19416 <td class="paramtype">const <a class="el" href="classarmnn_1_1_softmax_layer.html">SoftmaxLayer</a> *&#160;</td>
19417 <td class="paramname"></td><td>)</td>
19418 <td></td>
19419 </tr>
19420 </table>
19421</div><div class="memdoc">
19422
19423<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00139">139</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19424
19425</div>
19426</div>
19427<a id="ac2d31ced5505a9d05287f5b71d25e34a"></a>
19428<h2 class="memtitle"><span class="permalink"><a href="#ac2d31ced5505a9d05287f5b71d25e34a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[49/57]</span></h2>
19429
19430<div class="memitem">
19431<div class="memproto">
19432 <table class="memname">
19433 <tr>
19434 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19435 <td>(</td>
19436 <td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.html">SpaceToBatchNdLayer</a> *&#160;</td>
19437 <td class="paramname"></td><td>)</td>
19438 <td></td>
19439 </tr>
19440 </table>
19441</div><div class="memdoc">
19442
19443<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00140">140</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19444
19445</div>
19446</div>
19447<a id="a81c31de4f532a95ab85ed6d999029332"></a>
19448<h2 class="memtitle"><span class="permalink"><a href="#a81c31de4f532a95ab85ed6d999029332">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[50/57]</span></h2>
19449
19450<div class="memitem">
19451<div class="memproto">
19452 <table class="memname">
19453 <tr>
19454 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19455 <td>(</td>
19456 <td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_depth_layer.html">SpaceToDepthLayer</a> *&#160;</td>
19457 <td class="paramname"></td><td>)</td>
19458 <td></td>
19459 </tr>
19460 </table>
19461</div><div class="memdoc">
19462
19463<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00141">141</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19464
19465</div>
19466</div>
19467<a id="a24d3abbfc1ed81df673452c7148aa0cc"></a>
19468<h2 class="memtitle"><span class="permalink"><a href="#a24d3abbfc1ed81df673452c7148aa0cc">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[51/57]</span></h2>
19469
19470<div class="memitem">
19471<div class="memproto">
19472 <table class="memname">
19473 <tr>
19474 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19475 <td>(</td>
19476 <td class="paramtype">const <a class="el" href="classarmnn_1_1_splitter_layer.html">SplitterLayer</a> *&#160;</td>
19477 <td class="paramname"></td><td>)</td>
19478 <td></td>
19479 </tr>
19480 </table>
19481</div><div class="memdoc">
19482
19483<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00142">142</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19484
19485</div>
19486</div>
19487<a id="ab676aab9119d1417764849099a099ecf"></a>
19488<h2 class="memtitle"><span class="permalink"><a href="#ab676aab9119d1417764849099a099ecf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[52/57]</span></h2>
19489
19490<div class="memitem">
19491<div class="memproto">
19492 <table class="memname">
19493 <tr>
19494 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19495 <td>(</td>
19496 <td class="paramtype">const <a class="el" href="classarmnn_1_1_stack_layer.html">StackLayer</a> *&#160;</td>
19497 <td class="paramname"></td><td>)</td>
19498 <td></td>
19499 </tr>
19500 </table>
19501</div><div class="memdoc">
19502
19503<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00143">143</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19504
19505</div>
19506</div>
19507<a id="a1b5ff142f1d4420a8d83d9bcff1bfff4"></a>
19508<h2 class="memtitle"><span class="permalink"><a href="#a1b5ff142f1d4420a8d83d9bcff1bfff4">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[53/57]</span></h2>
19509
19510<div class="memitem">
19511<div class="memproto">
19512 <table class="memname">
19513 <tr>
19514 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19515 <td>(</td>
19516 <td class="paramtype">const <a class="el" href="classarmnn_1_1_stand_in_layer.html">StandInLayer</a> *&#160;</td>
19517 <td class="paramname"></td><td>)</td>
19518 <td></td>
19519 </tr>
19520 </table>
19521</div><div class="memdoc">
19522
19523<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00144">144</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19524
19525</div>
19526</div>
19527<a id="ad640080ff4ea3e4f9ff05823e32ce15f"></a>
19528<h2 class="memtitle"><span class="permalink"><a href="#ad640080ff4ea3e4f9ff05823e32ce15f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[54/57]</span></h2>
19529
19530<div class="memitem">
19531<div class="memproto">
19532 <table class="memname">
19533 <tr>
19534 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19535 <td>(</td>
19536 <td class="paramtype">const <a class="el" href="classarmnn_1_1_strided_slice_layer.html">StridedSliceLayer</a> *&#160;</td>
19537 <td class="paramname"></td><td>)</td>
19538 <td></td>
19539 </tr>
19540 </table>
19541</div><div class="memdoc">
19542
19543<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00145">145</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19544
19545</div>
19546</div>
19547<a id="a9cc235c8c5e2ef3d2788cd558d676b0a"></a>
19548<h2 class="memtitle"><span class="permalink"><a href="#a9cc235c8c5e2ef3d2788cd558d676b0a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[55/57]</span></h2>
19549
19550<div class="memitem">
19551<div class="memproto">
19552 <table class="memname">
19553 <tr>
19554 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19555 <td>(</td>
19556 <td class="paramtype">const <a class="el" href="classarmnn_1_1_subtraction_layer.html">SubtractionLayer</a> *&#160;</td>
19557 <td class="paramname"></td><td>)</td>
19558 <td></td>
19559 </tr>
19560 </table>
19561</div><div class="memdoc">
19562
19563<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00146">146</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19564
19565</div>
19566</div>
19567<a id="a110b9fdf7f17a1d065cd59ebc4bb76f7"></a>
19568<h2 class="memtitle"><span class="permalink"><a href="#a110b9fdf7f17a1d065cd59ebc4bb76f7">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[56/57]</span></h2>
19569
19570<div class="memitem">
19571<div class="memproto">
19572 <table class="memname">
19573 <tr>
19574 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19575 <td>(</td>
19576 <td class="paramtype">const <a class="el" href="classarmnn_1_1_switch_layer.html">SwitchLayer</a> *&#160;</td>
19577 <td class="paramname"></td><td>)</td>
19578 <td></td>
19579 </tr>
19580 </table>
19581</div><div class="memdoc">
19582
19583<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00147">147</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19584
19585</div>
19586</div>
19587<a id="a60af5a86cf0261d0bdf4312736ab4461"></a>
19588<h2 class="memtitle"><span class="permalink"><a href="#a60af5a86cf0261d0bdf4312736ab4461">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[57/57]</span></h2>
19589
19590<div class="memitem">
19591<div class="memproto">
19592 <table class="memname">
19593 <tr>
19594 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19595 <td>(</td>
19596 <td class="paramtype">const <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.html">TransposeConvolution2dLayer</a> *&#160;</td>
19597 <td class="paramname"></td><td>)</td>
19598 <td></td>
19599 </tr>
19600 </table>
19601</div><div class="memdoc">
19602
19603<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.html#l00148">148</a> of file <a class="el" href="_layers_fwd_8hpp_source.html">LayersFwd.hpp</a>.</p>
19604
19605</div>
19606</div>
19607<a id="a71f2cc06b097cb5c4f0a1f48130a823b"></a>
19608<h2 class="memtitle"><span class="permalink"><a href="#a71f2cc06b097cb5c4f0a1f48130a823b">&#9670;&nbsp;</a></span>LevelToString()</h2>
19609
19610<div class="memitem">
19611<div class="memproto">
19612<table class="mlabels">
19613 <tr>
19614 <td class="mlabels-left">
19615 <table class="memname">
19616 <tr>
19617 <td class="memname">std::string armnn::LevelToString </td>
19618 <td>(</td>
19619 <td class="paramtype"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
19620 <td class="paramname"><em>level</em></td><td>)</td>
19621 <td></td>
19622 </tr>
19623 </table>
19624 </td>
19625 <td class="mlabels-right">
19626<span class="mlabels"><span class="mlabel">inline</span></span> </td>
19627 </tr>
19628</table>
19629</div><div class="memdoc">
19630
19631<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.html#l00014">14</a> of file <a class="el" href="_logging_8hpp_source.html">Logging.hpp</a>.</p>
19632
19633<p class="reference">References <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>, and <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>.</p>
19634
19635<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.html#l00056">ScopedRecord::ScopedRecord()</a>.</p>
19636<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">switch</span>(level)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> LogSeverity::Trace:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Trace&quot;</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">LogSeverity::Debug</a>:</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Debug&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> LogSeverity::Info:</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Info&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> LogSeverity::Warning:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Warning&quot;</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> LogSeverity::Error:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Error&quot;</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> LogSeverity::Fatal:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Fatal&quot;</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Log&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
19637</div><!-- fragment -->
19638</div>
19639</div>
19640<a id="ac52e04c0e349e25bcdaa72c27395ef8f"></a>
19641<h2 class="memtitle"><span class="permalink"><a href="#ac52e04c0e349e25bcdaa72c27395ef8f">&#9670;&nbsp;</a></span>LogSoftmax()</h2>
19642
19643<div class="memitem">
19644<div class="memproto">
19645 <table class="memname">
19646 <tr>
19647 <td class="memname">void LogSoftmax </td>
19648 <td>(</td>
19649 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
19650 <td class="paramname"><em>input</em>, </td>
19651 </tr>
19652 <tr>
19653 <td class="paramkey"></td>
19654 <td></td>
19655 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
19656 <td class="paramname"><em>output</em>, </td>
19657 </tr>
19658 <tr>
19659 <td class="paramkey"></td>
19660 <td></td>
19661 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
19662 <td class="paramname"><em>inputInfo</em>, </td>
19663 </tr>
19664 <tr>
19665 <td class="paramkey"></td>
19666 <td></td>
19667 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> &amp;&#160;</td>
19668 <td class="paramname"><em>descriptor</em>&#160;</td>
19669 </tr>
19670 <tr>
19671 <td></td>
19672 <td>)</td>
19673 <td></td><td></td>
19674 </tr>
19675 </table>
19676</div><div class="memdoc">
19677
19678<p class="definition">Definition at line <a class="el" href="_log_softmax_8cpp_source.html#l00030">30</a> of file <a class="el" href="_log_softmax_8cpp_source.html">LogSoftmax.cpp</a>.</p>
19679
19680<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00138">SoftmaxDescriptor::m_Axis</a>, <a class="el" href="_descriptors_8hpp_source.html#l00136">SoftmaxDescriptor::m_Beta</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
19681
19682<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01399">BOOST_AUTO_TEST_CASE()</a>.</p>
19683<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = inputInfo.GetNumDimensions();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">bool</span> axisIsValid = ValidateAxis(descriptor.m_Axis, numDimensions);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; BOOST_ASSERT_MSG(axisIsValid,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="stringliteral">&quot;Axis index is not in range [-numDimensions, numDimensions).&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; boost::ignore_unused(axisIsValid);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = descriptor.m_Axis &lt; 0 ?</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; numDimensions - boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(std::abs(descriptor.m_Axis)) :</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(descriptor.m_Axis);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape, 0, uAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputShape[uAxis];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uAxis + 1,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; inputShape.GetNumDimensions());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerSize; ++outer)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerSize; ++inner)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Find max</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; input[outer * axisSize * innerSize + inner];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">float</span> maxValue = input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1u; i &lt; axisSize; ++i)</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; input[(outer * axisSize + i) * innerSize + inner];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; maxValue = std::max(maxValue, input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</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="comment">// Compute sum</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; axisSize; ++i)</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"> 70</span>&#160; input[(outer * axisSize + i) * innerSize + inner];</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; sum += std::exp((input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * descriptor.m_Beta);</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;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Compute log sum</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> logSum = std::log(sum);</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"> 77</span>&#160; <span class="comment">// Compute result</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; axisSize; ++i)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = (outer * axisSize + i) * innerSize + inner;</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; input [index];</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; output[index];</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; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>((input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * descriptor.m_Beta - logSum);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
19684<div class="ttc" id="namespacearmnn_utils_html_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00113">TensorUtils.cpp:113</a></div></div>
19685<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
19686</div><!-- fragment -->
19687</div>
19688</div>
19689<a id="a27ecdfeeea12de313f2b97d309a35d9d"></a>
19690<h2 class="memtitle"><span class="permalink"><a href="#a27ecdfeeea12de313f2b97d309a35d9d">&#9670;&nbsp;</a></span>LowerString()</h2>
19691
19692<div class="memitem">
19693<div class="memproto">
19694 <table class="memname">
19695 <tr>
19696 <td class="memname">std::string armnn::LowerString </td>
19697 <td>(</td>
19698 <td class="paramtype">std::string&#160;</td>
19699 <td class="paramname"><em>value</em></td><td>)</td>
19700 <td></td>
19701 </tr>
19702 </table>
19703</div><div class="memdoc">
19704
19705<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00061">61</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
19706<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; std::transform(value.begin(), value.end(), value.begin(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c){ <span class="keywordflow">return</span> std::tolower(c); });</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> value;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
19707</div>
19708</div>
19709<a id="a1545cb162c5a64d75d9c0c05e8ea387c"></a>
19710<h2 class="memtitle"><span class="permalink"><a href="#a1545cb162c5a64d75d9c0c05e8ea387c">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[1/2]</span></h2>
19711
19712<div class="memitem">
19713<div class="memproto">
19714<table class="mlabels">
19715 <tr>
19716 <td class="mlabels-left">
19717 <table class="memname">
19718 <tr>
19719 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt;T&gt; &gt; armnn::MakeDecoder </td>
19720 <td>(</td>
19721 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
19722 <td class="paramname"><em>info</em>, </td>
19723 </tr>
19724 <tr>
19725 <td class="paramkey"></td>
19726 <td></td>
19727 <td class="paramtype">const void *&#160;</td>
19728 <td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
19729 </tr>
19730 <tr>
19731 <td></td>
19732 <td>)</td>
19733 <td></td><td></td>
19734 </tr>
19735 </table>
19736 </td>
19737 <td class="mlabels-right">
19738<span class="mlabels"><span class="mlabel">inline</span></span> </td>
19739 </tr>
19740</table>
19741</div><div class="memdoc">
19742
19743<p class="definition">Definition at line <a class="el" href="_decoders_8hpp_source.html#l00070">70</a> of file <a class="el" href="_decoders_8hpp_source.html">Decoders.hpp</a>.</p>
19744
19745<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
19746<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</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"> 77</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; params.second,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; params.first);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</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"> 86</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Decoder&gt;(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</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; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Decoder&gt;(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</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; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Decoder&gt;(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</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; <span class="keywordflow">return</span> std::make_unique&lt;Float16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</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> std::make_unique&lt;Float32Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</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; <span class="keywordflow">case</span> DataType::Signed32:</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"> 115</span>&#160; <span class="keywordflow">return</span> MakeSigned32Decoder(info, data);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</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; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; params.second,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; params.first);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Decoder&gt;(</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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"> 135</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported Data Type!&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</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> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
19747<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
19748<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
19749<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
19750<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
19751<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
19752</div><!-- fragment -->
19753</div>
19754</div>
19755<a id="adb59a379c467b6d48874e946183b4d21"></a>
19756<h2 class="memtitle"><span class="permalink"><a href="#adb59a379c467b6d48874e946183b4d21">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[2/2]</span></h2>
19757
19758<div class="memitem">
19759<div class="memproto">
19760<table class="mlabels">
19761 <tr>
19762 <td class="mlabels-left">
19763 <table class="memname">
19764 <tr>
19765 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt;float&gt; &gt; armnn::MakeDecoder </td>
19766 <td>(</td>
19767 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
19768 <td class="paramname"><em>info</em>, </td>
19769 </tr>
19770 <tr>
19771 <td class="paramkey"></td>
19772 <td></td>
19773 <td class="paramtype">const void *&#160;</td>
19774 <td class="paramname"><em>data</em>&#160;</td>
19775 </tr>
19776 <tr>
19777 <td></td>
19778 <td>)</td>
19779 <td></td><td></td>
19780 </tr>
19781 </table>
19782 </td>
19783 <td class="mlabels-right">
19784<span class="mlabels"><span class="mlabel">inline</span></span> </td>
19785 </tr>
19786</table>
19787</div><div class="memdoc">
19788
19789<p class="definition">Definition at line <a class="el" href="_decoders_8hpp_source.html#l00070">70</a> of file <a class="el" href="_decoders_8hpp_source.html">Decoders.hpp</a>.</p>
19790
19791<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
19792<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</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"> 77</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; params.second,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; params.first);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</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"> 86</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Decoder&gt;(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</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; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Decoder&gt;(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</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; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Decoder&gt;(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</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; <span class="keywordflow">return</span> std::make_unique&lt;Float16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</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> std::make_unique&lt;Float32Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</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; <span class="keywordflow">case</span> DataType::Signed32:</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"> 115</span>&#160; <span class="keywordflow">return</span> MakeSigned32Decoder(info, data);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</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; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; params.second,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; params.first);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Decoder&gt;(</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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"> 135</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported Data Type!&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</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> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
19793<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
19794<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
19795<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
19796<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
19797<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
19798</div><!-- fragment -->
19799</div>
19800</div>
19801<a id="a56867cc5245724ab56953604b1eec9ee"></a>
19802<h2 class="memtitle"><span class="permalink"><a href="#a56867cc5245724ab56953604b1eec9ee">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[1/3]</span></h2>
19803
19804<div class="memitem">
19805<div class="memproto">
19806<table class="mlabels">
19807 <tr>
19808 <td class="mlabels-left">
19809 <table class="memname">
19810 <tr>
19811 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt;T&gt; &gt; armnn::MakeEncoder </td>
19812 <td>(</td>
19813 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
19814 <td class="paramname"><em>info</em>, </td>
19815 </tr>
19816 <tr>
19817 <td class="paramkey"></td>
19818 <td></td>
19819 <td class="paramtype">void *&#160;</td>
19820 <td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
19821 </tr>
19822 <tr>
19823 <td></td>
19824 <td>)</td>
19825 <td></td><td></td>
19826 </tr>
19827 </table>
19828 </td>
19829 <td class="mlabels-right">
19830<span class="mlabels"><span class="mlabel">inline</span></span> </td>
19831 </tr>
19832</table>
19833</div><div class="memdoc">
19834
19835<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.html#l00021">21</a> of file <a class="el" href="_encoders_8hpp_source.html">Encoders.hpp</a>.</p>
19836
19837<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
19838<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; params.second,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; params.first);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Encoder&gt;(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Encoder&gt;(</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; params.second,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; params.first);</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">else</span></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; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Encoder&gt;(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Encoder&gt;(</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">static_cast&lt;</span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;Int32Encoder&gt;(<span class="keyword">static_cast&lt;</span>int32_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</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">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;Float32Encoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</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"> 86</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported target Data Type!&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
19839<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
19840<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
19841<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
19842<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
19843<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
19844<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
19845<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
19846<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
19847<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
19848<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
19849<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
19850</div><!-- fragment -->
19851</div>
19852</div>
19853<a id="a363da7c8d642ea382e3bd2f1c6283d52"></a>
19854<h2 class="memtitle"><span class="permalink"><a href="#a363da7c8d642ea382e3bd2f1c6283d52">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[2/3]</span></h2>
19855
19856<div class="memitem">
19857<div class="memproto">
19858<table class="mlabels">
19859 <tr>
19860 <td class="mlabels-left">
19861 <table class="memname">
19862 <tr>
19863 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt;float&gt; &gt; armnn::MakeEncoder </td>
19864 <td>(</td>
19865 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
19866 <td class="paramname"><em>info</em>, </td>
19867 </tr>
19868 <tr>
19869 <td class="paramkey"></td>
19870 <td></td>
19871 <td class="paramtype">void *&#160;</td>
19872 <td class="paramname"><em>data</em>&#160;</td>
19873 </tr>
19874 <tr>
19875 <td></td>
19876 <td>)</td>
19877 <td></td><td></td>
19878 </tr>
19879 </table>
19880 </td>
19881 <td class="mlabels-right">
19882<span class="mlabels"><span class="mlabel">inline</span></span> </td>
19883 </tr>
19884</table>
19885</div><div class="memdoc">
19886
19887<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.html#l00021">21</a> of file <a class="el" href="_encoders_8hpp_source.html">Encoders.hpp</a>.</p>
19888
19889<p class="reference">References <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
19890<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; params.second,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; params.first);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Encoder&gt;(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Encoder&gt;(</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; params.second,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; params.first);</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">else</span></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; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Encoder&gt;(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;QSymm16Encoder&gt;(</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">static_cast&lt;</span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;Int32Encoder&gt;(<span class="keyword">static_cast&lt;</span>int32_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</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">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;Float32Encoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</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"> 86</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported target Data Type!&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.html#l00016">Half.hpp:16</a></div></div>
19891<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
19892<div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
19893<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
19894<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
19895<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
19896<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
19897<div class="ttc" id="namespacearmnn_utils_html_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00152">TensorUtils.cpp:152</a></div></div>
19898<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
19899<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
19900<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
19901<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
19902</div><!-- fragment -->
19903</div>
19904</div>
19905<a id="a6fcd01a9cdee158d3022ad089c27c078"></a>
19906<h2 class="memtitle"><span class="permalink"><a href="#a6fcd01a9cdee158d3022ad089c27c078">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[3/3]</span></h2>
19907
19908<div class="memitem">
19909<div class="memproto">
19910<table class="mlabels">
19911 <tr>
19912 <td class="mlabels-left">
19913 <table class="memname">
19914 <tr>
19915 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt;bool&gt; &gt; armnn::MakeEncoder </td>
19916 <td>(</td>
19917 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
19918 <td class="paramname"><em>info</em>, </td>
19919 </tr>
19920 <tr>
19921 <td class="paramkey"></td>
19922 <td></td>
19923 <td class="paramtype">void *&#160;</td>
19924 <td class="paramname"><em>data</em>&#160;</td>
19925 </tr>
19926 <tr>
19927 <td></td>
19928 <td>)</td>
19929 <td></td><td></td>
19930 </tr>
19931 </table>
19932 </td>
19933 <td class="mlabels-right">
19934<span class="mlabels"><span class="mlabel">inline</span></span> </td>
19935 </tr>
19936</table>
19937</div><div class="memdoc">
19938
19939<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.html#l00096">96</a> of file <a class="el" href="_encoders_8hpp_source.html">Encoders.hpp</a>.</p>
19940
19941<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, and <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>.</p>
19942<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</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; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;BooleanEncoder&gt;(<span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">default</span>:</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; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Cannot encode from boolean. Not supported target Data Type!&quot;</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
19943<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a></div></div>
19944</div><!-- fragment -->
19945</div>
19946</div>
19947<a id="ae0ae21bef03ed19f252c72c660e571a4"></a>
19948<h2 class="memtitle"><span class="permalink"><a href="#ae0ae21bef03ed19f252c72c660e571a4">&#9670;&nbsp;</a></span>MakeInfo()</h2>
19949
19950<div class="memitem">
19951<div class="memproto">
19952 <table class="memname">
19953 <tr>
19954 <td class="memname">arm_compute::DetectionPostProcessLayerInfo armnn::MakeInfo </td>
19955 <td>(</td>
19956 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
19957 <td class="paramname"><em>desc</em></td><td>)</td>
19958 <td></td>
19959 </tr>
19960 </table>
19961</div><div class="memdoc">
19962
19963<p class="definition">Definition at line <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html">NeonDetectionPostProcessWorkload.cpp</a>.</p>
19964
19965<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00531">DetectionPostProcessDescriptor::m_DetectionsPerClass</a>, <a class="el" href="_descriptors_8hpp_source.html#l00529">DetectionPostProcessDescriptor::m_MaxClassesPerDetection</a>, <a class="el" href="_descriptors_8hpp_source.html#l00527">DetectionPostProcessDescriptor::m_MaxDetections</a>, <a class="el" href="_descriptors_8hpp_source.html#l00535">DetectionPostProcessDescriptor::m_NmsIouThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00533">DetectionPostProcessDescriptor::m_NmsScoreThreshold</a>, <a class="el" href="_descriptors_8hpp_source.html#l00537">DetectionPostProcessDescriptor::m_NumClasses</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00539">DetectionPostProcessDescriptor::m_UseRegularNms</a>.</p>
19966
19967<p class="reference">Referenced by <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00033">NeonDetectionPostProcessValidate()</a>.</p>
19968<div class="fragment"><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="keywordflow">return</span> arm_compute::DetectionPostProcessLayerInfo(desc.m_MaxDetections,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; desc.m_MaxClassesPerDetection,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; desc.m_NmsIouThreshold,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; desc.m_NumClasses,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; { desc.m_ScaleX,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; desc.m_ScaleY,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; desc.m_ScaleW,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; desc.m_ScaleH },</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; desc.m_UseRegularNms,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; desc.m_DetectionsPerClass);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
19969</div>
19970</div>
19971<a id="aa7427025a851113a492de0b68b23d22a"></a>
19972<h2 class="memtitle"><span class="permalink"><a href="#aa7427025a851113a492de0b68b23d22a">&#9670;&nbsp;</a></span>MakeOptimizations()</h2>
19973
19974<div class="memitem">
19975<div class="memproto">
19976 <table class="memname">
19977 <tr>
19978 <td class="memname"><a class="el" href="classarmnn_1_1_optimizer.html#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> armnn::MakeOptimizations </td>
19979 <td>(</td>
19980 <td class="paramtype">Args &amp;&amp;...&#160;</td>
19981 <td class="paramname"><em>args</em></td><td>)</td>
19982 <td></td>
19983 </tr>
19984 </table>
19985</div><div class="memdoc">
19986
19987<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.html#l00043">43</a> of file <a class="el" href="_optimizer_8hpp_source.html">Optimizer.hpp</a>.</p>
19988
19989<p class="reference">References <a class="el" href="_optimizer_8hpp_source.html#l00030">Append()</a>.</p>
19990
19991<p class="reference">Referenced by <a class="el" href="_convert_constants_float_to_half_tests_8cpp_source.html#l00018">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
19992<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Optimizer::Optimizations optimizations;</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; <a class="code" href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">Append</a>(optimizations, std::forward&lt;Args&gt;(args)...);</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; <span class="keywordflow">return</span> optimizations;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a0c8a28b71e49c04596289ff281e58f1a"><div class="ttname"><a href="namespacearmnn.html#a0c8a28b71e49c04596289ff281e58f1a">armnn::Append</a></div><div class="ttdeci">void Append(Optimizer::Optimizations &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.html#l00036">Optimizer.hpp:36</a></div></div>
19993</div><!-- fragment -->
19994</div>
19995</div>
19996<a id="a77780137c47f528921f6537447060f05"></a>
19997<h2 class="memtitle"><span class="permalink"><a href="#a77780137c47f528921f6537447060f05">&#9670;&nbsp;</a></span>MakeOptional()</h2>
19998
19999<div class="memitem">
20000<div class="memproto">
20001 <table class="memname">
20002 <tr>
20003 <td class="memname"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt;T&gt; armnn::MakeOptional </td>
20004 <td>(</td>
20005 <td class="paramtype">Args &amp;&amp;...&#160;</td>
20006 <td class="paramname"><em>args</em></td><td>)</td>
20007 <td></td>
20008 </tr>
20009 </table>
20010</div><div class="memdoc">
20011
20012<p class="definition">Definition at line <a class="el" href="_optional_8hpp_source.html#l00304">304</a> of file <a class="el" href="_optional_8hpp_source.html">Optional.hpp</a>.</p>
20013
20014<p class="reference">References <a class="el" href="_optional_8hpp_source.html#l00041">CONSTRUCT_IN_PLACE</a>.</p>
20015<div class="fragment"><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; <span class="keywordflow">return</span> Optional&lt;T&gt;(<a class="code" href="_optional_8hpp.html#acbec11f88a308826fa811f370d363a4a">CONSTRUCT_IN_PLACE</a>, std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div><div class="ttc" id="_optional_8hpp_html_acbec11f88a308826fa811f370d363a4a"><div class="ttname"><a href="_optional_8hpp.html#acbec11f88a308826fa811f370d363a4a">CONSTRUCT_IN_PLACE</a></div><div class="ttdeci">#define CONSTRUCT_IN_PLACE</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.html#l00041">Optional.hpp:41</a></div></div>
20016</div><!-- fragment -->
20017</div>
20018</div>
20019<a id="a165ae372a7f67cad64ef3395d30122ce"></a>
20020<h2 class="memtitle"><span class="permalink"><a href="#a165ae372a7f67cad64ef3395d30122ce">&#9670;&nbsp;</a></span>Mean()</h2>
20021
20022<div class="memitem">
20023<div class="memproto">
20024 <table class="memname">
20025 <tr>
20026 <td class="memname">void Mean </td>
20027 <td>(</td>
20028 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
20029 <td class="paramname"><em>inputInfo</em>, </td>
20030 </tr>
20031 <tr>
20032 <td class="paramkey"></td>
20033 <td></td>
20034 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
20035 <td class="paramname"><em>outputInfo</em>, </td>
20036 </tr>
20037 <tr>
20038 <td class="paramkey"></td>
20039 <td></td>
20040 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
20041 <td class="paramname"><em>axis</em>, </td>
20042 </tr>
20043 <tr>
20044 <td class="paramkey"></td>
20045 <td></td>
20046 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
20047 <td class="paramname"><em>input</em>, </td>
20048 </tr>
20049 <tr>
20050 <td class="paramkey"></td>
20051 <td></td>
20052 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
20053 <td class="paramname"><em>output</em>&#160;</td>
20054 </tr>
20055 <tr>
20056 <td></td>
20057 <td>)</td>
20058 <td></td><td></td>
20059 </tr>
20060 </table>
20061</div><div class="memdoc">
20062
20063<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">71</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html">Mean.cpp</a>.</p>
20064
20065<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00018">NextIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00039">ReducedOutputOffset()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
20066
20067<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01456">BOOST_AUTO_TEST_CASE()</a>.</p>
20068<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNumDims = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNumDims = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> outputDims = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> inputDims = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</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; <span class="comment">// Initialise output data.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = 1;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; outputNumDims; ++idx)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; numOutputs *= outputDims[idx];</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;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::vector&lt;float&gt; tempSum(numOutputs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numOutputs; ++idx)</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; output[idx];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(0.0f);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; tempSum[idx] = 0.0f;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// Initialise temp index.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::vector&lt;unsigned int&gt; tempIndex(inputNumDims);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; inputNumDims; ++idx)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; tempIndex[idx] = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</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; std::vector&lt;unsigned int&gt; resolvedAxis = axis;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (resolvedAxis.empty())</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; inputNumDims; ++idx)</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; resolvedAxis.push_back(idx);</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; <span class="keyword">auto</span> numResolvedAxis = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(resolvedAxis.size());</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Iterates through input_data and sum up the reduced axis.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">bool</span> hasNext = <span class="keyword">true</span>; hasNext; hasNext = <a class="code" href="namespacearmnn.html#a869f740e9c2fcb8642350c6e3d0b3742">NextIndex</a>(inputNumDims, inputDims, tempIndex))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputOffset = <a class="code" href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a>(inputNumDims, inputDims, tempIndex, 0, {});</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputOffset = <a class="code" href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a>(inputNumDims, inputDims, tempIndex,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; numResolvedAxis, resolvedAxis);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; input[inputOffset];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; tempSum[outputOffset] += input.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</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"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// Takes average by num of elements added to get mean.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">size_t</span> numElementsInAxis = 1;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numResolvedAxis; ++idx)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current = inputDims[resolvedAxis[idx]];</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; BOOST_ASSERT(boost::numeric_cast&lt;float&gt;(current) &lt;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; (std::numeric_limits&lt;float&gt;::max() / boost::numeric_cast&lt;float&gt;(numElementsInAxis)));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; numElementsInAxis *= current;</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"> 135</span>&#160; <span class="keywordflow">if</span> (numElementsInAxis &gt; 0) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numOutputs; ++idx)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; output[idx];</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(tempSum[idx] / boost::numeric_cast&lt;float&gt;(numElementsInAxis));</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; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00092">Tensor.hpp:92</a></div></div>
20069<div class="ttc" id="namespacearmnn_html_a869f740e9c2fcb8642350c6e3d0b3742"><div class="ttname"><a href="namespacearmnn.html#a869f740e9c2fcb8642350c6e3d0b3742">armnn::NextIndex</a></div><div class="ttdeci">bool NextIndex(const unsigned int numDims, const armnn::TensorShape &amp;dims, std::vector&lt; unsigned int &gt; &amp;current)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00018">Mean.cpp:18</a></div></div>
20070<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
20071<div class="ttc" id="namespacearmnn_html_ae86f1ca23eaa764da9e589cc8e39a969"><div class="ttname"><a href="namespacearmnn.html#ae86f1ca23eaa764da9e589cc8e39a969">armnn::ReducedOutputOffset</a></div><div class="ttdeci">unsigned int ReducedOutputOffset(const unsigned int numDims, const armnn::TensorShape &amp;dims, std::vector&lt; unsigned int &gt; &amp;index, const unsigned int numAxis, const std::vector&lt; unsigned int &gt; &amp;axis)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00039">Mean.cpp:39</a></div></div>
20072<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
20073<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
20074<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
20075</div><!-- fragment -->
20076</div>
20077</div>
20078<a id="a17955517b0d148f7ffdbffe8b46e41e0"></a>
20079<h2 class="memtitle"><span class="permalink"><a href="#a17955517b0d148f7ffdbffe8b46e41e0">&#9670;&nbsp;</a></span>MockBackendId()</h2>
20080
20081<div class="memitem">
20082<div class="memproto">
20083 <table class="memname">
20084 <tr>
20085 <td class="memname">constexpr const char* armnn::MockBackendId </td>
20086 <td>(</td>
20087 <td class="paramname"></td><td>)</td>
20088 <td></td>
20089 </tr>
20090 </table>
20091</div><div class="memdoc">
20092
20093<p class="definition">Definition at line <a class="el" href="_mock_backend_id_8hpp_source.html#l00011">11</a> of file <a class="el" href="_mock_backend_id_8hpp_source.html">MockBackendId.hpp</a>.</p>
20094
20095<p class="reference">Referenced by <a class="el" href="_backend_profiling_tests_8cpp_source.html#l00111">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_mock_backend_8cpp_source.html#l00091">MockBackend::GetIdStatic()</a>, and <a class="el" href="_mock_backend_8cpp_source.html#l00134">MockBackend::OptimizeSubgraphView()</a>.</p>
20096<div class="fragment"><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;MockAcc&quot;</span>; }</div></div><!-- fragment -->
20097</div>
20098</div>
20099<a id="afc773aec6f845adc0cc547ce475dfe3f"></a>
20100<h2 class="memtitle"><span class="permalink"><a href="#afc773aec6f845adc0cc547ce475dfe3f">&#9670;&nbsp;</a></span>NeonAbsWorkloadValidate()</h2>
20101
20102<div class="memitem">
20103<div class="memproto">
20104 <table class="memname">
20105 <tr>
20106 <td class="memname">arm_compute::Status NeonAbsWorkloadValidate </td>
20107 <td>(</td>
20108 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20109 <td class="paramname"><em>input</em>, </td>
20110 </tr>
20111 <tr>
20112 <td class="paramkey"></td>
20113 <td></td>
20114 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20115 <td class="paramname"><em>output</em>&#160;</td>
20116 </tr>
20117 <tr>
20118 <td></td>
20119 <td>)</td>
20120 <td></td><td></td>
20121 </tr>
20122 </table>
20123</div><div class="memdoc">
20124
20125<p class="definition">Definition at line <a class="el" href="_neon_abs_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_abs_workload_8cpp_source.html">NeonAbsWorkload.cpp</a>.</p>
20126
20127<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00356">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
20128<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEAbsLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
20129</div>
20130</div>
20131<a id="a46495807633a01d826851e1cb498f071"></a>
20132<h2 class="memtitle"><span class="permalink"><a href="#a46495807633a01d826851e1cb498f071">&#9670;&nbsp;</a></span>NeonActivationWorkloadValidate()</h2>
20133
20134<div class="memitem">
20135<div class="memproto">
20136 <table class="memname">
20137 <tr>
20138 <td class="memname">arm_compute::Status NeonActivationWorkloadValidate </td>
20139 <td>(</td>
20140 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20141 <td class="paramname"><em>input</em>, </td>
20142 </tr>
20143 <tr>
20144 <td class="paramkey"></td>
20145 <td></td>
20146 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20147 <td class="paramname"><em>output</em>, </td>
20148 </tr>
20149 <tr>
20150 <td class="paramkey"></td>
20151 <td></td>
20152 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.html">ActivationDescriptor</a> &amp;&#160;</td>
20153 <td class="paramname"><em>descriptor</em>&#160;</td>
20154 </tr>
20155 <tr>
20156 <td></td>
20157 <td>)</td>
20158 <td></td><td></td>
20159 </tr>
20160 </table>
20161</div><div class="memdoc">
20162
20163<p class="definition">Definition at line <a class="el" href="_neon_activation_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_activation_workload_8cpp_source.html">NeonActivationWorkload.cpp</a>.</p>
20164
20165<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00131">NeonLayerSupport::IsActivationSupported()</a>.</p>
20166<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::ActivationLayerInfo activationLayerInfo =</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a>(descriptor);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEActivationLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; activationLayerInfo);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad701d0d29baa4266ab4d33b090aa661c"><div class="ttname"><a href="namespacearmnn.html#ad701d0d29baa4266ab4d33b090aa661c">armnn::ConvertActivationDescriptorToAclActivationLayerInfo</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo ConvertActivationDescriptorToAclActivationLayerInfo(const ActivationDescriptor &amp;actDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00073">ArmComputeUtils.hpp:73</a></div></div>
20167</div><!-- fragment -->
20168</div>
20169</div>
20170<a id="afc541536011ccfb06853c45bfaba2dfd"></a>
20171<h2 class="memtitle"><span class="permalink"><a href="#afc541536011ccfb06853c45bfaba2dfd">&#9670;&nbsp;</a></span>NeonAdditionWorkloadValidate()</h2>
20172
20173<div class="memitem">
20174<div class="memproto">
20175 <table class="memname">
20176 <tr>
20177 <td class="memname">arm_compute::Status NeonAdditionWorkloadValidate </td>
20178 <td>(</td>
20179 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20180 <td class="paramname"><em>input0</em>, </td>
20181 </tr>
20182 <tr>
20183 <td class="paramkey"></td>
20184 <td></td>
20185 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20186 <td class="paramname"><em>input1</em>, </td>
20187 </tr>
20188 <tr>
20189 <td class="paramkey"></td>
20190 <td></td>
20191 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20192 <td class="paramname"><em>output</em>&#160;</td>
20193 </tr>
20194 <tr>
20195 <td></td>
20196 <td>)</td>
20197 <td></td><td></td>
20198 </tr>
20199 </table>
20200</div><div class="memdoc">
20201
20202<p class="definition">Definition at line <a class="el" href="_neon_addition_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_addition_workload_8cpp_source.html">NeonAdditionWorkload.cpp</a>.</p>
20203
20204<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00144">NeonLayerSupport::IsAdditionSupported()</a>.</p>
20205<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArithmeticAddition::validate(&amp;aclInput0,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; arm_compute::ConvertPolicy::SATURATE);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
20206</div>
20207</div>
20208<a id="a61d1f39297fec6e3062e4047dc5f236e"></a>
20209<h2 class="memtitle"><span class="permalink"><a href="#a61d1f39297fec6e3062e4047dc5f236e">&#9670;&nbsp;</a></span>NeonArgMinMaxWorkloadValidate()</h2>
20210
20211<div class="memitem">
20212<div class="memproto">
20213 <table class="memname">
20214 <tr>
20215 <td class="memname">arm_compute::Status NeonArgMinMaxWorkloadValidate </td>
20216 <td>(</td>
20217 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20218 <td class="paramname"><em>input</em>, </td>
20219 </tr>
20220 <tr>
20221 <td class="paramkey"></td>
20222 <td></td>
20223 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20224 <td class="paramname"><em>output</em>, </td>
20225 </tr>
20226 <tr>
20227 <td class="paramkey"></td>
20228 <td></td>
20229 <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.html">ArgMinMaxDescriptor</a> &amp;&#160;</td>
20230 <td class="paramname"><em>descriptor</em>&#160;</td>
20231 </tr>
20232 <tr>
20233 <td></td>
20234 <td>)</td>
20235 <td></td><td></td>
20236 </tr>
20237 </table>
20238</div><div class="memdoc">
20239
20240<p class="definition">Definition at line <a class="el" href="_neon_arg_min_max_workload_8cpp_source.html#l00029">29</a> of file <a class="el" href="_neon_arg_min_max_workload_8cpp_source.html">NeonArgMinMaxWorkload.cpp</a>.</p>
20241
20242<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00156">NeonLayerSupport::IsArgMinMaxSupported()</a>.</p>
20243<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">auto</span> numDims = input.GetNumDimensions();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">auto</span> unsignedAxis = <a class="code" href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(numDims, descriptor.m_Axis);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">int</span> aclAxis = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(CalcAclAxis(numDims, unsignedAxis));</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; <span class="keywordflow">if</span> (descriptor.m_Function == ArgMinMaxFunction::Max)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MAX);</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"> 45</span>&#160; <span class="keywordflow">else</span></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> arm_compute::NEArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MIN);</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"> 50</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00127">TensorUtils.cpp:127</a></div></div>
20244</div><!-- fragment -->
20245</div>
20246</div>
20247<a id="a3a34a305e5187f3a3c67030d3bebbdb0"></a>
20248<h2 class="memtitle"><span class="permalink"><a href="#a3a34a305e5187f3a3c67030d3bebbdb0">&#9670;&nbsp;</a></span>NeonBackendId()</h2>
20249
20250<div class="memitem">
20251<div class="memproto">
20252 <table class="memname">
20253 <tr>
20254 <td class="memname">constexpr const char* armnn::NeonBackendId </td>
20255 <td>(</td>
20256 <td class="paramname"></td><td>)</td>
20257 <td></td>
20258 </tr>
20259 </table>
20260</div><div class="memdoc">
20261
20262<p class="definition">Definition at line <a class="el" href="_neon_backend_id_8hpp_source.html#l00010">10</a> of file <a class="el" href="_neon_backend_id_8hpp_source.html">NeonBackendId.hpp</a>.</p>
20263
20264<p class="reference">Referenced by <a class="el" href="_neon_backend_8cpp_source.html#l00029">NeonBackend::GetIdStatic()</a>.</p>
20265<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuAcc&quot;</span>; }</div></div><!-- fragment -->
20266</div>
20267</div>
20268<a id="a6c856ceba1828fe201b2b6c032d70371"></a>
20269<h2 class="memtitle"><span class="permalink"><a href="#a6c856ceba1828fe201b2b6c032d70371">&#9670;&nbsp;</a></span>NeonBatchNormalizationValidate()</h2>
20270
20271<div class="memitem">
20272<div class="memproto">
20273 <table class="memname">
20274 <tr>
20275 <td class="memname">arm_compute::Status NeonBatchNormalizationValidate </td>
20276 <td>(</td>
20277 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20278 <td class="paramname"><em>input</em>, </td>
20279 </tr>
20280 <tr>
20281 <td class="paramkey"></td>
20282 <td></td>
20283 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20284 <td class="paramname"><em>output</em>, </td>
20285 </tr>
20286 <tr>
20287 <td class="paramkey"></td>
20288 <td></td>
20289 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20290 <td class="paramname"><em>mean</em>, </td>
20291 </tr>
20292 <tr>
20293 <td class="paramkey"></td>
20294 <td></td>
20295 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20296 <td class="paramname"><em>var</em>, </td>
20297 </tr>
20298 <tr>
20299 <td class="paramkey"></td>
20300 <td></td>
20301 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20302 <td class="paramname"><em>beta</em>, </td>
20303 </tr>
20304 <tr>
20305 <td class="paramkey"></td>
20306 <td></td>
20307 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20308 <td class="paramname"><em>gamma</em>, </td>
20309 </tr>
20310 <tr>
20311 <td class="paramkey"></td>
20312 <td></td>
20313 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.html">BatchNormalizationDescriptor</a> &amp;&#160;</td>
20314 <td class="paramname"><em>descriptor</em>&#160;</td>
20315 </tr>
20316 <tr>
20317 <td></td>
20318 <td>)</td>
20319 <td></td><td></td>
20320 </tr>
20321 </table>
20322</div><div class="memdoc">
20323
20324<p class="definition">Definition at line <a class="el" href="_neon_batch_normalization_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_batch_normalization_workload_8cpp_source.html">NeonBatchNormalizationWorkload.cpp</a>.</p>
20325
20326<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00168">NeonLayerSupport::IsBatchNormalizationSupported()</a>.</p>
20327<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclMeanInfo =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(mean, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclVarInfo =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(var, descriptor.m_DataLayout);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBetaInfo =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(beta, descriptor.m_DataLayout);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclGammaInfo =</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(gamma, descriptor.m_DataLayout);</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"> 41</span>&#160; <span class="keywordflow">return</span> arm_compute::NEBatchNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclMeanInfo,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclVarInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &amp;aclBetaInfo,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; &amp;aclGammaInfo,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div></div><!-- fragment -->
20328</div>
20329</div>
20330<a id="a00623eeb8f77dac6dbbc1395b5270dbb"></a>
20331<h2 class="memtitle"><span class="permalink"><a href="#a00623eeb8f77dac6dbbc1395b5270dbb">&#9670;&nbsp;</a></span>NeonBatchToSpaceNdWorkloadValidate()</h2>
20332
20333<div class="memitem">
20334<div class="memproto">
20335 <table class="memname">
20336 <tr>
20337 <td class="memname">arm_compute::Status NeonBatchToSpaceNdWorkloadValidate </td>
20338 <td>(</td>
20339 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20340 <td class="paramname"><em>input</em>, </td>
20341 </tr>
20342 <tr>
20343 <td class="paramkey"></td>
20344 <td></td>
20345 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20346 <td class="paramname"><em>output</em>, </td>
20347 </tr>
20348 <tr>
20349 <td class="paramkey"></td>
20350 <td></td>
20351 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.html">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
20352 <td class="paramname"><em>desc</em>&#160;</td>
20353 </tr>
20354 <tr>
20355 <td></td>
20356 <td>)</td>
20357 <td></td><td></td>
20358 </tr>
20359 </table>
20360</div><div class="memdoc">
20361
20362<p class="definition">Definition at line <a class="el" href="_neon_batch_to_space_nd_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_neon_batch_to_space_nd_workload_8cpp_source.html">NeonBatchToSpaceNdWorkload.cpp</a>.</p>
20363
20364<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00188">NeonLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
20365<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, desc.m_DataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, desc.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(desc.m_BlockShape[1]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::NEBatchToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; blockWidth,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; blockHeight,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00026">Types.hpp:26</a></div></div>
20366</div><!-- fragment -->
20367</div>
20368</div>
20369<a id="a8a219633e750d6daffcef3b641fa11f3"></a>
20370<h2 class="memtitle"><span class="permalink"><a href="#a8a219633e750d6daffcef3b641fa11f3">&#9670;&nbsp;</a></span>NeonConcatWorkloadValidate()</h2>
20371
20372<div class="memitem">
20373<div class="memproto">
20374 <table class="memname">
20375 <tr>
20376 <td class="memname">arm_compute::Status NeonConcatWorkloadValidate </td>
20377 <td>(</td>
20378 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
20379 <td class="paramname"><em>inputs</em>, </td>
20380 </tr>
20381 <tr>
20382 <td class="paramkey"></td>
20383 <td></td>
20384 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20385 <td class="paramname"><em>output</em>, </td>
20386 </tr>
20387 <tr>
20388 <td class="paramkey"></td>
20389 <td></td>
20390 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
20391 <td class="paramname"><em>descriptor</em>&#160;</td>
20392 </tr>
20393 <tr>
20394 <td></td>
20395 <td>)</td>
20396 <td></td><td></td>
20397 </tr>
20398 </table>
20399</div><div class="memdoc">
20400
20401<p class="definition">Definition at line <a class="el" href="_neon_concat_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_neon_concat_workload_8cpp_source.html">NeonConcatWorkload.cpp</a>.</p>
20402
20403<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00218">NeonLayerSupport::IsConcatSupported()</a>.</p>
20404<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; aclInputs.emplace_back(aclInputInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</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; aclInputPtrs.emplace_back(&amp;input);</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"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">size_t</span> aclAxis = CalcAxis(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEConcatenateLayer::validate(aclInputPtrs, &amp;aclOutputInfo, aclAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
20405</div><!-- fragment -->
20406</div>
20407</div>
20408<a id="af64bb043263ba7d09c98fd88da60726d"></a>
20409<h2 class="memtitle"><span class="permalink"><a href="#af64bb043263ba7d09c98fd88da60726d">&#9670;&nbsp;</a></span>NeonConvolution2dWorkloadValidate()</h2>
20410
20411<div class="memitem">
20412<div class="memproto">
20413 <table class="memname">
20414 <tr>
20415 <td class="memname">arm_compute::Status NeonConvolution2dWorkloadValidate </td>
20416 <td>(</td>
20417 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20418 <td class="paramname"><em>input</em>, </td>
20419 </tr>
20420 <tr>
20421 <td class="paramkey"></td>
20422 <td></td>
20423 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20424 <td class="paramname"><em>output</em>, </td>
20425 </tr>
20426 <tr>
20427 <td class="paramkey"></td>
20428 <td></td>
20429 <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.html">Convolution2dDescriptor</a> &amp;&#160;</td>
20430 <td class="paramname"><em>descriptor</em>, </td>
20431 </tr>
20432 <tr>
20433 <td class="paramkey"></td>
20434 <td></td>
20435 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20436 <td class="paramname"><em>weights</em>, </td>
20437 </tr>
20438 <tr>
20439 <td class="paramkey"></td>
20440 <td></td>
20441 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
20442 <td class="paramname"><em>biases</em>&#160;</td>
20443 </tr>
20444 <tr>
20445 <td></td>
20446 <td>)</td>
20447 <td></td><td></td>
20448 </tr>
20449 </table>
20450</div><div class="memdoc">
20451
20452<p class="definition">Definition at line <a class="el" href="_neon_convolution2d_workload_8cpp_source.html#l00022">22</a> of file <a class="el" href="_neon_convolution2d_workload_8cpp_source.html">NeonConvolution2dWorkload.cpp</a>.</p>
20453
20454<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00286">NeonLayerSupport::IsConvolution2dSupported()</a>.</p>
20455<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; descriptor.m_DilationY);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</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="keywordflow">if</span> (descriptor.m_BiasEnabled)</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; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</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"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> arm_compute::NEConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; layerInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; arm_compute::WeightsInfo(),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div></div><!-- fragment -->
20456</div>
20457</div>
20458<a id="a116d88067bf98ce9858ab73e68f605f9"></a>
20459<h2 class="memtitle"><span class="permalink"><a href="#a116d88067bf98ce9858ab73e68f605f9">&#9670;&nbsp;</a></span>NeonDepthToSpaceWorkloadValidate()</h2>
20460
20461<div class="memitem">
20462<div class="memproto">
20463 <table class="memname">
20464 <tr>
20465 <td class="memname">arm_compute::Status NeonDepthToSpaceWorkloadValidate </td>
20466 <td>(</td>
20467 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20468 <td class="paramname"><em>input</em>, </td>
20469 </tr>
20470 <tr>
20471 <td class="paramkey"></td>
20472 <td></td>
20473 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20474 <td class="paramname"><em>output</em>, </td>
20475 </tr>
20476 <tr>
20477 <td class="paramkey"></td>
20478 <td></td>
20479 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
20480 <td class="paramname"><em>descriptor</em>&#160;</td>
20481 </tr>
20482 <tr>
20483 <td></td>
20484 <td>)</td>
20485 <td></td><td></td>
20486 </tr>
20487 </table>
20488</div><div class="memdoc">
20489
20490<p class="definition">Definition at line <a class="el" href="_neon_depth_to_space_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_depth_to_space_workload_8cpp_source.html">NeonDepthToSpaceWorkload.cpp</a>.</p>
20491
20492<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
20493
20494<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00302">NeonLayerSupport::IsDepthToSpaceSupported()</a>.</p>
20495<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = descriptor.m_DataLayout;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockSize);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDepthToSpaceLayer::validate(&amp;aclInput, &amp;aclOutput, blockSize);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
20496</div><!-- fragment -->
20497</div>
20498</div>
20499<a id="a168ebb908e1ee4bac24cb7992510de73"></a>
20500<h2 class="memtitle"><span class="permalink"><a href="#a168ebb908e1ee4bac24cb7992510de73">&#9670;&nbsp;</a></span>NeonDepthwiseConvolutionWorkloadValidate()</h2>
20501
20502<div class="memitem">
20503<div class="memproto">
20504 <table class="memname">
20505 <tr>
20506 <td class="memname">arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate </td>
20507 <td>(</td>
20508 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20509 <td class="paramname"><em>input</em>, </td>
20510 </tr>
20511 <tr>
20512 <td class="paramkey"></td>
20513 <td></td>
20514 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20515 <td class="paramname"><em>output</em>, </td>
20516 </tr>
20517 <tr>
20518 <td class="paramkey"></td>
20519 <td></td>
20520 <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
20521 <td class="paramname"><em>descriptor</em>, </td>
20522 </tr>
20523 <tr>
20524 <td class="paramkey"></td>
20525 <td></td>
20526 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20527 <td class="paramname"><em>weights</em>, </td>
20528 </tr>
20529 <tr>
20530 <td class="paramkey"></td>
20531 <td></td>
20532 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
20533 <td class="paramname"><em>biases</em>&#160;</td>
20534 </tr>
20535 <tr>
20536 <td></td>
20537 <td>)</td>
20538 <td></td><td></td>
20539 </tr>
20540 </table>
20541</div><div class="memdoc">
20542
20543<p class="definition">Definition at line <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.html">NeonDepthwiseConvolutionWorkload.cpp</a>.</p>
20544
20545<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00314">NeonLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.html#l00340">NeonLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
20546<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// ArmNN&#39;s weight format is [ M, I, H, W ]</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclDepthMultiplier = weights.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0];</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; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> weightsPermuted = <a class="code" href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a>(weights, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// Convert the weights into the compute library format</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weightsPermuted, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</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; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</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"> 50</span>&#160; <span class="keywordflow">if</span> (descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a>)</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; BOOST_ASSERT(biases.<a class="code" href="classarmnn_1_1_optional_base.html#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>());</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; aclBiasesInfo = BuildArmComputeTensorInfo(biases.<a class="code" href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">value</a>(), descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a>,descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a>);</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; <span class="keywordflow">return</span> arm_compute::NEDepthwiseConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; aclPadStrideInfo,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; aclDepthMultiplier,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; arm_compute::ActivationLayerInfo(),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::DepthwiseConvolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation factor value for width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00486">Descriptors.hpp:486</a></div></div>
20547<div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
20548<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::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.html#l00492">Descriptors.hpp:492</a></div></div>
20549<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#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.html#l00490">Descriptors.hpp:490</a></div></div>
20550<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
20551<div class="ttc" id="classarmnn_1_1_optional_base_html_a86b749ce2c4bc627fa8a1fcfaf0e314f"><div class="ttname"><a href="classarmnn_1_1_optional_base.html#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.html#l00053">Optional.hpp:53</a></div></div>
20552<div class="ttc" id="namespacearmnn_html_a1e8288eac7e909fdb58b6113d816763a"><div class="ttname"><a href="namespacearmnn.html#a1e8288eac7e909fdb58b6113d816763a">armnn::ConvertWeightTensorInfoFromArmnnToAcl</a></div><div class="ttdeci">TensorInfo ConvertWeightTensorInfoFromArmnnToAcl(const TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00109">WorkloadUtils.cpp:109</a></div></div>
20553<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_html_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.html#a302b688d88dd73cde0fb1faef6679907">armnn::DepthwiseConvolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation factor value for height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00488">Descriptors.hpp:488</a></div></div>
20554<div class="ttc" id="classarmnn_1_1_optional_reference_switch_html_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.html#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.html#l00146">Optional.hpp:146</a></div></div>
20555</div><!-- fragment -->
20556</div>
20557</div>
20558<a id="acefede7cc57c71ea4cfe1c888bb413e0"></a>
20559<h2 class="memtitle"><span class="permalink"><a href="#acefede7cc57c71ea4cfe1c888bb413e0">&#9670;&nbsp;</a></span>NeonDequantizeWorkloadValidate()</h2>
20560
20561<div class="memitem">
20562<div class="memproto">
20563 <table class="memname">
20564 <tr>
20565 <td class="memname">arm_compute::Status NeonDequantizeWorkloadValidate </td>
20566 <td>(</td>
20567 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20568 <td class="paramname"><em>input</em>, </td>
20569 </tr>
20570 <tr>
20571 <td class="paramkey"></td>
20572 <td></td>
20573 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20574 <td class="paramname"><em>output</em>&#160;</td>
20575 </tr>
20576 <tr>
20577 <td></td>
20578 <td>)</td>
20579 <td></td><td></td>
20580 </tr>
20581 </table>
20582</div><div class="memdoc">
20583
20584<p class="definition">Definition at line <a class="el" href="_neon_dequantize_workload_8cpp_source.html#l00021">21</a> of file <a class="el" href="_neon_dequantize_workload_8cpp_source.html">NeonDequantizeWorkload.cpp</a>.</p>
20585
20586<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00330">NeonLayerSupport::IsDequantizeSupported()</a>.</p>
20587<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDequantizationLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
20588</div>
20589</div>
20590<a id="a304243ccb52986da06388dc57deae88f"></a>
20591<h2 class="memtitle"><span class="permalink"><a href="#a304243ccb52986da06388dc57deae88f">&#9670;&nbsp;</a></span>NeonDetectionPostProcessValidate()</h2>
20592
20593<div class="memitem">
20594<div class="memproto">
20595 <table class="memname">
20596 <tr>
20597 <td class="memname">arm_compute::Status NeonDetectionPostProcessValidate </td>
20598 <td>(</td>
20599 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20600 <td class="paramname"><em>boxEncodings</em>, </td>
20601 </tr>
20602 <tr>
20603 <td class="paramkey"></td>
20604 <td></td>
20605 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20606 <td class="paramname"><em>scores</em>, </td>
20607 </tr>
20608 <tr>
20609 <td class="paramkey"></td>
20610 <td></td>
20611 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20612 <td class="paramname"><em>anchors</em>, </td>
20613 </tr>
20614 <tr>
20615 <td class="paramkey"></td>
20616 <td></td>
20617 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20618 <td class="paramname"><em>detectionBoxes</em>, </td>
20619 </tr>
20620 <tr>
20621 <td class="paramkey"></td>
20622 <td></td>
20623 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20624 <td class="paramname"><em>detectionClasses</em>, </td>
20625 </tr>
20626 <tr>
20627 <td class="paramkey"></td>
20628 <td></td>
20629 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20630 <td class="paramname"><em>detectionScores</em>, </td>
20631 </tr>
20632 <tr>
20633 <td class="paramkey"></td>
20634 <td></td>
20635 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20636 <td class="paramname"><em>numDetections</em>, </td>
20637 </tr>
20638 <tr>
20639 <td class="paramkey"></td>
20640 <td></td>
20641 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.html">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
20642 <td class="paramname"><em>desc</em>&#160;</td>
20643 </tr>
20644 <tr>
20645 <td></td>
20646 <td>)</td>
20647 <td></td><td></td>
20648 </tr>
20649 </table>
20650</div><div class="memdoc">
20651
20652<p class="definition">Definition at line <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00033">33</a> of file <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html">NeonDetectionPostProcessWorkload.cpp</a>.</p>
20653
20654<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="_neon_detection_post_process_workload_8cpp_source.html#l00018">MakeInfo()</a>.</p>
20655<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; arm_compute::DetectionPostProcessLayerInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = <a class="code" href="namespacearmnn.html#ae0ae21bef03ed19f252c72c660e571a4">MakeInfo</a>(desc);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBoxEncodings =</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</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="keyword">const</span> arm_compute::TensorInfo aclScores =</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>);</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"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAnchors =</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.html#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; arm_compute::TensorInfo aclDetectionBoxes =</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionBoxes);</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"> 56</span>&#160; arm_compute::TensorInfo aclDetectionClasses =</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionClasses);</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; arm_compute::TensorInfo aclDetectionScores =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionScores);</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; arm_compute::TensorInfo aclNumDetections =</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(numDetections);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDetectionPostProcessLayer::validate(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; &amp;aclBoxEncodings,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; &amp;aclScores,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; &amp;aclAnchors,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; &amp;aclDetectionBoxes,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; &amp;aclDetectionClasses,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; &amp;aclDetectionScores,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; &amp;aclNumDetections,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; info);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
20656<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
20657<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ada422a73ac4e68bcb1b1b1f0b44028d9"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a></div><div class="ttdeci">std::vector&lt; float &gt; boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })</div></div>
20658<div class="ttc" id="_neon_end_to_end_tests_8cpp_html_ac0981848e4ae57729f14f72bd4caa9f8"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#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>
20659<div class="ttc" id="namespacearmnn_html_ae0ae21bef03ed19f252c72c660e571a4"><div class="ttname"><a href="namespacearmnn.html#ae0ae21bef03ed19f252c72c660e571a4">armnn::MakeInfo</a></div><div class="ttdeci">arm_compute::DetectionPostProcessLayerInfo MakeInfo(const DetectionPostProcessDescriptor &amp;desc)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_detection_post_process_workload_8cpp_source.html#l00018">NeonDetectionPostProcessWorkload.cpp:18</a></div></div>
20660</div><!-- fragment -->
20661</div>
20662</div>
20663<a id="a3a62359fc5ebfe9628871c0ba79fb37c"></a>
20664<h2 class="memtitle"><span class="permalink"><a href="#a3a62359fc5ebfe9628871c0ba79fb37c">&#9670;&nbsp;</a></span>NeonDivisionWorkloadValidate()</h2>
20665
20666<div class="memitem">
20667<div class="memproto">
20668 <table class="memname">
20669 <tr>
20670 <td class="memname">arm_compute::Status NeonDivisionWorkloadValidate </td>
20671 <td>(</td>
20672 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20673 <td class="paramname"><em>input0</em>, </td>
20674 </tr>
20675 <tr>
20676 <td class="paramkey"></td>
20677 <td></td>
20678 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20679 <td class="paramname"><em>input1</em>, </td>
20680 </tr>
20681 <tr>
20682 <td class="paramkey"></td>
20683 <td></td>
20684 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20685 <td class="paramname"><em>output</em>&#160;</td>
20686 </tr>
20687 <tr>
20688 <td></td>
20689 <td>)</td>
20690 <td></td><td></td>
20691 </tr>
20692 </table>
20693</div><div class="memdoc">
20694
20695<p class="definition">Definition at line <a class="el" href="_neon_division_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_division_workload_8cpp_source.html">NeonDivisionWorkload.cpp</a>.</p>
20696
20697<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00525">NeonLayerSupport::IsDivisionSupported()</a>.</p>
20698<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseDivision::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
20699</div>
20700</div>
20701<a id="a0b7897a2a04016aa7fa24e2a1d10e944"></a>
20702<h2 class="memtitle"><span class="permalink"><a href="#a0b7897a2a04016aa7fa24e2a1d10e944">&#9670;&nbsp;</a></span>NeonFullyConnectedWorkloadValidate()</h2>
20703
20704<div class="memitem">
20705<div class="memproto">
20706 <table class="memname">
20707 <tr>
20708 <td class="memname">arm_compute::Status NeonFullyConnectedWorkloadValidate </td>
20709 <td>(</td>
20710 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20711 <td class="paramname"><em>input</em>, </td>
20712 </tr>
20713 <tr>
20714 <td class="paramkey"></td>
20715 <td></td>
20716 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20717 <td class="paramname"><em>output</em>, </td>
20718 </tr>
20719 <tr>
20720 <td class="paramkey"></td>
20721 <td></td>
20722 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20723 <td class="paramname"><em>weights</em>, </td>
20724 </tr>
20725 <tr>
20726 <td class="paramkey"></td>
20727 <td></td>
20728 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20729 <td class="paramname"><em>biases</em>, </td>
20730 </tr>
20731 <tr>
20732 <td class="paramkey"></td>
20733 <td></td>
20734 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.html">FullyConnectedDescriptor</a> &amp;&#160;</td>
20735 <td class="paramname"><em>descriptor</em>&#160;</td>
20736 </tr>
20737 <tr>
20738 <td></td>
20739 <td>)</td>
20740 <td></td><td></td>
20741 </tr>
20742 </table>
20743</div><div class="memdoc">
20744
20745<p class="definition">Definition at line <a class="el" href="_neon_fully_connected_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_fully_connected_workload_8cpp_source.html">NeonFullyConnectedWorkload.cpp</a>.</p>
20746
20747<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00394">NeonLayerSupport::IsFullyConnectedSupported()</a>.</p>
20748<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeights = BuildArmComputeTensorInfo(weights);</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; arm_compute::TensorInfo aclBiases;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::TensorInfo *optionalAclBiases = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; aclBiases = BuildArmComputeTensorInfo(biases);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; optionalAclBiases = &amp;aclBiases;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> arm_compute::FullyConnectedLayerInfo fullyConnectedLayerInfo =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a>(descriptor);</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"> 41</span>&#160; <span class="keywordflow">return</span> arm_compute::NEFullyConnectedLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclWeights,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; optionalAclBiases,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; fullyConnectedLayerInfo);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_abccab9266ab13dbd806445af31ddbba7"><div class="ttname"><a href="namespacearmnn.html#abccab9266ab13dbd806445af31ddbba7">armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a></div><div class="ttdeci">arm_compute::FullyConnectedLayerInfo ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo(const FullyConnectedDescriptor &amp;fullyConnectedDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00118">ArmComputeUtils.hpp:118</a></div></div>
20749</div><!-- fragment -->
20750</div>
20751</div>
20752<a id="ad536149438b0481b7278ad741e18fb5a"></a>
20753<h2 class="memtitle"><span class="permalink"><a href="#ad536149438b0481b7278ad741e18fb5a">&#9670;&nbsp;</a></span>NeonGreaterWorkloadValidate()</h2>
20754
20755<div class="memitem">
20756<div class="memproto">
20757 <table class="memname">
20758 <tr>
20759 <td class="memname">arm_compute::Status NeonGreaterWorkloadValidate </td>
20760 <td>(</td>
20761 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20762 <td class="paramname"><em>input0</em>, </td>
20763 </tr>
20764 <tr>
20765 <td class="paramkey"></td>
20766 <td></td>
20767 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20768 <td class="paramname"><em>input1</em>, </td>
20769 </tr>
20770 <tr>
20771 <td class="paramkey"></td>
20772 <td></td>
20773 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20774 <td class="paramname"><em>output</em>&#160;</td>
20775 </tr>
20776 <tr>
20777 <td></td>
20778 <td>)</td>
20779 <td></td><td></td>
20780 </tr>
20781 </table>
20782</div><div class="memdoc">
20783
20784<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_greater_workload_8cpp_source.html">NeonGreaterWorkload.cpp</a>.</p>
20785
20786<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00200">NeonLayerSupport::IsComparisonSupported()</a>.</p>
20787<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEGreater::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
20788</div>
20789</div>
20790<a id="aea722abe239545030f4c6fe4e083816f"></a>
20791<h2 class="memtitle"><span class="permalink"><a href="#aea722abe239545030f4c6fe4e083816f">&#9670;&nbsp;</a></span>NeonInstanceNormalizationWorkloadValidate()</h2>
20792
20793<div class="memitem">
20794<div class="memproto">
20795 <table class="memname">
20796 <tr>
20797 <td class="memname">arm_compute::Status NeonInstanceNormalizationWorkloadValidate </td>
20798 <td>(</td>
20799 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20800 <td class="paramname"><em>input</em>, </td>
20801 </tr>
20802 <tr>
20803 <td class="paramkey"></td>
20804 <td></td>
20805 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20806 <td class="paramname"><em>output</em>, </td>
20807 </tr>
20808 <tr>
20809 <td class="paramkey"></td>
20810 <td></td>
20811 <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.html">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
20812 <td class="paramname"><em>descriptor</em>&#160;</td>
20813 </tr>
20814 <tr>
20815 <td></td>
20816 <td>)</td>
20817 <td></td><td></td>
20818 </tr>
20819 </table>
20820</div><div class="memdoc">
20821
20822<p class="definition">Definition at line <a class="el" href="_neon_instance_normalization_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_instance_normalization_workload_8cpp_source.html">NeonInstanceNormalizationWorkload.cpp</a>.</p>
20823
20824<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00425">NeonLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
20825<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::NEInstanceNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_Gamma,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_Beta,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
20826</div>
20827</div>
20828<a id="ae838df3960d2b5d18d73ed2a07aee917"></a>
20829<h2 class="memtitle"><span class="permalink"><a href="#ae838df3960d2b5d18d73ed2a07aee917">&#9670;&nbsp;</a></span>NeonL2NormalizationWorkloadValidate()</h2>
20830
20831<div class="memitem">
20832<div class="memproto">
20833 <table class="memname">
20834 <tr>
20835 <td class="memname">arm_compute::Status NeonL2NormalizationWorkloadValidate </td>
20836 <td>(</td>
20837 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20838 <td class="paramname"><em>input</em>, </td>
20839 </tr>
20840 <tr>
20841 <td class="paramkey"></td>
20842 <td></td>
20843 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20844 <td class="paramname"><em>output</em>, </td>
20845 </tr>
20846 <tr>
20847 <td class="paramkey"></td>
20848 <td></td>
20849 <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.html">L2NormalizationDescriptor</a> &amp;&#160;</td>
20850 <td class="paramname"><em>descriptor</em>&#160;</td>
20851 </tr>
20852 <tr>
20853 <td></td>
20854 <td>)</td>
20855 <td></td><td></td>
20856 </tr>
20857 </table>
20858</div><div class="memdoc">
20859
20860<p class="definition">Definition at line <a class="el" href="_neon_l2_normalization_float_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_l2_normalization_float_workload_8cpp_source.html">NeonL2NormalizationFloatWorkload.cpp</a>.</p>
20861
20862<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00437">NeonLayerSupport::IsL2NormalizationSupported()</a>.</p>
20863<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">int</span> axis = (descriptor.m_DataLayout == DataLayout::NCHW) ? 2 : 0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::NEL2NormalizeLayer::validate(&amp;aclInput, &amp;aclOutput, axis, descriptor.m_Eps);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
20864</div>
20865</div>
20866<a id="a9e06cc2a2ac8b88fc72972695a17910f"></a>
20867<h2 class="memtitle"><span class="permalink"><a href="#a9e06cc2a2ac8b88fc72972695a17910f">&#9670;&nbsp;</a></span>NeonLstmFloatWorkloadValidate()</h2>
20868
20869<div class="memitem">
20870<div class="memproto">
20871 <table class="memname">
20872 <tr>
20873 <td class="memname">arm_compute::Status NeonLstmFloatWorkloadValidate </td>
20874 <td>(</td>
20875 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20876 <td class="paramname"><em>input</em>, </td>
20877 </tr>
20878 <tr>
20879 <td class="paramkey"></td>
20880 <td></td>
20881 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20882 <td class="paramname"><em>outputStateIn</em>, </td>
20883 </tr>
20884 <tr>
20885 <td class="paramkey"></td>
20886 <td></td>
20887 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20888 <td class="paramname"><em>cellStateIn</em>, </td>
20889 </tr>
20890 <tr>
20891 <td class="paramkey"></td>
20892 <td></td>
20893 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20894 <td class="paramname"><em>scratchBuffer</em>, </td>
20895 </tr>
20896 <tr>
20897 <td class="paramkey"></td>
20898 <td></td>
20899 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20900 <td class="paramname"><em>outputStateOut</em>, </td>
20901 </tr>
20902 <tr>
20903 <td class="paramkey"></td>
20904 <td></td>
20905 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20906 <td class="paramname"><em>cellStateOut</em>, </td>
20907 </tr>
20908 <tr>
20909 <td class="paramkey"></td>
20910 <td></td>
20911 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20912 <td class="paramname"><em>output</em>, </td>
20913 </tr>
20914 <tr>
20915 <td class="paramkey"></td>
20916 <td></td>
20917 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.html">LstmDescriptor</a> &amp;&#160;</td>
20918 <td class="paramname"><em>descriptor</em>, </td>
20919 </tr>
20920 <tr>
20921 <td class="paramkey"></td>
20922 <td></td>
20923 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.html">LstmInputParamsInfo</a> &amp;&#160;</td>
20924 <td class="paramname"><em>paramsInfo</em>&#160;</td>
20925 </tr>
20926 <tr>
20927 <td></td>
20928 <td>)</td>
20929 <td></td><td></td>
20930 </tr>
20931 </table>
20932</div><div class="memdoc">
20933
20934<p class="definition">Definition at line <a class="el" href="_neon_lstm_float_workload_8cpp_source.html#l00271">271</a> of file <a class="el" href="_neon_lstm_float_workload_8cpp_source.html">NeonLstmFloatWorkload.cpp</a>.</p>
20935
20936<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00445">NeonLayerSupport::IsLstmSupported()</a>.</p>
20937<div class="fragment"><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; arm_compute::LSTMParams&lt;arm_compute::ITensorInfo&gt; lstm_params_info;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// The inputs and outputs</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScratchBufferInfo = BuildArmComputeTensorInfo(scratchBuffer);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</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; arm_compute::TensorInfo aclInputToInputWeightsInfo;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; arm_compute::TensorInfo aclRecurrentToInputWeightsInfo;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; arm_compute::TensorInfo aclCellToInputWeightsInfo;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; arm_compute::TensorInfo aclInputGateBiasInfo;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; arm_compute::TensorInfo aclProjectionWeightsInfo;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; arm_compute::TensorInfo aclProjectionBiasInfo;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; arm_compute::TensorInfo aclCellToForgetWeightsInfo;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; arm_compute::TensorInfo aclCellToOutputWeightsInfo;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; arm_compute::TensorInfo aclInputLayerNormWeightsInfo;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; arm_compute::TensorInfo aclForgetLayerNormWeightsInfo;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; arm_compute::TensorInfo aclCellLayerNormWeightsInfo;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; arm_compute::TensorInfo aclOutputLayerNormWeightsInfo;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</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"> 331</span>&#160; aclCellToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToInputWeights());</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; aclInputToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; aclRecurrentToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</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"> 337</span>&#160; lstm_params_info.set_cifg_params(&amp;aclInputToInputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; descriptor.m_PeepholeEnabled ? &amp;aclCellToInputWeightsInfo : <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; &amp;aclInputGateBiasInfo);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</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; <span class="keywordflow">if</span> (descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span>)</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; aclProjectionBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionBias());</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; aclProjectionWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionWeights());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; lstm_params_info.set_projection_params(&amp;aclProjectionWeightsInfo,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; &amp;aclProjectionBiasInfo : <span class="keyword">nullptr</span>);</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"> 355</span>&#160; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</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; aclCellToForgetWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToForgetWeights());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; aclCellToOutputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToOutputWeights());</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; lstm_params_info.set_peephole_params(&amp;aclCellToForgetWeightsInfo, &amp;aclCellToOutputWeightsInfo);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</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; <span class="keywordflow">if</span> (descriptor.m_LayerNormEnabled)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; aclInputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputLayerNormWeights());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; aclForgetLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetLayerNormWeights());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; aclCellLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellLayerNormWeights());</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; aclOutputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputLayerNormWeights());</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; lstm_params_info.set_layer_normalization_params(descriptor.m_CifgEnabled ?</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">nullptr</span> : &amp;aclInputLayerNormWeightsInfo,</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; &amp;aclForgetLayerNormWeightsInfo,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; &amp;aclCellLayerNormWeightsInfo,</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; &amp;aclOutputLayerNormWeightsInfo);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</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; <span class="keywordtype">float</span> cell_threshold = descriptor.m_ClippingThresCell;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">float</span> projection_threshold = descriptor.m_ClippingThresProj;</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="comment">// for preparing the object for the class ActivationLayerInfo, we need to consider 5 situations</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; arm_compute::ActivationLayerInfo activationLayerInfo;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">switch</span> (descriptor.m_ActivationFunc)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="comment">// no activation, do nothing</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::RELU);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.0);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::TANH, 1.0, 1.0);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">case</span> 6:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::LOGISTIC);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">&quot;Wrong Type of Activation Function!&quot;</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</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> arm_compute::NELSTMLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; &amp;aclOutputStateInInfo,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; &amp;aclCellStateInInfo,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; &amp;aclScratchBufferInfo,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; &amp;aclOutputStateOutInfo,</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; &amp;aclCellStateOutInfo,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; lstm_params_info,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; activationLayerInfo,</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; cell_threshold,</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; projection_threshold);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
20938</div><!-- fragment -->
20939</div>
20940</div>
20941<a id="a8d2ea79addd8ef64be2ca0dad3408f00"></a>
20942<h2 class="memtitle"><span class="permalink"><a href="#a8d2ea79addd8ef64be2ca0dad3408f00">&#9670;&nbsp;</a></span>NeonMaximumWorkloadValidate()</h2>
20943
20944<div class="memitem">
20945<div class="memproto">
20946 <table class="memname">
20947 <tr>
20948 <td class="memname">arm_compute::Status NeonMaximumWorkloadValidate </td>
20949 <td>(</td>
20950 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20951 <td class="paramname"><em>input0</em>, </td>
20952 </tr>
20953 <tr>
20954 <td class="paramkey"></td>
20955 <td></td>
20956 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20957 <td class="paramname"><em>input1</em>, </td>
20958 </tr>
20959 <tr>
20960 <td class="paramkey"></td>
20961 <td></td>
20962 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20963 <td class="paramname"><em>output</em>&#160;</td>
20964 </tr>
20965 <tr>
20966 <td></td>
20967 <td>)</td>
20968 <td></td><td></td>
20969 </tr>
20970 </table>
20971</div><div class="memdoc">
20972
20973<p class="definition">Definition at line <a class="el" href="_neon_maximum_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_maximum_workload_8cpp_source.html">NeonMaximumWorkload.cpp</a>.</p>
20974
20975<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00469">NeonLayerSupport::IsMaximumSupported()</a>.</p>
20976<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseMax::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
20977</div>
20978</div>
20979<a id="ab81dd6d40850f8fea025ee7ce51f86d0"></a>
20980<h2 class="memtitle"><span class="permalink"><a href="#ab81dd6d40850f8fea025ee7ce51f86d0">&#9670;&nbsp;</a></span>NeonMeanWorkloadValidate()</h2>
20981
20982<div class="memitem">
20983<div class="memproto">
20984 <table class="memname">
20985 <tr>
20986 <td class="memname">arm_compute::Status NeonMeanWorkloadValidate </td>
20987 <td>(</td>
20988 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20989 <td class="paramname"><em>input</em>, </td>
20990 </tr>
20991 <tr>
20992 <td class="paramkey"></td>
20993 <td></td>
20994 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
20995 <td class="paramname"><em>output</em>, </td>
20996 </tr>
20997 <tr>
20998 <td class="paramkey"></td>
20999 <td></td>
21000 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.html">MeanDescriptor</a> &amp;&#160;</td>
21001 <td class="paramname"><em>desc</em>&#160;</td>
21002 </tr>
21003 <tr>
21004 <td></td>
21005 <td>)</td>
21006 <td></td><td></td>
21007 </tr>
21008 </table>
21009</div><div class="memdoc">
21010
21011<p class="definition">Definition at line <a class="el" href="_neon_mean_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_mean_workload_8cpp_source.html">NeonMeanWorkload.cpp</a>.</p>
21012
21013<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00481">NeonLayerSupport::IsMeanSupported()</a>.</p>
21014<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> coords = BuildArmComputeReductionCoordinates(aclInputInfo.num_dimensions(),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; input.GetNumDimensions(),</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; desc.m_Axis);</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="keywordflow">return</span> arm_compute::NEReduceMean::validate(&amp;aclInputInfo, coords, desc.m_KeepDims, &amp;aclOutputInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
21015</div><!-- fragment -->
21016</div>
21017</div>
21018<a id="ab81159ebfa638af1b91fe1e8c5de1955"></a>
21019<h2 class="memtitle"><span class="permalink"><a href="#ab81159ebfa638af1b91fe1e8c5de1955">&#9670;&nbsp;</a></span>NeonMinimumWorkloadValidate()</h2>
21020
21021<div class="memitem">
21022<div class="memproto">
21023 <table class="memname">
21024 <tr>
21025 <td class="memname">arm_compute::Status NeonMinimumWorkloadValidate </td>
21026 <td>(</td>
21027 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21028 <td class="paramname"><em>input0</em>, </td>
21029 </tr>
21030 <tr>
21031 <td class="paramkey"></td>
21032 <td></td>
21033 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21034 <td class="paramname"><em>input1</em>, </td>
21035 </tr>
21036 <tr>
21037 <td class="paramkey"></td>
21038 <td></td>
21039 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21040 <td class="paramname"><em>output</em>&#160;</td>
21041 </tr>
21042 <tr>
21043 <td></td>
21044 <td>)</td>
21045 <td></td><td></td>
21046 </tr>
21047 </table>
21048</div><div class="memdoc">
21049<p>Validate function for validating the inputs and output. </p><dl class="params"><dt>Parameters</dt><dd>
21050 <table class="params">
21051 <tr><td class="paramdir">[in]</td><td class="paramname">input0</td><td>The input0 value to be validated. </td></tr>
21052 <tr><td class="paramdir">[in]</td><td class="paramname">input1</td><td>The input1 value to be validated. </td></tr>
21053 <tr><td class="paramdir">[in]</td><td class="paramname">output</td><td>The output value to be validated. </td></tr>
21054 </table>
21055 </dd>
21056</dl>
21057
21058<p class="definition">Definition at line <a class="el" href="_neon_minimum_workload_8cpp_source.html#l00013">13</a> of file <a class="el" href="_neon_minimum_workload_8cpp_source.html">NeonMinimumWorkload.cpp</a>.</p>
21059
21060<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00501">NeonLayerSupport::IsMinimumSupported()</a>.</p>
21061<div class="fragment"><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseMin::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
21062</div>
21063</div>
21064<a id="a38bdbed2a1e28ab15cac0cc0f42c3fa6"></a>
21065<h2 class="memtitle"><span class="permalink"><a href="#a38bdbed2a1e28ab15cac0cc0f42c3fa6">&#9670;&nbsp;</a></span>NeonMultiplicationWorkloadValidate()</h2>
21066
21067<div class="memitem">
21068<div class="memproto">
21069 <table class="memname">
21070 <tr>
21071 <td class="memname">arm_compute::Status NeonMultiplicationWorkloadValidate </td>
21072 <td>(</td>
21073 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21074 <td class="paramname"><em>input0</em>, </td>
21075 </tr>
21076 <tr>
21077 <td class="paramkey"></td>
21078 <td></td>
21079 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21080 <td class="paramname"><em>input1</em>, </td>
21081 </tr>
21082 <tr>
21083 <td class="paramkey"></td>
21084 <td></td>
21085 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21086 <td class="paramname"><em>output</em>&#160;</td>
21087 </tr>
21088 <tr>
21089 <td></td>
21090 <td>)</td>
21091 <td></td><td></td>
21092 </tr>
21093 </table>
21094</div><div class="memdoc">
21095
21096<p class="definition">Definition at line <a class="el" href="_neon_multiplication_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_multiplication_workload_8cpp_source.html">NeonMultiplicationWorkload.cpp</a>.</p>
21097
21098<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00513">NeonLayerSupport::IsMultiplicationSupported()</a>.</p>
21099<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// At the time of writing, configure() will fail if a rounding policy other than TO_ZERO is supplied to it,</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// when providing a scale of 1.0 for F32 tensors, even though the provided rounding policy appears to be</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// ignored for F32 tensors.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPixelWiseMultiplication::validate(&amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclInput2,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; 1.0f,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::ConvertPolicy::SATURATE,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; arm_compute::RoundingPolicy::TO_ZERO);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
21100</div>
21101</div>
21102<a id="a2ec6297db90d1d4c258c13d2d72b13d9"></a>
21103<h2 class="memtitle"><span class="permalink"><a href="#a2ec6297db90d1d4c258c13d2d72b13d9">&#9670;&nbsp;</a></span>NeonNormalizationWorkloadValidate()</h2>
21104
21105<div class="memitem">
21106<div class="memproto">
21107 <table class="memname">
21108 <tr>
21109 <td class="memname">arm_compute::Status NeonNormalizationWorkloadValidate </td>
21110 <td>(</td>
21111 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21112 <td class="paramname"><em>input</em>, </td>
21113 </tr>
21114 <tr>
21115 <td class="paramkey"></td>
21116 <td></td>
21117 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21118 <td class="paramname"><em>output</em>, </td>
21119 </tr>
21120 <tr>
21121 <td class="paramkey"></td>
21122 <td></td>
21123 <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.html">NormalizationDescriptor</a> &amp;&#160;</td>
21124 <td class="paramname"><em>descriptor</em>&#160;</td>
21125 </tr>
21126 <tr>
21127 <td></td>
21128 <td>)</td>
21129 <td></td><td></td>
21130 </tr>
21131 </table>
21132</div><div class="memdoc">
21133
21134<p class="definition">Definition at line <a class="el" href="_neon_normalization_float_workload_8cpp_source.html#l00047">47</a> of file <a class="el" href="_neon_normalization_float_workload_8cpp_source.html">NeonNormalizationFloatWorkload.cpp</a>.</p>
21135
21136<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00537">NeonLayerSupport::IsNormalizationSupported()</a>.</p>
21137<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</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; arm_compute::NormalizationLayerInfo normalizationInfo = BuildArmComputeNormalizationLayerInfo(descriptor);</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"> 56</span>&#160; <span class="keywordflow">return</span> arm_compute::NENormalizationLayer::validate(&amp;aclInput, &amp;aclOutput, normalizationInfo);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div></div><!-- fragment -->
21138</div>
21139</div>
21140<a id="a39209c0c078e83227222eb885317c2c5"></a>
21141<h2 class="memtitle"><span class="permalink"><a href="#a39209c0c078e83227222eb885317c2c5">&#9670;&nbsp;</a></span>NeonPadWorkloadValidate()</h2>
21142
21143<div class="memitem">
21144<div class="memproto">
21145 <table class="memname">
21146 <tr>
21147 <td class="memname">arm_compute::Status NeonPadWorkloadValidate </td>
21148 <td>(</td>
21149 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21150 <td class="paramname"><em>input</em>, </td>
21151 </tr>
21152 <tr>
21153 <td class="paramkey"></td>
21154 <td></td>
21155 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21156 <td class="paramname"><em>output</em>, </td>
21157 </tr>
21158 <tr>
21159 <td class="paramkey"></td>
21160 <td></td>
21161 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.html">PadDescriptor</a> &amp;&#160;</td>
21162 <td class="paramname"><em>descriptor</em>&#160;</td>
21163 </tr>
21164 <tr>
21165 <td></td>
21166 <td>)</td>
21167 <td></td><td></td>
21168 </tr>
21169 </table>
21170</div><div class="memdoc">
21171
21172<p class="definition">Definition at line <a class="el" href="_neon_pad_workload_8cpp_source.html#l00048">48</a> of file <a class="el" href="_neon_pad_workload_8cpp_source.html">NeonPadWorkload.cpp</a>.</p>
21173
21174<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00555">NeonLayerSupport::IsPadSupported()</a>.</p>
21175<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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; std::vector&lt;std::pair&lt;unsigned int, unsigned int&gt;&gt; reversed_PadList(descriptor.m_PadList.size());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::reverse_copy(std::begin(descriptor.m_PadList),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::end(descriptor.m_PadList),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::begin(reversed_PadList));</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; arm_compute::PaddingList padList = <span class="keyword">static_cast&lt;</span>arm_compute::PaddingList<span class="keyword">&gt;</span>(reversed_PadList);</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"> 63</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPadLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, padList);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div></div><!-- fragment -->
21176</div>
21177</div>
21178<a id="a70650f6b1d3b8511fcdb989ca769cdbb"></a>
21179<h2 class="memtitle"><span class="permalink"><a href="#a70650f6b1d3b8511fcdb989ca769cdbb">&#9670;&nbsp;</a></span>NeonPermuteWorkloadValidate()</h2>
21180
21181<div class="memitem">
21182<div class="memproto">
21183 <table class="memname">
21184 <tr>
21185 <td class="memname">arm_compute::Status NeonPermuteWorkloadValidate </td>
21186 <td>(</td>
21187 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21188 <td class="paramname"><em>input</em>, </td>
21189 </tr>
21190 <tr>
21191 <td class="paramkey"></td>
21192 <td></td>
21193 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21194 <td class="paramname"><em>output</em>, </td>
21195 </tr>
21196 <tr>
21197 <td class="paramkey"></td>
21198 <td></td>
21199 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.html">PermuteDescriptor</a> &amp;&#160;</td>
21200 <td class="paramname"><em>descriptor</em>&#160;</td>
21201 </tr>
21202 <tr>
21203 <td></td>
21204 <td>)</td>
21205 <td></td><td></td>
21206 </tr>
21207 </table>
21208</div><div class="memdoc">
21209
21210<p class="definition">Definition at line <a class="el" href="_neon_permute_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_permute_workload_8cpp_source.html">NeonPermuteWorkload.cpp</a>.</p>
21211
21212<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00567">NeonLayerSupport::IsPermuteSupported()</a>.</p>
21213<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; armcomputetensorutils::BuildArmComputePermutationVector(mappings));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_permutation_vector_html"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00170">Types.hpp:170</a></div></div>
21214</div><!-- fragment -->
21215</div>
21216</div>
21217<a id="a1f07655db8ad7f2738bb0d3d9e2316cc"></a>
21218<h2 class="memtitle"><span class="permalink"><a href="#a1f07655db8ad7f2738bb0d3d9e2316cc">&#9670;&nbsp;</a></span>NeonPooling2dWorkloadValidate()</h2>
21219
21220<div class="memitem">
21221<div class="memproto">
21222 <table class="memname">
21223 <tr>
21224 <td class="memname">arm_compute::Status NeonPooling2dWorkloadValidate </td>
21225 <td>(</td>
21226 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21227 <td class="paramname"><em>input</em>, </td>
21228 </tr>
21229 <tr>
21230 <td class="paramkey"></td>
21231 <td></td>
21232 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21233 <td class="paramname"><em>output</em>, </td>
21234 </tr>
21235 <tr>
21236 <td class="paramkey"></td>
21237 <td></td>
21238 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
21239 <td class="paramname"><em>descriptor</em>&#160;</td>
21240 </tr>
21241 <tr>
21242 <td></td>
21243 <td>)</td>
21244 <td></td><td></td>
21245 </tr>
21246 </table>
21247</div><div class="memdoc">
21248
21249<p class="definition">Definition at line <a class="el" href="_neon_pooling2d_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_pooling2d_workload_8cpp_source.html">NeonPooling2dWorkload.cpp</a>.</p>
21250
21251<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00575">NeonLayerSupport::IsPooling2dSupported()</a>.</p>
21252<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</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; arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(descriptor);</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="keywordflow">return</span> arm_compute::NEPoolingLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
21253</div>
21254</div>
21255<a id="a188adc104b16db3dc23ed2c5ff06cbb8"></a>
21256<h2 class="memtitle"><span class="permalink"><a href="#a188adc104b16db3dc23ed2c5ff06cbb8">&#9670;&nbsp;</a></span>NeonPreluWorkloadValidate()</h2>
21257
21258<div class="memitem">
21259<div class="memproto">
21260 <table class="memname">
21261 <tr>
21262 <td class="memname">arm_compute::Status NeonPreluWorkloadValidate </td>
21263 <td>(</td>
21264 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21265 <td class="paramname"><em>input</em>, </td>
21266 </tr>
21267 <tr>
21268 <td class="paramkey"></td>
21269 <td></td>
21270 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21271 <td class="paramname"><em>alpha</em>, </td>
21272 </tr>
21273 <tr>
21274 <td class="paramkey"></td>
21275 <td></td>
21276 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21277 <td class="paramname"><em>output</em>&#160;</td>
21278 </tr>
21279 <tr>
21280 <td></td>
21281 <td>)</td>
21282 <td></td><td></td>
21283 </tr>
21284 </table>
21285</div><div class="memdoc">
21286
21287<p class="definition">Definition at line <a class="el" href="_neon_prelu_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_prelu_workload_8cpp_source.html">NeonPreluWorkload.cpp</a>.</p>
21288
21289<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00583">NeonLayerSupport::IsPreluSupported()</a>.</p>
21290<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAlpha = armcomputetensorutils::BuildArmComputeTensorInfo(alpha);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPReluLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; &amp;aclAlpha,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div></div><!-- fragment -->
21291</div>
21292</div>
21293<a id="ae83632e641892ad2de78f316376f6bd0"></a>
21294<h2 class="memtitle"><span class="permalink"><a href="#ae83632e641892ad2de78f316376f6bd0">&#9670;&nbsp;</a></span>NeonQuantizedLstmWorkloadValidate()</h2>
21295
21296<div class="memitem">
21297<div class="memproto">
21298 <table class="memname">
21299 <tr>
21300 <td class="memname">arm_compute::Status NeonQuantizedLstmWorkloadValidate </td>
21301 <td>(</td>
21302 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21303 <td class="paramname"><em>input</em>, </td>
21304 </tr>
21305 <tr>
21306 <td class="paramkey"></td>
21307 <td></td>
21308 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21309 <td class="paramname"><em>cellStateIn</em>, </td>
21310 </tr>
21311 <tr>
21312 <td class="paramkey"></td>
21313 <td></td>
21314 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21315 <td class="paramname"><em>outputStateIn</em>, </td>
21316 </tr>
21317 <tr>
21318 <td class="paramkey"></td>
21319 <td></td>
21320 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21321 <td class="paramname"><em>cellStateOut</em>, </td>
21322 </tr>
21323 <tr>
21324 <td class="paramkey"></td>
21325 <td></td>
21326 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21327 <td class="paramname"><em>outputStateOut</em>, </td>
21328 </tr>
21329 <tr>
21330 <td class="paramkey"></td>
21331 <td></td>
21332 <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.html">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
21333 <td class="paramname"><em>paramsInfo</em>&#160;</td>
21334 </tr>
21335 <tr>
21336 <td></td>
21337 <td>)</td>
21338 <td></td><td></td>
21339 </tr>
21340 </table>
21341</div><div class="memdoc">
21342
21343<p class="definition">Definition at line <a class="el" href="_neon_quantized_lstm_workload_8cpp_source.html#l00130">130</a> of file <a class="el" href="_neon_quantized_lstm_workload_8cpp_source.html">NeonQuantizedLstmWorkload.cpp</a>.</p>
21344
21345<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00601">NeonLayerSupport::IsQuantizedLstmSupported()</a>.</p>
21346<div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// The inputs and outputs</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</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; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToInputWeightsInfo</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToInputWeightsInfo</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputGateBiasInfo</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> arm_compute::NELSTMLayerQuantized::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; &amp;aclInputToInputWeightsInfo,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; &amp;aclInputGateBiasInfo,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; &amp;aclCellStateInInfo,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; &amp;aclOutputStateInInfo,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; &amp;aclCellStateOutInfo,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; &amp;aclOutputStateOutInfo);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div></div><!-- fragment -->
21347</div>
21348</div>
21349<a id="a4d1e35c8bbe48e99dd522ac0f75f77d7"></a>
21350<h2 class="memtitle"><span class="permalink"><a href="#a4d1e35c8bbe48e99dd522ac0f75f77d7">&#9670;&nbsp;</a></span>NeonQuantizeWorkloadValidate()</h2>
21351
21352<div class="memitem">
21353<div class="memproto">
21354 <table class="memname">
21355 <tr>
21356 <td class="memname">arm_compute::Status NeonQuantizeWorkloadValidate </td>
21357 <td>(</td>
21358 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21359 <td class="paramname"><em>input</em>, </td>
21360 </tr>
21361 <tr>
21362 <td class="paramkey"></td>
21363 <td></td>
21364 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21365 <td class="paramname"><em>output</em>&#160;</td>
21366 </tr>
21367 <tr>
21368 <td></td>
21369 <td>)</td>
21370 <td></td><td></td>
21371 </tr>
21372 </table>
21373</div><div class="memdoc">
21374
21375<p class="definition">Definition at line <a class="el" href="_neon_quantize_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_quantize_workload_8cpp_source.html">NeonQuantizeWorkload.cpp</a>.</p>
21376
21377<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00591">NeonLayerSupport::IsQuantizeSupported()</a>.</p>
21378<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo neonInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo neonOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::NEQuantizationLayer::validate(&amp;neonInputInfo, &amp;neonOutputInfo);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
21379</div>
21380</div>
21381<a id="a430021076042c8157a926a3bb3a37152"></a>
21382<h2 class="memtitle"><span class="permalink"><a href="#a430021076042c8157a926a3bb3a37152">&#9670;&nbsp;</a></span>NeonReshapeWorkloadValidate()</h2>
21383
21384<div class="memitem">
21385<div class="memproto">
21386 <table class="memname">
21387 <tr>
21388 <td class="memname">arm_compute::Status NeonReshapeWorkloadValidate </td>
21389 <td>(</td>
21390 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21391 <td class="paramname"><em>input</em>, </td>
21392 </tr>
21393 <tr>
21394 <td class="paramkey"></td>
21395 <td></td>
21396 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21397 <td class="paramname"><em>output</em>&#160;</td>
21398 </tr>
21399 <tr>
21400 <td></td>
21401 <td>)</td>
21402 <td></td><td></td>
21403 </tr>
21404 </table>
21405</div><div class="memdoc">
21406
21407<p class="definition">Definition at line <a class="el" href="_neon_reshape_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_reshape_workload_8cpp_source.html">NeonReshapeWorkload.cpp</a>.</p>
21408
21409<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00619">NeonLayerSupport::IsReshapeSupported()</a>.</p>
21410<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEReshapeLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
21411</div>
21412</div>
21413<a id="a552d65f4e0a6c9e7c7796e77590063e9"></a>
21414<h2 class="memtitle"><span class="permalink"><a href="#a552d65f4e0a6c9e7c7796e77590063e9">&#9670;&nbsp;</a></span>NeonResizeWorkloadValidate()</h2>
21415
21416<div class="memitem">
21417<div class="memproto">
21418 <table class="memname">
21419 <tr>
21420 <td class="memname">arm_compute::Status NeonResizeWorkloadValidate </td>
21421 <td>(</td>
21422 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21423 <td class="paramname"><em>input</em>, </td>
21424 </tr>
21425 <tr>
21426 <td class="paramkey"></td>
21427 <td></td>
21428 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21429 <td class="paramname"><em>output</em>, </td>
21430 </tr>
21431 <tr>
21432 <td class="paramkey"></td>
21433 <td></td>
21434 <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.html">ResizeDescriptor</a> &amp;&#160;</td>
21435 <td class="paramname"><em>descriptor</em>&#160;</td>
21436 </tr>
21437 <tr>
21438 <td></td>
21439 <td>)</td>
21440 <td></td><td></td>
21441 </tr>
21442 </table>
21443</div><div class="memdoc">
21444
21445<p class="definition">Definition at line <a class="el" href="_neon_resize_workload_8cpp_source.html#l00020">20</a> of file <a class="el" href="_neon_resize_workload_8cpp_source.html">NeonResizeWorkload.cpp</a>.</p>
21446
21447<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00631">NeonLayerSupport::IsResizeSupported()</a>.</p>
21448<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">arm_compute::DataLayout</a> aclDataLayout = ConvertDataLayout(descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; aclInputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; aclOutputInfo.set_data_layout(aclDataLayout);</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; arm_compute::InterpolationPolicy aclInterpolationPolicy =</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a>(descriptor.m_Method);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> arm_compute::NEScale::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; aclInterpolationPolicy,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::BorderMode::REPLICATE,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; arm_compute::PixelValue(0.f),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; arm_compute::SamplingPolicy::TOP_LEFT);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae9bdcb8ac91731109dc423d6ed476204"><div class="ttname"><a href="namespacearmnn.html#ae9bdcb8ac91731109dc423d6ed476204">armnn::ConvertResizeMethodToAclInterpolationPolicy</a></div><div class="ttdeci">arm_compute::InterpolationPolicy ConvertResizeMethodToAclInterpolationPolicy(ResizeMethod resizeMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00125">ArmComputeUtils.hpp:125</a></div></div>
21449<div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
21450</div><!-- fragment -->
21451</div>
21452</div>
21453<a id="aa7d1b5e38aa8cb731519ff12e2a73350"></a>
21454<h2 class="memtitle"><span class="permalink"><a href="#aa7d1b5e38aa8cb731519ff12e2a73350">&#9670;&nbsp;</a></span>NeonRsqrtWorkloadValidate()</h2>
21455
21456<div class="memitem">
21457<div class="memproto">
21458 <table class="memname">
21459 <tr>
21460 <td class="memname">arm_compute::Status NeonRsqrtWorkloadValidate </td>
21461 <td>(</td>
21462 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21463 <td class="paramname"><em>input</em>, </td>
21464 </tr>
21465 <tr>
21466 <td class="paramkey"></td>
21467 <td></td>
21468 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21469 <td class="paramname"><em>output</em>&#160;</td>
21470 </tr>
21471 <tr>
21472 <td></td>
21473 <td>)</td>
21474 <td></td><td></td>
21475 </tr>
21476 </table>
21477</div><div class="memdoc">
21478
21479<p class="definition">Definition at line <a class="el" href="_neon_rsqrt_workload_8cpp_source.html#l00018">18</a> of file <a class="el" href="_neon_rsqrt_workload_8cpp_source.html">NeonRsqrtWorkload.cpp</a>.</p>
21480
21481<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00356">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
21482<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NERsqrtLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
21483</div>
21484</div>
21485<a id="a0a223c0997e3f7faa373ed55f954252b"></a>
21486<h2 class="memtitle"><span class="permalink"><a href="#a0a223c0997e3f7faa373ed55f954252b">&#9670;&nbsp;</a></span>NeonSliceWorkloadValidate()</h2>
21487
21488<div class="memitem">
21489<div class="memproto">
21490 <table class="memname">
21491 <tr>
21492 <td class="memname">arm_compute::Status NeonSliceWorkloadValidate </td>
21493 <td>(</td>
21494 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21495 <td class="paramname"><em>input</em>, </td>
21496 </tr>
21497 <tr>
21498 <td class="paramkey"></td>
21499 <td></td>
21500 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21501 <td class="paramname"><em>output</em>, </td>
21502 </tr>
21503 <tr>
21504 <td class="paramkey"></td>
21505 <td></td>
21506 <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;&#160;</td>
21507 <td class="paramname"><em>descriptor</em>&#160;</td>
21508 </tr>
21509 <tr>
21510 <td></td>
21511 <td>)</td>
21512 <td></td><td></td>
21513 </tr>
21514 </table>
21515</div><div class="memdoc">
21516
21517<p class="definition">Definition at line <a class="el" href="_neon_slice_workload_8cpp_source.html#l00019">19</a> of file <a class="el" href="_neon_slice_workload_8cpp_source.html">NeonSliceWorkload.cpp</a>.</p>
21518
21519<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00666">NeonLayerSupport::IsSliceSupported()</a>.</p>
21520<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</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; std::tie(starts, ends) = <a class="code" href="namespacearmnn.html#ab40e30cea5a328a3c35aa32f9b7db1c1">SetNeonSliceData</a>(descriptor.m_Begin, descriptor.m_Size);</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="keywordflow">return</span> arm_compute::NESlice::validate(&amp;aclInputInfo, &amp;aclOutputInfo, starts, ends);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ab40e30cea5a328a3c35aa32f9b7db1c1"><div class="ttname"><a href="namespacearmnn.html#ab40e30cea5a328a3c35aa32f9b7db1c1">armnn::SetNeonSliceData</a></div><div class="ttdeci">auto SetNeonSliceData(const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.html#l00088">NeonWorkloadUtils.hpp:88</a></div></div>
21521<div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
21522</div><!-- fragment -->
21523</div>
21524</div>
21525<a id="a4077a9771ba9c551f4ce61863f65e798"></a>
21526<h2 class="memtitle"><span class="permalink"><a href="#a4077a9771ba9c551f4ce61863f65e798">&#9670;&nbsp;</a></span>NeonSoftmaxWorkloadValidate()</h2>
21527
21528<div class="memitem">
21529<div class="memproto">
21530 <table class="memname">
21531 <tr>
21532 <td class="memname">arm_compute::Status NeonSoftmaxWorkloadValidate </td>
21533 <td>(</td>
21534 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21535 <td class="paramname"><em>input</em>, </td>
21536 </tr>
21537 <tr>
21538 <td class="paramkey"></td>
21539 <td></td>
21540 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21541 <td class="paramname"><em>output</em>, </td>
21542 </tr>
21543 <tr>
21544 <td class="paramkey"></td>
21545 <td></td>
21546 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.html">SoftmaxDescriptor</a> &amp;&#160;</td>
21547 <td class="paramname"><em>descriptor</em>&#160;</td>
21548 </tr>
21549 <tr>
21550 <td></td>
21551 <td>)</td>
21552 <td></td><td></td>
21553 </tr>
21554 </table>
21555</div><div class="memdoc">
21556
21557<p class="definition">Definition at line <a class="el" href="_neon_softmax_base_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_neon_softmax_base_workload_8cpp_source.html">NeonSoftmaxBaseWorkload.cpp</a>.</p>
21558
21559<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00678">NeonLayerSupport::IsSoftmaxSupported()</a>.</p>
21560<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a>(descriptor, input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::NESoftmaxLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, descriptor.m_Beta, aclAxis);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aa70ebe7b7898fe69ce24db803caa373e"><div class="ttname"><a href="namespacearmnn.html#aa70ebe7b7898fe69ce24db803caa373e">armnn::ComputeSoftmaxAclAxis</a></div><div class="ttdeci">unsigned int ComputeSoftmaxAclAxis(const SoftmaxDescriptor &amp;softmaxDesc, const armnn::TensorInfo &amp;tensor)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.html#l00138">ArmComputeUtils.hpp:138</a></div></div>
21561</div><!-- fragment -->
21562</div>
21563</div>
21564<a id="ab29257da888af2c4971db1344d8a526c"></a>
21565<h2 class="memtitle"><span class="permalink"><a href="#ab29257da888af2c4971db1344d8a526c">&#9670;&nbsp;</a></span>NeonSpaceToBatchNdWorkloadValidate()</h2>
21566
21567<div class="memitem">
21568<div class="memproto">
21569 <table class="memname">
21570 <tr>
21571 <td class="memname">arm_compute::Status NeonSpaceToBatchNdWorkloadValidate </td>
21572 <td>(</td>
21573 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21574 <td class="paramname"><em>input</em>, </td>
21575 </tr>
21576 <tr>
21577 <td class="paramkey"></td>
21578 <td></td>
21579 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21580 <td class="paramname"><em>output</em>, </td>
21581 </tr>
21582 <tr>
21583 <td class="paramkey"></td>
21584 <td></td>
21585 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
21586 <td class="paramname"><em>descriptor</em>&#160;</td>
21587 </tr>
21588 <tr>
21589 <td></td>
21590 <td>)</td>
21591 <td></td><td></td>
21592 </tr>
21593 </table>
21594</div><div class="memdoc">
21595
21596<p class="definition">Definition at line <a class="el" href="_neon_space_to_batch_nd_workload_8cpp_source.html#l00016">16</a> of file <a class="el" href="_neon_space_to_batch_nd_workload_8cpp_source.html">NeonSpaceToBatchNdWorkload.cpp</a>.</p>
21597
21598<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00686">NeonLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
21599<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; int32_t blockHeight = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; int32_t blockWidth = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockShape[1]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; arm_compute::Size2D paddingLeftTop = BuildArmComputeSize2D(</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_PadList[1].first, descriptor.m_PadList[0].first);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::Size2D paddingRightBottom = BuildArmComputeSize2D(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_PadList[1].second, descriptor.m_PadList[0].second);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> arm_compute::NESpaceToBatchLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; blockWidth,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; blockHeight,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; paddingLeftTop,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; paddingRightBottom,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div></div><!-- fragment -->
21600</div>
21601</div>
21602<a id="af6d2d40482240def4614deb694933d1e"></a>
21603<h2 class="memtitle"><span class="permalink"><a href="#af6d2d40482240def4614deb694933d1e">&#9670;&nbsp;</a></span>NeonSpaceToDepthWorkloadValidate()</h2>
21604
21605<div class="memitem">
21606<div class="memproto">
21607 <table class="memname">
21608 <tr>
21609 <td class="memname">arm_compute::Status NeonSpaceToDepthWorkloadValidate </td>
21610 <td>(</td>
21611 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21612 <td class="paramname"><em>input</em>, </td>
21613 </tr>
21614 <tr>
21615 <td class="paramkey"></td>
21616 <td></td>
21617 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21618 <td class="paramname"><em>output</em>, </td>
21619 </tr>
21620 <tr>
21621 <td class="paramkey"></td>
21622 <td></td>
21623 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
21624 <td class="paramname"><em>descriptor</em>&#160;</td>
21625 </tr>
21626 <tr>
21627 <td></td>
21628 <td>)</td>
21629 <td></td><td></td>
21630 </tr>
21631 </table>
21632</div><div class="memdoc">
21633
21634<p class="definition">Definition at line <a class="el" href="_neon_space_to_depth_workload_8cpp_source.html#l00015">15</a> of file <a class="el" href="_neon_space_to_depth_workload_8cpp_source.html">NeonSpaceToDepthWorkload.cpp</a>.</p>
21635
21636<p class="reference">References <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
21637
21638<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00698">NeonLayerSupport::IsSpaceToDepthSupported()</a>.</p>
21639<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = descriptor.m_DataLayout;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; int32_t blockSize = boost::numeric_cast&lt;int32_t&gt;(descriptor.m_BlockSize);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NESpaceToDepthLayer::validate(&amp;aclInput, &amp;aclOutput, blockSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00048">Types.hpp:48</a></div></div>
21640</div><!-- fragment -->
21641</div>
21642</div>
21643<a id="aab5ea316b3decb05430323d847e3a773"></a>
21644<h2 class="memtitle"><span class="permalink"><a href="#aab5ea316b3decb05430323d847e3a773">&#9670;&nbsp;</a></span>NeonSplitterWorkloadValidate()</h2>
21645
21646<div class="memitem">
21647<div class="memproto">
21648 <table class="memname">
21649 <tr>
21650 <td class="memname">arm_compute::Status NeonSplitterWorkloadValidate </td>
21651 <td>(</td>
21652 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21653 <td class="paramname"><em>input</em>, </td>
21654 </tr>
21655 <tr>
21656 <td class="paramkey"></td>
21657 <td></td>
21658 <td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
21659 <td class="paramname"><em>outputs</em>, </td>
21660 </tr>
21661 <tr>
21662 <td class="paramkey"></td>
21663 <td></td>
21664 <td class="paramtype">unsigned int&#160;</td>
21665 <td class="paramname"><em>splitAxis</em>&#160;</td>
21666 </tr>
21667 <tr>
21668 <td></td>
21669 <td>)</td>
21670 <td></td><td></td>
21671 </tr>
21672 </table>
21673</div><div class="memdoc">
21674
21675<p class="definition">Definition at line <a class="el" href="_neon_splitter_workload_8cpp_source.html#l00031">31</a> of file <a class="el" href="_neon_splitter_workload_8cpp_source.html">NeonSplitterWorkload.cpp</a>.</p>
21676
21677<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00721">NeonLayerSupport::IsSplitterSupported()</a>.</p>
21678<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">size_t</span> numOutputs = outputs.size();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclOutputs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; aclOutputs.reserve(numOutputs);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclOutputPtr;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclOutputPtr.reserve(numOutputs);</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"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0u; i &lt; outputs.size(); ++i)</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; aclOutputs.emplace_back(BuildArmComputeTensorInfo(outputs[i]));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; aclOutputPtr.emplace_back(&amp;aclOutputs.back());</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"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = CalcAclAxis(input.GetNumDimensions(), splitAxis);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> arm_compute::NESplit::validate(&amp;aclInputInfo, aclOutputPtr, aclAxis);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
21679</div>
21680</div>
21681<a id="a65c83c74bdbd66cdd547d331998952eb"></a>
21682<h2 class="memtitle"><span class="permalink"><a href="#a65c83c74bdbd66cdd547d331998952eb">&#9670;&nbsp;</a></span>NeonStackWorkloadValidate()</h2>
21683
21684<div class="memitem">
21685<div class="memproto">
21686 <table class="memname">
21687 <tr>
21688 <td class="memname">arm_compute::Status NeonStackWorkloadValidate </td>
21689 <td>(</td>
21690 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> *&gt; &amp;&#160;</td>
21691 <td class="paramname"><em>inputs</em>, </td>
21692 </tr>
21693 <tr>
21694 <td class="paramkey"></td>
21695 <td></td>
21696 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21697 <td class="paramname"><em>output</em>, </td>
21698 </tr>
21699 <tr>
21700 <td class="paramkey"></td>
21701 <td></td>
21702 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.html">StackDescriptor</a> &amp;&#160;</td>
21703 <td class="paramname"><em>descriptor</em>&#160;</td>
21704 </tr>
21705 <tr>
21706 <td></td>
21707 <td>)</td>
21708 <td></td><td></td>
21709 </tr>
21710 </table>
21711</div><div class="memdoc">
21712
21713<p class="definition">Definition at line <a class="el" href="_neon_stack_workload_8cpp_source.html#l00028">28</a> of file <a class="el" href="_neon_stack_workload_8cpp_source.html">NeonStackWorkload.cpp</a>.</p>
21714
21715<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00754">NeonLayerSupport::IsStackSupported()</a>.</p>
21716<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; aclInputs.emplace_back(aclInputInfo);</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;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; aclInputPtrs.emplace_back(&amp;input);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</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"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">int</span> aclAxis = CalcAxis(descriptor.m_Axis, descriptor.m_InputShape.GetNumDimensions());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEStackLayer::validate(aclInputPtrs, aclAxis, &amp;aclOutputInfo);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
21717</div><!-- fragment -->
21718</div>
21719</div>
21720<a id="ac71d08bf1257807c112b4d019802acc3"></a>
21721<h2 class="memtitle"><span class="permalink"><a href="#ac71d08bf1257807c112b4d019802acc3">&#9670;&nbsp;</a></span>NeonStridedSliceWorkloadValidate()</h2>
21722
21723<div class="memitem">
21724<div class="memproto">
21725 <table class="memname">
21726 <tr>
21727 <td class="memname">arm_compute::Status NeonStridedSliceWorkloadValidate </td>
21728 <td>(</td>
21729 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21730 <td class="paramname"><em>input</em>, </td>
21731 </tr>
21732 <tr>
21733 <td class="paramkey"></td>
21734 <td></td>
21735 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21736 <td class="paramname"><em>output</em>, </td>
21737 </tr>
21738 <tr>
21739 <td class="paramkey"></td>
21740 <td></td>
21741 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
21742 <td class="paramname"><em>descriptor</em>&#160;</td>
21743 </tr>
21744 <tr>
21745 <td></td>
21746 <td>)</td>
21747 <td></td><td></td>
21748 </tr>
21749 </table>
21750</div><div class="memdoc">
21751
21752<p class="definition">Definition at line <a class="el" href="_neon_strided_slice_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_strided_slice_workload_8cpp_source.html">NeonStridedSliceWorkload.cpp</a>.</p>
21753
21754<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00766">NeonLayerSupport::IsStridedSliceSupported()</a>.</p>
21755<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::tie(starts, ends, strides) = <a class="code" href="namespacearmnn.html#a01d1e745f360ccd0b655214645bcef32">SetNeonStridedSliceData</a>(descriptor.m_Begin,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_End,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_Stride);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">auto</span> numDimensions = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(input.GetNumDimensions());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; int32_t begin_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_BeginMask, numDimensions);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; int32_t end_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_EndMask, numDimensions);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; int32_t shrink_axis_mask = <a class="code" href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_ShrinkAxisMask, numDimensions);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> arm_compute::NEStridedSlice::validate(&amp;aclInput,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; starts,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; ends,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; strides,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; begin_mask,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; end_mask,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; shrink_axis_mask);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
21756<div class="ttc" id="namespacearmnn_html_a01d1e745f360ccd0b655214645bcef32"><div class="ttname"><a href="namespacearmnn.html#a01d1e745f360ccd0b655214645bcef32">armnn::SetNeonStridedSliceData</a></div><div class="ttdeci">auto SetNeonStridedSliceData(const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.html#l00066">NeonWorkloadUtils.hpp:66</a></div></div>
21757<div class="ttc" id="namespacearmnn_html_ad69ffa576a596b9eb20ab6a41420c541"><div class="ttname"><a href="namespacearmnn.html#ad69ffa576a596b9eb20ab6a41420c541">armnn::ConvertMaskToACLFormat</a></div><div class="ttdeci">int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.html#l00192">WorkloadUtils.cpp:192</a></div></div>
21758</div><!-- fragment -->
21759</div>
21760</div>
21761<a id="a73c15f02c46f64c1adf0fafb4c7c2cac"></a>
21762<h2 class="memtitle"><span class="permalink"><a href="#a73c15f02c46f64c1adf0fafb4c7c2cac">&#9670;&nbsp;</a></span>NeonSubtractionWorkloadValidate()</h2>
21763
21764<div class="memitem">
21765<div class="memproto">
21766 <table class="memname">
21767 <tr>
21768 <td class="memname">arm_compute::Status NeonSubtractionWorkloadValidate </td>
21769 <td>(</td>
21770 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21771 <td class="paramname"><em>input0</em>, </td>
21772 </tr>
21773 <tr>
21774 <td class="paramkey"></td>
21775 <td></td>
21776 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21777 <td class="paramname"><em>input1</em>, </td>
21778 </tr>
21779 <tr>
21780 <td class="paramkey"></td>
21781 <td></td>
21782 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21783 <td class="paramname"><em>output</em>&#160;</td>
21784 </tr>
21785 <tr>
21786 <td></td>
21787 <td>)</td>
21788 <td></td><td></td>
21789 </tr>
21790 </table>
21791</div><div class="memdoc">
21792
21793<p class="definition">Definition at line <a class="el" href="_neon_subtraction_workload_8cpp_source.html#l00017">17</a> of file <a class="el" href="_neon_subtraction_workload_8cpp_source.html">NeonSubtractionWorkload.cpp</a>.</p>
21794
21795<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00778">NeonLayerSupport::IsSubtractionSupported()</a>.</p>
21796<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArithmeticSubtraction::validate(&amp;aclInput0,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; arm_compute::ConvertPolicy::SATURATE);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
21797</div>
21798</div>
21799<a id="aad5d4888304a57fb22c4608dc5d94dc1"></a>
21800<h2 class="memtitle"><span class="permalink"><a href="#aad5d4888304a57fb22c4608dc5d94dc1">&#9670;&nbsp;</a></span>NeonTensorHandleFactoryId()</h2>
21801
21802<div class="memitem">
21803<div class="memproto">
21804 <table class="memname">
21805 <tr>
21806 <td class="memname">constexpr const char* armnn::NeonTensorHandleFactoryId </td>
21807 <td>(</td>
21808 <td class="paramname"></td><td>)</td>
21809 <td></td>
21810 </tr>
21811 </table>
21812</div><div class="memdoc">
21813
21814<p class="definition">Definition at line <a class="el" href="_neon_tensor_handle_factory_8hpp_source.html#l00014">14</a> of file <a class="el" href="_neon_tensor_handle_factory_8hpp_source.html">NeonTensorHandleFactory.hpp</a>.</p>
21815
21816<p class="reference">Referenced by <a class="el" href="_neon_tensor_handle_factory_8cpp_source.html#l00084">NeonTensorHandleFactory::GetIdStatic()</a>.</p>
21817<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Neon/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
21818</div>
21819</div>
21820<a id="abc73c3c9a09f91c22c64d7c166e9be4d"></a>
21821<h2 class="memtitle"><span class="permalink"><a href="#abc73c3c9a09f91c22c64d7c166e9be4d">&#9670;&nbsp;</a></span>NeonTransposeConvolution2dWorkloadValidate()</h2>
21822
21823<div class="memitem">
21824<div class="memproto">
21825 <table class="memname">
21826 <tr>
21827 <td class="memname">arm_compute::Status NeonTransposeConvolution2dWorkloadValidate </td>
21828 <td>(</td>
21829 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21830 <td class="paramname"><em>input</em>, </td>
21831 </tr>
21832 <tr>
21833 <td class="paramkey"></td>
21834 <td></td>
21835 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21836 <td class="paramname"><em>output</em>, </td>
21837 </tr>
21838 <tr>
21839 <td class="paramkey"></td>
21840 <td></td>
21841 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
21842 <td class="paramname"><em>descriptor</em>, </td>
21843 </tr>
21844 <tr>
21845 <td class="paramkey"></td>
21846 <td></td>
21847 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
21848 <td class="paramname"><em>weights</em>, </td>
21849 </tr>
21850 <tr>
21851 <td class="paramkey"></td>
21852 <td></td>
21853 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &gt; &amp;&#160;</td>
21854 <td class="paramname"><em>biases</em>&#160;</td>
21855 </tr>
21856 <tr>
21857 <td></td>
21858 <td>)</td>
21859 <td></td><td></td>
21860 </tr>
21861 </table>
21862</div><div class="memdoc">
21863
21864<p class="definition">Definition at line <a class="el" href="_neon_transpose_convolution2d_workload_8cpp_source.html#l00026">26</a> of file <a class="el" href="_neon_transpose_convolution2d_workload_8cpp_source.html">NeonTransposeConvolution2dWorkload.cpp</a>.</p>
21865
21866<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.html#l00790">NeonLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
21867<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</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"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</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; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</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; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</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; <span class="keywordflow">return</span> arm_compute::NEDeconvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; layerInfo);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
21868</div>
21869</div>
21870<a id="a869f740e9c2fcb8642350c6e3d0b3742"></a>
21871<h2 class="memtitle"><span class="permalink"><a href="#a869f740e9c2fcb8642350c6e3d0b3742">&#9670;&nbsp;</a></span>NextIndex()</h2>
21872
21873<div class="memitem">
21874<div class="memproto">
21875 <table class="memname">
21876 <tr>
21877 <td class="memname">bool armnn::NextIndex </td>
21878 <td>(</td>
21879 <td class="paramtype">const unsigned int&#160;</td>
21880 <td class="paramname"><em>numDims</em>, </td>
21881 </tr>
21882 <tr>
21883 <td class="paramkey"></td>
21884 <td></td>
21885 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
21886 <td class="paramname"><em>dims</em>, </td>
21887 </tr>
21888 <tr>
21889 <td class="paramkey"></td>
21890 <td></td>
21891 <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
21892 <td class="paramname"><em>current</em>&#160;</td>
21893 </tr>
21894 <tr>
21895 <td></td>
21896 <td>)</td>
21897 <td></td><td></td>
21898 </tr>
21899 </table>
21900</div><div class="memdoc">
21901
21902<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html">Mean.cpp</a>.</p>
21903
21904<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean()</a>.</p>
21905<div class="fragment"><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="keywordtype">unsigned</span> <span class="keywordtype">int</span> carry = 1;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = numDims; idx-- &gt; 0; )</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_val = current[idx] + carry;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (dims[idx] == current_val)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; current[idx] = 0;</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="keywordflow">else</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; current[idx] = current_val;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; carry = 0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> (carry == 0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div></div><!-- fragment -->
21906</div>
21907</div>
21908<a id="ac8c641d4a69c9a85c487cfbc7ea4d73c"></a>
21909<h2 class="memtitle"><span class="permalink"><a href="#ac8c641d4a69c9a85c487cfbc7ea4d73c">&#9670;&nbsp;</a></span>NonMaxSuppression()</h2>
21910
21911<div class="memitem">
21912<div class="memproto">
21913 <table class="memname">
21914 <tr>
21915 <td class="memname">std::vector&lt; unsigned int &gt; NonMaxSuppression </td>
21916 <td>(</td>
21917 <td class="paramtype">unsigned int&#160;</td>
21918 <td class="paramname"><em>numBoxes</em>, </td>
21919 </tr>
21920 <tr>
21921 <td class="paramkey"></td>
21922 <td></td>
21923 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
21924 <td class="paramname"><em>boxCorners</em>, </td>
21925 </tr>
21926 <tr>
21927 <td class="paramkey"></td>
21928 <td></td>
21929 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
21930 <td class="paramname"><em>scores</em>, </td>
21931 </tr>
21932 <tr>
21933 <td class="paramkey"></td>
21934 <td></td>
21935 <td class="paramtype">float&#160;</td>
21936 <td class="paramname"><em>nmsScoreThreshold</em>, </td>
21937 </tr>
21938 <tr>
21939 <td class="paramkey"></td>
21940 <td></td>
21941 <td class="paramtype">unsigned int&#160;</td>
21942 <td class="paramname"><em>maxDetection</em>, </td>
21943 </tr>
21944 <tr>
21945 <td class="paramkey"></td>
21946 <td></td>
21947 <td class="paramtype">float&#160;</td>
21948 <td class="paramname"><em>nmsIouThreshold</em>&#160;</td>
21949 </tr>
21950 <tr>
21951 <td></td>
21952 <td>)</td>
21953 <td></td><td></td>
21954 </tr>
21955 </table>
21956</div><div class="memdoc">
21957
21958<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">50</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
21959
21960<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">GenerateRangeK()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00031">IntersectionOverUnion()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">TopKSort()</a>.</p>
21961
21962<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00050">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>.</p>
21963<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Select boxes that have scores above a given threshold.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::vector&lt;float&gt; scoresAboveThreshold;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::vector&lt;unsigned int&gt; indicesAboveThreshold;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</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; <span class="keywordflow">if</span> (<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>[i] &gt;= nmsScoreThreshold)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; scoresAboveThreshold.push_back(<a class="code" href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a>[i]);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; indicesAboveThreshold.push_back(i);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</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; <span class="comment">// Sort the indices based on scores.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numAboveThreshold = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(scoresAboveThreshold.size());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; std::vector&lt;unsigned int&gt; sortedIndices = <a class="code" href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(numAboveThreshold);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numAboveThreshold, sortedIndices.data(), scoresAboveThreshold.data(), numAboveThreshold);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Number of output cannot be more than max detections specified in the option.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(maxDetection, numAboveThreshold);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; std::vector&lt;unsigned int&gt; outputIndices;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::vector&lt;bool&gt; visited(numAboveThreshold, <span class="keyword">false</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// Prune out the boxes with high intersection over union by keeping the box with higher score.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numAboveThreshold; ++i)</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">if</span> (outputIndices.size() &gt;= numOutput)</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; <span class="keywordflow">break</span>;</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"> 86</span>&#160; <span class="keywordflow">if</span> (!visited[sortedIndices[i]])</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; outputIndices.push_back(indicesAboveThreshold[sortedIndices[i]]);</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = i + 1; j &lt; numAboveThreshold; ++j)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iIndex = indicesAboveThreshold[sortedIndices[i]] * 4;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> jIndex = indicesAboveThreshold[sortedIndices[j]] * 4;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#abf6aad7bc221f8ad22b4d99cd020373b">IntersectionOverUnion</a>(&amp;boxCorners[iIndex], &amp;boxCorners[jIndex]) &gt; nmsIouThreshold)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; visited[sortedIndices[j]] = <span class="keyword">true</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</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; <span class="keywordflow">return</span> outputIndices;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="_neon_end_to_end_tests_8cpp_html_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.html#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
21964<div class="ttc" id="namespacearmnn_html_a2748f45e58b1c612d473043f711d1434"><div class="ttname"><a href="namespacearmnn.html#a2748f45e58b1c612d473043f711d1434">armnn::TopKSort</a></div><div class="ttdeci">void TopKSort(unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">DetectionPostProcess.cpp:25</a></div></div>
21965<div class="ttc" id="namespacearmnn_html_ae8ed5c640761fb6744aec0ee16388417"><div class="ttname"><a href="namespacearmnn.html#ae8ed5c640761fb6744aec0ee16388417">armnn::GenerateRangeK</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; GenerateRangeK(unsigned int k)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00018">DetectionPostProcess.cpp:18</a></div></div>
21966<div class="ttc" id="namespacearmnn_html_abf6aad7bc221f8ad22b4d99cd020373b"><div class="ttname"><a href="namespacearmnn.html#abf6aad7bc221f8ad22b4d99cd020373b">armnn::IntersectionOverUnion</a></div><div class="ttdeci">float IntersectionOverUnion(const float *boxI, const float *boxJ)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00031">DetectionPostProcess.cpp:31</a></div></div>
21967</div><!-- fragment -->
21968</div>
21969</div>
21970<a id="ac70a495c61526a0500b33b23db86ca27"></a>
21971<h2 class="memtitle"><span class="permalink"><a href="#ac70a495c61526a0500b33b23db86ca27">&#9670;&nbsp;</a></span>Offset()</h2>
21972
21973<div class="memitem">
21974<div class="memproto">
21975<table class="mlabels">
21976 <tr>
21977 <td class="mlabels-left">
21978 <table class="memname">
21979 <tr>
21980 <td class="memname">unsigned int armnn::Offset </td>
21981 <td>(</td>
21982 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
21983 <td class="paramname"><em>shape</em>, </td>
21984 </tr>
21985 <tr>
21986 <td class="paramkey"></td>
21987 <td></td>
21988 <td class="paramtype">unsigned int&#160;</td>
21989 <td class="paramname"><em>batch</em>, </td>
21990 </tr>
21991 <tr>
21992 <td class="paramkey"></td>
21993 <td></td>
21994 <td class="paramtype">unsigned int&#160;</td>
21995 <td class="paramname"><em>height</em>, </td>
21996 </tr>
21997 <tr>
21998 <td class="paramkey"></td>
21999 <td></td>
22000 <td class="paramtype">unsigned int&#160;</td>
22001 <td class="paramname"><em>width</em>, </td>
22002 </tr>
22003 <tr>
22004 <td class="paramkey"></td>
22005 <td></td>
22006 <td class="paramtype">unsigned int&#160;</td>
22007 <td class="paramname"><em>channels</em>, </td>
22008 </tr>
22009 <tr>
22010 <td class="paramkey"></td>
22011 <td></td>
22012 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
22013 <td class="paramname"><em>dataLayout</em>&#160;</td>
22014 </tr>
22015 <tr>
22016 <td></td>
22017 <td>)</td>
22018 <td></td><td></td>
22019 </tr>
22020 </table>
22021 </td>
22022 <td class="mlabels-right">
22023<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22024 </tr>
22025</table>
22026</div><div class="memdoc">
22027
22028<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00019">19</a> of file <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html">BatchToSpaceNd.cpp</a>.</p>
22029
22030<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed::GetDataLayout()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
22031
22032<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.html#l00035">BatchToSpaceNd()</a>.</p>
22033<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">if</span> (dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>() == DataLayout::NHWC)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> ((batch * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + height) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + width) *</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + channels;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</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="keywordflow">return</span> ((batch * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + channels) *</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + height) *</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + width;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a7d8b3d755b6ca8f5533657969efb06c4"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">armnnUtils::DataLayoutIndexed::GetDataLayout</a></div><div class="ttdeci">armnn::DataLayout GetDataLayout() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed.hpp:22</a></div></div>
22034<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
22035<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
22036<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
22037</div><!-- fragment -->
22038</div>
22039</div>
22040<a id="a5b0313cb554380d6e4dfb24c31f9e605"></a>
22041<h2 class="memtitle"><span class="permalink"><a href="#a5b0313cb554380d6e4dfb24c31f9e605">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[1/8]</span></h2>
22042
22043<div class="memitem">
22044<div class="memproto">
22045<table class="mlabels">
22046 <tr>
22047 <td class="mlabels-left">
22048 <table class="memname">
22049 <tr>
22050 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22051 <td>(</td>
22052 <td class="paramtype">std::ostream &amp;&#160;</td>
22053 <td class="paramname"><em>os</em>, </td>
22054 </tr>
22055 <tr>
22056 <td class="paramkey"></td>
22057 <td></td>
22058 <td class="paramtype">const std::vector&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
22059 <td class="paramname"><em>compute</em>&#160;</td>
22060 </tr>
22061 <tr>
22062 <td></td>
22063 <td>)</td>
22064 <td></td><td></td>
22065 </tr>
22066 </table>
22067 </td>
22068 <td class="mlabels-right">
22069<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22070 </tr>
22071</table>
22072</div><div class="memdoc">
22073<p>Deprecated function that will be removed together with the Compute enum </p>
22074
22075<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00047">47</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
22076
22077<p class="reference">References <a class="el" href="_backend_id_8hpp_source.html#l00034">GetComputeDeviceAsCString()</a>.</p>
22078<div class="fragment"><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; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&amp; comp : compute)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; os &lt;&lt; <a class="code" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(comp) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00021">BackendId.hpp:21</a></div></div>
22079<div class="ttc" id="namespacearmnn_html_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00034">BackendId.hpp:34</a></div></div>
22080</div><!-- fragment -->
22081</div>
22082</div>
22083<a id="a127a59fdf5e6d2fa74f87f9265de958b"></a>
22084<h2 class="memtitle"><span class="permalink"><a href="#a127a59fdf5e6d2fa74f87f9265de958b">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[2/8]</span></h2>
22085
22086<div class="memitem">
22087<div class="memproto">
22088<table class="mlabels">
22089 <tr>
22090 <td class="mlabels-left">
22091 <table class="memname">
22092 <tr>
22093 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22094 <td>(</td>
22095 <td class="paramtype">std::ostream &amp;&#160;</td>
22096 <td class="paramname"><em>os</em>, </td>
22097 </tr>
22098 <tr>
22099 <td class="paramkey"></td>
22100 <td></td>
22101 <td class="paramtype">const std::set&lt; <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
22102 <td class="paramname"><em>compute</em>&#160;</td>
22103 </tr>
22104 <tr>
22105 <td></td>
22106 <td>)</td>
22107 <td></td><td></td>
22108 </tr>
22109 </table>
22110 </td>
22111 <td class="mlabels-right">
22112<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22113 </tr>
22114</table>
22115</div><div class="memdoc">
22116<p>Deprecated function that will be removed together with the Compute enum </p>
22117
22118<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00058">58</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
22119
22120<p class="reference">References <a class="el" href="_backend_id_8hpp_source.html#l00034">GetComputeDeviceAsCString()</a>.</p>
22121<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&amp; comp : compute)</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; os &lt;&lt; <a class="code" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(comp) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00021">BackendId.hpp:21</a></div></div>
22122<div class="ttc" id="namespacearmnn_html_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00034">BackendId.hpp:34</a></div></div>
22123</div><!-- fragment -->
22124</div>
22125</div>
22126<a id="a14de37f4c695ac066f999aa75b7cb136"></a>
22127<h2 class="memtitle"><span class="permalink"><a href="#a14de37f4c695ac066f999aa75b7cb136">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[3/8]</span></h2>
22128
22129<div class="memitem">
22130<div class="memproto">
22131<table class="mlabels">
22132 <tr>
22133 <td class="mlabels-left">
22134 <table class="memname">
22135 <tr>
22136 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22137 <td>(</td>
22138 <td class="paramtype">std::ostream &amp;&#160;</td>
22139 <td class="paramname"><em>os</em>, </td>
22140 </tr>
22141 <tr>
22142 <td class="paramkey"></td>
22143 <td></td>
22144 <td class="paramtype">const <a class="el" href="structarmnn_1_1_backend_version.html">BackendVersion</a> &amp;&#160;</td>
22145 <td class="paramname"><em>backendVersion</em>&#160;</td>
22146 </tr>
22147 <tr>
22148 <td></td>
22149 <td>)</td>
22150 <td></td><td></td>
22151 </tr>
22152 </table>
22153 </td>
22154 <td class="mlabels-right">
22155<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22156 </tr>
22157</table>
22158</div><div class="memdoc">
22159
22160<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html#l00061">61</a> of file <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html">IBackendInternal.hpp</a>.</p>
22161
22162<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html#l00034">BackendVersion::m_Major</a>, and <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.html#l00035">BackendVersion::m_Minor</a>.</p>
22163<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; backendVersion.m_Major &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; backendVersion.m_Minor &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div></div><!-- fragment -->
22164</div>
22165</div>
22166<a id="a345acf4e0dc087eee3f9688029ee6328"></a>
22167<h2 class="memtitle"><span class="permalink"><a href="#a345acf4e0dc087eee3f9688029ee6328">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[4/8]</span></h2>
22168
22169<div class="memitem">
22170<div class="memproto">
22171<table class="mlabels">
22172 <tr>
22173 <td class="mlabels-left">
22174 <table class="memname">
22175 <tr>
22176 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22177 <td>(</td>
22178 <td class="paramtype">std::ostream &amp;&#160;</td>
22179 <td class="paramname"><em>os</em>, </td>
22180 </tr>
22181 <tr>
22182 <td class="paramkey"></td>
22183 <td></td>
22184 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &amp;&#160;</td>
22185 <td class="paramname"><em>compute</em>&#160;</td>
22186 </tr>
22187 <tr>
22188 <td></td>
22189 <td>)</td>
22190 <td></td><td></td>
22191 </tr>
22192 </table>
22193 </td>
22194 <td class="mlabels-right">
22195<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22196 </tr>
22197</table>
22198</div><div class="memdoc">
22199<p>Deprecated function that will be removed together with the Compute enum </p>
22200
22201<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00069">69</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
22202
22203<p class="reference">References <a class="el" href="_backend_id_8hpp_source.html#l00034">GetComputeDeviceAsCString()</a>.</p>
22204<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; os &lt;&lt; <a class="code" href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(compute);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.html#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00034">BackendId.hpp:34</a></div></div>
22205</div><!-- fragment -->
22206</div>
22207</div>
22208<a id="afc46634e26857d037ee80bb5a74ef28a"></a>
22209<h2 class="memtitle"><span class="permalink"><a href="#afc46634e26857d037ee80bb5a74ef28a">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[5/8]</span></h2>
22210
22211<div class="memitem">
22212<div class="memproto">
22213<table class="mlabels">
22214 <tr>
22215 <td class="mlabels-left">
22216 <table class="memname">
22217 <tr>
22218 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22219 <td>(</td>
22220 <td class="paramtype">std::ostream &amp;&#160;</td>
22221 <td class="paramname"><em>os</em>, </td>
22222 </tr>
22223 <tr>
22224 <td class="paramkey"></td>
22225 <td></td>
22226 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &amp;&#160;</td>
22227 <td class="paramname"><em>id</em>&#160;</td>
22228 </tr>
22229 <tr>
22230 <td></td>
22231 <td>)</td>
22232 <td></td><td></td>
22233 </tr>
22234 </table>
22235 </td>
22236 <td class="mlabels-right">
22237<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22238 </tr>
22239</table>
22240</div><div class="memdoc">
22241
22242<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00174">174</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
22243<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; os &lt;&lt; <span class="keywordtype">id</span>.Get();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div></div><!-- fragment -->
22244</div>
22245</div>
22246<a id="a62a9e8c87b9b9f504726746ba4a000a6"></a>
22247<h2 class="memtitle"><span class="permalink"><a href="#a62a9e8c87b9b9f504726746ba4a000a6">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[6/8]</span></h2>
22248
22249<div class="memitem">
22250<div class="memproto">
22251 <table class="memname">
22252 <tr>
22253 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22254 <td>(</td>
22255 <td class="paramtype">std::ostream &amp;&#160;</td>
22256 <td class="paramname"><em>os</em>, </td>
22257 </tr>
22258 <tr>
22259 <td class="paramkey"></td>
22260 <td></td>
22261 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a>&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>, TContainerTemplateArgs... &gt; &amp;&#160;</td>
22262 <td class="paramname"><em>ids</em>&#160;</td>
22263 </tr>
22264 <tr>
22265 <td></td>
22266 <td>)</td>
22267 <td></td><td></td>
22268 </tr>
22269 </table>
22270</div><div class="memdoc">
22271
22272<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.html#l00181">181</a> of file <a class="el" href="_backend_id_8hpp_source.html">BackendId.hpp</a>.</p>
22273<div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; os &lt;&lt; <span class="charliteral">&#39;[&#39;</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <span class="keywordtype">id</span> : ids) { os &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; os &lt;&lt; <span class="charliteral">&#39;]&#39;</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div></div><!-- fragment -->
22274</div>
22275</div>
22276<a id="aaa5b68f3f5bb73b1d3c85d895547a372"></a>
22277<h2 class="memtitle"><span class="permalink"><a href="#aaa5b68f3f5bb73b1d3c85d895547a372">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[7/8]</span></h2>
22278
22279<div class="memitem">
22280<div class="memproto">
22281<table class="mlabels">
22282 <tr>
22283 <td class="mlabels-left">
22284 <table class="memname">
22285 <tr>
22286 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22287 <td>(</td>
22288 <td class="paramtype">std::ostream &amp;&#160;</td>
22289 <td class="paramname"><em>os</em>, </td>
22290 </tr>
22291 <tr>
22292 <td class="paramkey"></td>
22293 <td></td>
22294 <td class="paramtype"><a class="el" href="namespacearmnn.html#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
22295 <td class="paramname"><em>stat</em>&#160;</td>
22296 </tr>
22297 <tr>
22298 <td></td>
22299 <td>)</td>
22300 <td></td><td></td>
22301 </tr>
22302 </table>
22303 </td>
22304 <td class="mlabels-right">
22305<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22306 </tr>
22307</table>
22308</div><div class="memdoc">
22309
22310<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00252">252</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
22311
22312<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00017">GetStatusAsCString()</a>.</p>
22313<div class="fragment"><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; os &lt;&lt; <a class="code" href="namespacearmnn.html#a19a90c41ca2f46ab29918fef1a6ad72e">GetStatusAsCString</a>(stat);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a19a90c41ca2f46ab29918fef1a6ad72e"><div class="ttname"><a href="namespacearmnn.html#a19a90c41ca2f46ab29918fef1a6ad72e">armnn::GetStatusAsCString</a></div><div class="ttdeci">constexpr char const * GetStatusAsCString(Status status)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00017">TypesUtils.hpp:17</a></div></div>
22314</div><!-- fragment -->
22315</div>
22316</div>
22317<a id="aa6d7532e14af97577c054f96d0cf23b3"></a>
22318<h2 class="memtitle"><span class="permalink"><a href="#aa6d7532e14af97577c054f96d0cf23b3">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[8/8]</span></h2>
22319
22320<div class="memitem">
22321<div class="memproto">
22322<table class="mlabels">
22323 <tr>
22324 <td class="mlabels-left">
22325 <table class="memname">
22326 <tr>
22327 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22328 <td>(</td>
22329 <td class="paramtype">std::ostream &amp;&#160;</td>
22330 <td class="paramname"><em>os</em>, </td>
22331 </tr>
22332 <tr>
22333 <td class="paramkey"></td>
22334 <td></td>
22335 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
22336 <td class="paramname"><em>shape</em>&#160;</td>
22337 </tr>
22338 <tr>
22339 <td></td>
22340 <td>)</td>
22341 <td></td><td></td>
22342 </tr>
22343 </table>
22344 </td>
22345 <td class="mlabels-right">
22346<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22347 </tr>
22348</table>
22349</div><div class="memdoc">
22350
22351<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00259">259</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
22352
22353<p class="reference">References <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, and <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>.</p>
22354<div class="fragment"><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; os &lt;&lt; <span class="stringliteral">&quot;[&quot;</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">for</span> (uint32_t i=0; i&lt;shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</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">if</span> (i!=0)</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; os &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; os &lt;&lt; shape[i];</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_shape_html_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorShape::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00043">Tensor.hpp:43</a></div></div>
22355</div><!-- fragment -->
22356</div>
22357</div>
22358<a id="a8022a6869bffa6233fec784a471c1680"></a>
22359<h2 class="memtitle"><span class="permalink"><a href="#a8022a6869bffa6233fec784a471c1680">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[1/2]</span></h2>
22360
22361<div class="memitem">
22362<div class="memproto">
22363<table class="mlabels">
22364 <tr>
22365 <td class="mlabels-left">
22366 <table class="memname">
22367 <tr>
22368 <td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
22369 <td>(</td>
22370 <td class="paramtype">std::istream &amp;&#160;</td>
22371 <td class="paramname"><em>in</em>, </td>
22372 </tr>
22373 <tr>
22374 <td class="paramkey"></td>
22375 <td></td>
22376 <td class="paramtype"><a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> &amp;&#160;</td>
22377 <td class="paramname"><em>compute</em>&#160;</td>
22378 </tr>
22379 <tr>
22380 <td></td>
22381 <td>)</td>
22382 <td></td><td></td>
22383 </tr>
22384 </table>
22385 </td>
22386 <td class="mlabels-right">
22387<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22388 </tr>
22389</table>
22390</div><div class="memdoc">
22391
22392<p class="definition">Definition at line <a class="el" href="_inference_test_8hpp_source.html#l00019">19</a> of file <a class="el" href="_inference_test_8hpp_source.html">InferenceTest.hpp</a>.</p>
22393
22394<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00145">ParseComputeDevice()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
22395<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; std::string token;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; in &gt;&gt; token;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; compute = <a class="code" href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a>(token.c_str());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (compute == <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; in.setstate(std::ios_base::failbit);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">throw</span> boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value);</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="keywordflow">return</span> in;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
22396<div class="ttc" id="namespacearmnn_html_a65645fa03bf8cddfb9d8a9f83beeb6e8"><div class="ttname"><a href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a></div><div class="ttdeci">constexpr armnn::Compute ParseComputeDevice(const char *str)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00145">TypesUtils.hpp:145</a></div></div>
22397</div><!-- fragment -->
22398</div>
22399</div>
22400<a id="a3c51506c471a4513dcc3364514d75f39"></a>
22401<h2 class="memtitle"><span class="permalink"><a href="#a3c51506c471a4513dcc3364514d75f39">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[2/2]</span></h2>
22402
22403<div class="memitem">
22404<div class="memproto">
22405<table class="mlabels">
22406 <tr>
22407 <td class="mlabels-left">
22408 <table class="memname">
22409 <tr>
22410 <td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
22411 <td>(</td>
22412 <td class="paramtype">std::istream &amp;&#160;</td>
22413 <td class="paramname"><em>in</em>, </td>
22414 </tr>
22415 <tr>
22416 <td class="paramkey"></td>
22417 <td></td>
22418 <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.html">armnn::BackendId</a> &amp;&#160;</td>
22419 <td class="paramname"><em>backend</em>&#160;</td>
22420 </tr>
22421 <tr>
22422 <td></td>
22423 <td>)</td>
22424 <td></td><td></td>
22425 </tr>
22426 </table>
22427 </td>
22428 <td class="mlabels-right">
22429<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22430 </tr>
22431</table>
22432</div><div class="memdoc">
22433
22434<p class="definition">Definition at line <a class="el" href="_inference_test_8hpp_source.html#l00032">32</a> of file <a class="el" href="_inference_test_8hpp_source.html">InferenceTest.hpp</a>.</p>
22435
22436<p class="reference">References <a class="el" href="_types_utils_8hpp_source.html#l00145">ParseComputeDevice()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
22437<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; std::string token;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; in &gt;&gt; token;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> compute = <a class="code" href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a>(token.c_str());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (compute == <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; in.setstate(std::ios_base::failbit);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">throw</span> boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; backend = compute;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> in;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
22438<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.html#l00021">BackendId.hpp:21</a></div></div>
22439<div class="ttc" id="namespacearmnn_html_a65645fa03bf8cddfb9d8a9f83beeb6e8"><div class="ttname"><a href="namespacearmnn.html#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a></div><div class="ttdeci">constexpr armnn::Compute ParseComputeDevice(const char *str)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00145">TypesUtils.hpp:145</a></div></div>
22440</div><!-- fragment -->
22441</div>
22442</div>
22443<a id="a82e98ef05fd67036d1195ba17174d685"></a>
22444<h2 class="memtitle"><span class="permalink"><a href="#a82e98ef05fd67036d1195ba17174d685">&#9670;&nbsp;</a></span>Optimize()</h2>
22445
22446<div class="memitem">
22447<div class="memproto">
22448 <table class="memname">
22449 <tr>
22450 <td class="memname"><a class="el" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> Optimize </td>
22451 <td>(</td>
22452 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> &amp;&#160;</td>
22453 <td class="paramname"><em>network</em>, </td>
22454 </tr>
22455 <tr>
22456 <td class="paramkey"></td>
22457 <td></td>
22458 <td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a> &gt; &amp;&#160;</td>
22459 <td class="paramname"><em>backendPreferences</em>, </td>
22460 </tr>
22461 <tr>
22462 <td class="paramkey"></td>
22463 <td></td>
22464 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_device_spec.html">IDeviceSpec</a> &amp;&#160;</td>
22465 <td class="paramname"><em>deviceSpec</em>, </td>
22466 </tr>
22467 <tr>
22468 <td class="paramkey"></td>
22469 <td></td>
22470 <td class="paramtype">const <a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a> &amp;&#160;</td>
22471 <td class="paramname"><em>options</em> = <code><a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a>()</code>, </td>
22472 </tr>
22473 <tr>
22474 <td class="paramkey"></td>
22475 <td></td>
22476 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
22477 <td class="paramname"><em>messages</em> = <code><a class="el" href="structarmnn_1_1_empty_optional.html">EmptyOptional</a>()</code>&#160;</td>
22478 </tr>
22479 <tr>
22480 <td></td>
22481 <td>)</td>
22482 <td></td><td></td>
22483 </tr>
22484 </table>
22485</div><div class="memdoc">
22486<p>Create an optimized version of the network </p><dl class="params"><dt>Parameters</dt><dd>
22487 <table class="params">
22488 <tr><td class="paramname">network</td><td><a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> description of the network to be optimized. </td></tr>
22489 <tr><td class="paramname">backendPreferences</td><td>The choice of the backend ordered by user preferences. </td></tr>
22490 <tr><td class="paramname">deviceSpec</td><td><a class="el" href="classarmnn_1_1_device_spec.html">DeviceSpec</a> object as queried from the runtime. See <a class="el" href="classarmnn_1_1_i_runtime.html#a6f2ccbdacfac6eb983c519976a5ece54">IRuntime::GetDeviceSpec()</a> </td></tr>
22491 <tr><td class="paramname">messages</td><td>If there are failures or warnings a string describing same will be added to the vector </td></tr>
22492 <tr><td class="paramname">options</td><td><a class="el" href="structarmnn_1_1_optimizer_options.html">OptimizerOptions</a> object with optimizer configuration options </td></tr>
22493 </table>
22494 </dd>
22495</dl>
22496<dl class="section return"><dt>Returns</dt><dd>An IOptimizedNetworkPtr interface to the optimized network, throws an exception derived from <a class="el" href="classarmnn_1_1_exception.html" title="Base class for all ArmNN exceptions so that users can filter to just those. ">armnn::Exception</a> if process fails. </dd></dl>
22497
22498<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00807">807</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
22499
22500<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00345">ApplyBackendOptimizations()</a>, <a class="el" href="_deprecated_8hpp_source.html#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.html#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_backend_registry_8cpp_source.html#l00013">BackendRegistryInstance()</a>, <a class="el" href="_network_8cpp_source.html#l00326">CreateSupportedBackends()</a>, <a class="el" href="_network_8cpp_source.html#l00058">IOptimizedNetwork::Destroy()</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00063">BackendSettings::GetAvailablePreferredBackends()</a>, <a class="el" href="_backend_registry_8cpp_source.html#l00048">BackendRegistry::GetFactory()</a>, <a class="el" href="_network_8hpp_source.html#l00033">Network::GetGraph()</a>, <a class="el" href="_network_8hpp_source.html#l00272">OptimizedNetwork::GetGraph()</a>, <a class="el" href="_i_network_8hpp_source.html#l00576">OptimizerOptions::m_Debug</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="_i_network_8hpp_source.html#l00573">OptimizerOptions::m_ReduceFp32ToFp16</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00018">BackendSettings::m_SelectedBackends</a>, <a class="el" href="_backend_settings_8hpp_source.html#l00017">BackendSettings::m_SupportedBackends</a>, <a class="el" href="_optimizer_8hpp_source.html#l00043">MakeOptimizations()</a>, <a class="el" href="_optimizer_8cpp_source.html#l00016">Optimizer::Pass()</a>, <a class="el" href="_network_8cpp_source.html#l00074">ReportError()</a>, and <a class="el" href="_network_8cpp_source.html#l00741">SelectTensorHandleStrategy()</a>.</p>
22501
22502<p class="reference">Referenced by <a class="el" href="_end_to_end_test_8cpp_source.html#l00017">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="armnn_tf_lite_parser_2test_2_detection_post_process_8cpp_source.html#l00226">BOOST_FIXTURE_TEST_CASE()</a>, <a class="el" href="_json_printer_test_impl_8cpp_source.html#l00120">GetSoftmaxProfilerJson()</a>, <a class="el" href="_inference_model_8hpp_source.html#l00371">InferenceModel&lt; IParser, TDataType &gt;::InferenceModel()</a>, <a class="el" href="_model_accuracy_tool-_armnn_8cpp_source.html#l00049">main()</a>, <a class="el" href="_quantized_lstm_end_to_end_test_impl_8cpp_source.html#l00179">QuantizedLstmEndToEnd()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00060">NetworkQuantizer::Refine()</a>, <a class="el" href="_parser_prototxt_fixture_8hpp_source.html#l00121">ParserPrototxtFixture&lt; armnnOnnxParser::IOnnxParser &gt;::Setup()</a>, <a class="el" href="_parser_flatbuffers_serialize_fixture_8hpp_source.html#l00048">ParserFlatbuffersSerializeFixture::Setup()</a>, <a class="el" href="_parser_flatbuffers_fixture_8hpp_source.html#l00061">ParserFlatbuffersFixture::Setup()</a>, <a class="el" href="_parser_prototxt_fixture_8hpp_source.html#l00158">ParserPrototxtFixture&lt; armnnOnnxParser::IOnnxParser &gt;::SetupOptimizedNetwork()</a>, and <a class="el" href="_profiling_test_utils_8cpp_source.html#l00355">VerifyPostOptimisationStructureTestImpl()</a>.</p>
22503<div class="fragment"><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;{</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">if</span> (backendPreferences.empty())</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Invoked Optimize with no backends specified&quot;</span>);</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;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keyword">const</span> Network&amp; network = *boost::polymorphic_downcast&lt;const Network*&gt;(&amp;inNetwork);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; std::unique_ptr&lt;Graph&gt; graph = std::make_unique&lt;Graph&gt;(network.GetGraph());</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">auto</span> optNet = <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">new</span> OptimizedNetwork(std::move(graph)), &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; OptimizedNetwork* optNetObjPtr = boost::polymorphic_downcast&lt;OptimizedNetwork*&gt;(optNet.get());</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; <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; Graph&amp; optGraph = optNetObjPtr-&gt;GetGraph();</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="comment">// Perform optimisation passes</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">using namespace </span>optimizations;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a64ddffb38fbe5b78ec92b753cd4bd0ba">SquashEqualPermuteSiblings</a>(),</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#a29f8d97b2d74f99c88298881cd1d825b">SquashEqualReshapeSiblings</a>(),</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#af47c417d1521c024d0a9885924da3797">OptimizeInversePermutes</a>(),</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#aafc70d5af99400ff5ea7991825658b2f">MovePermuteUp</a>(),</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#ae0b1382e3af141896a46531c50e8863f">PermuteAsReshape</a>(),</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#a8341ca3512ebafb19d60eba44d40d9e4">OptimizeConsecutiveReshapes</a>(),</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#add2180a15cdcf5a229de32bb956cb224">FoldPadIntoConvolution2d</a>(),</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#a820df8da5229f50ca7d4d11cb74def2c">PermuteAndBatchToSpaceAsDepthToSpace</a>()));</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="comment">// Infer the tensor infos for all output slots. Throws an exception on failure</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; optGraph.InferTensorInfos();</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="comment">// If Fp32 to Fp16 optimization is set convert Fp32 network to Fp16</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_ReduceFp32ToFp16)</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; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a86d19da62b6cfed3928f6fe7026f22fa">Fp32NetworkToFp16Converter</a>()));</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</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; <span class="comment">// Initialize backend settings</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; BackendSettings backendSettings(backendPreferences, deviceSpec);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (backendSettings.GetAvailablePreferredBackends().empty())</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; {</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</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="l00855"></a><span class="lineno"> 855</span>&#160; &lt;&lt; <span class="stringliteral">&quot; are supported. Current platform provides &quot;</span> &lt;&lt; backendSettings.m_SupportedBackends;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespacearmnn.html#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), messages);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</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="comment">// Create a map to temporarily hold initialized backend objects</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; TensorHandleFactoryRegistry tensorHandleFactoryRegistry;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends = <a class="code" href="namespacearmnn.html#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a>(tensorHandleFactoryRegistry, backendSettings);</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="comment">// Assign an available backend to each layer</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; Graph::Iterator firstLayer = optGraph.begin();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; Graph::Iterator lastLayer = optGraph.end();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; OptimizationResult assignBackendsResult = <a class="code" href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; backendSettings,</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; firstLayer,</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; lastLayer,</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; messages);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (assignBackendsResult.m_Error)</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="comment">// Failed to assign a backend to each layer</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</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;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a1a9d718b48612b5817a3c369f9fd71ee">OptimizeInverseConversionsFp16</a>(),</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.html#ae1509d340bc981b11101c3316ee8afd6">OptimizeInverseConversionsFp32</a>()));</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="comment">// Apply the backend-specific optimizations</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; OptimizationResult backendOptimizationResult = <a class="code" href="namespacearmnn.html#ae97734279fd10b4c754cc15bc8ed9dad">ApplyBackendOptimizations</a>(optNetObjPtr,</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; backendSettings,</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; backends,</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; messages);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (backendOptimizationResult.m_Error)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</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;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</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="l00893"></a><span class="lineno"> 893</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="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>.m_Debug)</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#aa76c76565125ad77092403176d74fd85">InsertDebugLayer</a>()));</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</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; <span class="comment">// Calculate the compatibility strategies for tensor handles</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; OptimizationResult strategyResult = <a class="code" href="namespacearmnn.html#a5d3468fb5880eb444cd25b55a86220ff">SelectTensorHandleStrategy</a>(optGraph,</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; backends,</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; tensorHandleFactoryRegistry,</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; messages);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">if</span> (strategyResult.m_Error)</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</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="l00911"></a><span class="lineno"> 911</span>&#160; optGraph.AddCompatibilityLayers(backends, tensorHandleFactoryRegistry);</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">// Convert constants</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.html#a06cac66872538895dd6b59cdf39173d2">ConvertConstantsHalfToFloat</a>()));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// Run backend specific optimizations (deprecated)</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; chosenBackend : backendSettings.m_SelectedBackends)</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keyword">auto</span> factoryFun = <a class="code" href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.html#afc0c63ca8db8957b58826f6d7bd231b2">GetFactory</a>(chosenBackend);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keyword">auto</span> backendPtr = factoryFun();</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; BOOST_ASSERT(backendPtr.get() != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="_deprecated_8hpp.html#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keyword">auto</span> backendSpecificOptimizations = backendPtr-&gt;GetOptimizations();</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="_deprecated_8hpp.html#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span> (!backendSpecificOptimizations.empty())</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; Optimizer::Pass(optNetObjPtr-&gt;GetGraph(), backendSpecificOptimizations);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</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">return</span> optNet;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;}</div><div class="ttc" id="namespacearmnn_1_1optimizations_html_a29f8d97b2d74f99c88298881cd1d825b"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00067">SquashEqualSiblings.hpp:67</a></div></div>
22504<div class="ttc" id="classarmnn_1_1_backend_registry_html_afc0c63ca8db8957b58826f6d7bd231b2"><div class="ttname"><a href="classarmnn_1_1_backend_registry.html#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.html#l00048">BackendRegistry.cpp:48</a></div></div>
22505<div class="ttc" id="namespacearmnn_html_a1ec6b4c20ed294a96cf94c33c24caaf5"><div class="ttname"><a href="namespacearmnn.html#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.html#l00326">Network.cpp:326</a></div></div>
22506<div class="ttc" id="namespacearmnn_1_1optimizations_html_a226cef3d775179e25ee35d231f4e8fae"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00101">ConvertConstants.hpp:101</a></div></div>
22507<div class="ttc" id="namespacearmnn_1_1optimizations_html_a820df8da5229f50ca7d4d11cb74def2c"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#a820df8da5229f50ca7d4d11cb74def2c">armnn::optimizations::PermuteAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl &gt; PermuteAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.html#l00024">PermuteAndBatchToSpaceAsDepthToSpace.hpp:24</a></div></div>
22508<div class="ttc" id="namespacearmnn_1_1optimizations_html_ae1509d340bc981b11101c3316ee8afd6"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00044">OptimizeInverseConversions.hpp:44</a></div></div>
22509<div class="ttc" id="namespacearmnn_1_1optimizations_html_a8341ca3512ebafb19d60eba44d40d9e4"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00063">OptimizeConsecutiveReshapes.hpp:63</a></div></div>
22510<div class="ttc" id="namespacearmnn_1_1optimizations_html_a86d19da62b6cfed3928f6fe7026f22fa"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00078">ConvertFp32NetworkToFp16.hpp:78</a></div></div>
22511<div class="ttc" id="namespacearmnn_1_1optimizations_html_add2180a15cdcf5a229de32bb956cb224"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00088">FoldPadIntoConvolution2d.hpp:88</a></div></div>
22512<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
22513<div class="ttc" id="namespacearmnn_html_a5d3468fb5880eb444cd25b55a86220ff"><div class="ttname"><a href="namespacearmnn.html#a5d3468fb5880eb444cd25b55a86220ff">armnn::SelectTensorHandleStrategy</a></div><div class="ttdeci">OptimizationResult SelectTensorHandleStrategy(Graph &amp;optGraph, BackendsMap &amp;backends, TensorHandleFactoryRegistry &amp;registry, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00741">Network.cpp:741</a></div></div>
22514<div class="ttc" id="namespacearmnn_1_1optimizations_html_aafc70d5af99400ff5ea7991825658b2f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00080">MovePermuteUp.hpp:80</a></div></div>
22515<div class="ttc" id="namespacearmnn_1_1optimizations_html_a06cac66872538895dd6b59cdf39173d2"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00100">ConvertConstants.hpp:100</a></div></div>
22516<div class="ttc" id="_deprecated_8hpp_html_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00033">Deprecated.hpp:33</a></div></div>
22517<div class="ttc" id="namespacearmnn_html_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.html#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.html#l00013">BackendRegistry.cpp:13</a></div></div>
22518<div class="ttc" id="namespacearmnn_html_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.html#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.html#l00292">Network.hpp:292</a></div></div>
22519<div class="ttc" id="namespacearmnn_1_1optimizations_html_a64ddffb38fbe5b78ec92b753cd4bd0ba"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00066">SquashEqualSiblings.hpp:66</a></div></div>
22520<div class="ttc" id="namespacearmnn_1_1optimizations_html_a1a9d718b48612b5817a3c369f9fd71ee"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00042">OptimizeInverseConversions.hpp:42</a></div></div>
22521<div class="ttc" id="namespacearmnn_html_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.html#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.html#l00074">Network.cpp:74</a></div></div>
22522<div class="ttc" id="namespacearmnn_html_aa7427025a851113a492de0b68b23d22a"><div class="ttname"><a href="namespacearmnn.html#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.html#l00043">Optimizer.hpp:43</a></div></div>
22523<div class="ttc" id="namespacearmnn_html_ae97734279fd10b4c754cc15bc8ed9dad"><div class="ttname"><a href="namespacearmnn.html#ae97734279fd10b4c754cc15bc8ed9dad">armnn::ApplyBackendOptimizations</a></div><div class="ttdeci">OptimizationResult ApplyBackendOptimizations(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, BackendsMap &amp;backends, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00345">Network.cpp:345</a></div></div>
22524<div class="ttc" id="namespacearmnn_html_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.html#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00312">Network.cpp:312</a></div></div>
22525<div class="ttc" id="namespacearmnn_html_a674efcf6cbdb9e831d653ff0e821fb38"><div class="ttname"><a href="namespacearmnn.html#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.html#l00544">INetwork.hpp:544</a></div></div>
22526<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
22527<div class="ttc" id="namespacearmnn_1_1optimizations_html_aa76c76565125ad77092403176d74fd85"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00034">AddDebug.hpp:34</a></div></div>
22528<div class="ttc" id="namespacearmnn_1_1optimizations_html_af47c417d1521c024d0a9885924da3797"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#af47c417d1521c024d0a9885924da3797">armnn::optimizations::OptimizeInversePermutes</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, PermuteLayer, OptimizeInversePermutesImpl &gt; OptimizeInversePermutes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.html#l00040">OptimizeInversePermutes.hpp:40</a></div></div>
22529<div class="ttc" id="namespacearmnn_1_1optimizations_html_ae0b1382e3af141896a46531c50e8863f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.html#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.html#l00067">PermuteAsReshape.hpp:67</a></div></div>
22530<div class="ttc" id="_deprecated_8hpp_html_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.html#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.html#l00034">Deprecated.hpp:34</a></div></div>
22531</div><!-- fragment -->
22532</div>
22533</div>
22534<a id="a28e115f5d28500324b53fae9e6c00b77"></a>
22535<h2 class="memtitle"><span class="permalink"><a href="#a28e115f5d28500324b53fae9e6c00b77">&#9670;&nbsp;</a></span>Pad()</h2>
22536
22537<div class="memitem">
22538<div class="memproto">
22539 <table class="memname">
22540 <tr>
22541 <td class="memname">void Pad </td>
22542 <td>(</td>
22543 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22544 <td class="paramname"><em>inputInfo</em>, </td>
22545 </tr>
22546 <tr>
22547 <td class="paramkey"></td>
22548 <td></td>
22549 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22550 <td class="paramname"><em>outputInfo</em>, </td>
22551 </tr>
22552 <tr>
22553 <td class="paramkey"></td>
22554 <td></td>
22555 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
22556 <td class="paramname"><em>m_padList</em>, </td>
22557 </tr>
22558 <tr>
22559 <td class="paramkey"></td>
22560 <td></td>
22561 <td class="paramtype">const T *&#160;</td>
22562 <td class="paramname"><em>inputData</em>, </td>
22563 </tr>
22564 <tr>
22565 <td class="paramkey"></td>
22566 <td></td>
22567 <td class="paramtype">T *&#160;</td>
22568 <td class="paramname"><em>outData</em>, </td>
22569 </tr>
22570 <tr>
22571 <td class="paramkey"></td>
22572 <td></td>
22573 <td class="paramtype">const float&#160;</td>
22574 <td class="paramname"><em>padValue</em>&#160;</td>
22575 </tr>
22576 <tr>
22577 <td></td>
22578 <td>)</td>
22579 <td></td><td></td>
22580 </tr>
22581 </table>
22582</div><div class="memdoc">
22583
22584<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">22</a> of file <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html">Pad.cpp</a>.</p>
22585
22586<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.html#a09fc687543b371ddab280203dc989bd9">Pad&lt; float &gt;()</a>, <a class="el" href="namespacearmnn.html#a1b165f49b29968defb57e2d9b8628b9f">Pad&lt; Half &gt;()</a>, <a class="el" href="namespacearmnn.html#a68b05cecb5ebbbc3b8d1fd94a66df4af">Pad&lt; int16_t &gt;()</a>, and <a class="el" href="namespacearmnn.html#a7e27cbebab8cde65c84d7a00efa025cd">Pad&lt; uint8_t &gt;()</a>.</p>
22587
22588<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01768">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_ref_pad_workload_8cpp_source.html#l00021">RefPadWorkload&lt; DataType &gt;::Execute()</a>.</p>
22589<div class="fragment"><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="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputElements = outputInfo.GetNumElements();</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; TensorShape outputShape = outputInfo.GetShape();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; TensorShape inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numInputDimensions = inputShape.GetNumDimensions();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"> #ifndef NDEBUG</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputDimensions = outputShape.GetNumDimensions();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; assert(numInputDimensions == numOutputDimensions);</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"> 41</span>&#160;<span class="preprocessor"> #endif</span></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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 0;</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; T convertedPadValue = <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(padValue);</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutputElements; ++i)</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"> 56</span>&#160; outData[i] = convertedPadValue;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</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">switch</span>(numInputDimensions) {</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; <span class="keywordflow">case</span> 1:</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"> 63</span>&#160; inputWidth = inputShape[0];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; outData[w+std::get&lt;0&gt;(m_padList[0])] = inputData[w];</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"> 70</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> 2 :</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; inputHeight = inputShape[0];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; inputWidth = inputShape[1];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; outputHeight = outputShape[0];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; outputWidth = outputShape[1];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; outData[(h+std::get&lt;0&gt;(m_padList[0]))*outputWidth</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; + (w+std::get&lt;0&gt;(m_padList[1]))] = inputData[h * inputWidth + w];</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"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">case</span> 3 :</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; inputChannels = inputShape[0];</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; inputHeight = inputShape[1];</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; inputWidth = inputShape[2];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; outputChannels = outputShape[0];</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; outputHeight = outputShape[1];</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; outputWidth = outputShape[2];</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; outData[(c+std::get&lt;0&gt;(m_padList[0]))*outputHeight*outputWidth</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; + (h+std::get&lt;0&gt;(m_padList[1]))*outputWidth</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; + (w+std::get&lt;0&gt;(m_padList[2]))] = inputData[c * inputHeight * inputWidth</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; + h * inputWidth</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; + w];</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; }</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; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">case</span> 4 :</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; inputBatches = inputShape[0];</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; inputChannels = inputShape[1];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; inputHeight = inputShape[2];</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; inputWidth = inputShape[3];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; outputChannels = outputShape[1];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; outputHeight = outputShape[2];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; outputWidth = outputShape[3];</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b = 0; b &lt; inputBatches; b++)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</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; outData[(b+std::get&lt;0&gt;(m_padList[0])) * outputChannels * outputHeight * outputWidth</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; + (c+std::get&lt;0&gt;(m_padList[1])) * outputHeight * outputWidth</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; + (h+std::get&lt;0&gt;(m_padList[2])) * outputWidth</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; + (w+std::get&lt;0&gt;(m_padList[3]))] = inputData[b * inputChannels * inputHeight</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; * inputWidth</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; + c * inputHeight * inputWidth</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; + h * inputWidth</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; + w];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</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"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; default :</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; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div></div><!-- fragment -->
22590</div>
22591</div>
22592<a id="a09fc687543b371ddab280203dc989bd9"></a>
22593<h2 class="memtitle"><span class="permalink"><a href="#a09fc687543b371ddab280203dc989bd9">&#9670;&nbsp;</a></span>Pad< float >()</h2>
22594
22595<div class="memitem">
22596<div class="memproto">
22597 <table class="memname">
22598 <tr>
22599 <td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; float &gt; </td>
22600 <td>(</td>
22601 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22602 <td class="paramname"><em>inputInfo</em>, </td>
22603 </tr>
22604 <tr>
22605 <td class="paramkey"></td>
22606 <td></td>
22607 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22608 <td class="paramname"><em>outputInfo</em>, </td>
22609 </tr>
22610 <tr>
22611 <td class="paramkey"></td>
22612 <td></td>
22613 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
22614 <td class="paramname"><em>m_PadList</em>, </td>
22615 </tr>
22616 <tr>
22617 <td class="paramkey"></td>
22618 <td></td>
22619 <td class="paramtype">const float *&#160;</td>
22620 <td class="paramname"><em>inputData</em>, </td>
22621 </tr>
22622 <tr>
22623 <td class="paramkey"></td>
22624 <td></td>
22625 <td class="paramtype">float *&#160;</td>
22626 <td class="paramname"><em>outData</em>, </td>
22627 </tr>
22628 <tr>
22629 <td class="paramkey"></td>
22630 <td></td>
22631 <td class="paramtype">const float&#160;</td>
22632 <td class="paramname"><em>padValue</em>&#160;</td>
22633 </tr>
22634 <tr>
22635 <td></td>
22636 <td>)</td>
22637 <td></td><td></td>
22638 </tr>
22639 </table>
22640</div><div class="memdoc">
22641
22642<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
22643
22644</div>
22645</div>
22646<a id="a1b165f49b29968defb57e2d9b8628b9f"></a>
22647<h2 class="memtitle"><span class="permalink"><a href="#a1b165f49b29968defb57e2d9b8628b9f">&#9670;&nbsp;</a></span>Pad< Half >()</h2>
22648
22649<div class="memitem">
22650<div class="memproto">
22651 <table class="memname">
22652 <tr>
22653 <td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
22654 <td>(</td>
22655 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22656 <td class="paramname"><em>inputInfo</em>, </td>
22657 </tr>
22658 <tr>
22659 <td class="paramkey"></td>
22660 <td></td>
22661 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22662 <td class="paramname"><em>outputInfo</em>, </td>
22663 </tr>
22664 <tr>
22665 <td class="paramkey"></td>
22666 <td></td>
22667 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
22668 <td class="paramname"><em>m_PadList</em>, </td>
22669 </tr>
22670 <tr>
22671 <td class="paramkey"></td>
22672 <td></td>
22673 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
22674 <td class="paramname"><em>inputData</em>, </td>
22675 </tr>
22676 <tr>
22677 <td class="paramkey"></td>
22678 <td></td>
22679 <td class="paramtype"><a class="el" href="namespacearmnn.html#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
22680 <td class="paramname"><em>outData</em>, </td>
22681 </tr>
22682 <tr>
22683 <td class="paramkey"></td>
22684 <td></td>
22685 <td class="paramtype">const float&#160;</td>
22686 <td class="paramname"><em>padValue</em>&#160;</td>
22687 </tr>
22688 <tr>
22689 <td></td>
22690 <td>)</td>
22691 <td></td><td></td>
22692 </tr>
22693 </table>
22694</div><div class="memdoc">
22695
22696<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
22697
22698</div>
22699</div>
22700<a id="a68b05cecb5ebbbc3b8d1fd94a66df4af"></a>
22701<h2 class="memtitle"><span class="permalink"><a href="#a68b05cecb5ebbbc3b8d1fd94a66df4af">&#9670;&nbsp;</a></span>Pad< int16_t >()</h2>
22702
22703<div class="memitem">
22704<div class="memproto">
22705 <table class="memname">
22706 <tr>
22707 <td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; int16_t &gt; </td>
22708 <td>(</td>
22709 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22710 <td class="paramname"><em>inputInfo</em>, </td>
22711 </tr>
22712 <tr>
22713 <td class="paramkey"></td>
22714 <td></td>
22715 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22716 <td class="paramname"><em>outputInfo</em>, </td>
22717 </tr>
22718 <tr>
22719 <td class="paramkey"></td>
22720 <td></td>
22721 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
22722 <td class="paramname"><em>m_PadList</em>, </td>
22723 </tr>
22724 <tr>
22725 <td class="paramkey"></td>
22726 <td></td>
22727 <td class="paramtype">const int16_t *&#160;</td>
22728 <td class="paramname"><em>inputData</em>, </td>
22729 </tr>
22730 <tr>
22731 <td class="paramkey"></td>
22732 <td></td>
22733 <td class="paramtype">int16_t *&#160;</td>
22734 <td class="paramname"><em>outData</em>, </td>
22735 </tr>
22736 <tr>
22737 <td class="paramkey"></td>
22738 <td></td>
22739 <td class="paramtype">const float&#160;</td>
22740 <td class="paramname"><em>padValue</em>&#160;</td>
22741 </tr>
22742 <tr>
22743 <td></td>
22744 <td>)</td>
22745 <td></td><td></td>
22746 </tr>
22747 </table>
22748</div><div class="memdoc">
22749
22750<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
22751
22752</div>
22753</div>
22754<a id="a7e27cbebab8cde65c84d7a00efa025cd"></a>
22755<h2 class="memtitle"><span class="permalink"><a href="#a7e27cbebab8cde65c84d7a00efa025cd">&#9670;&nbsp;</a></span>Pad< uint8_t >()</h2>
22756
22757<div class="memitem">
22758<div class="memproto">
22759 <table class="memname">
22760 <tr>
22761 <td class="memname">template void <a class="el" href="namespacearmnn.html#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; uint8_t &gt; </td>
22762 <td>(</td>
22763 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22764 <td class="paramname"><em>inputInfo</em>, </td>
22765 </tr>
22766 <tr>
22767 <td class="paramkey"></td>
22768 <td></td>
22769 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
22770 <td class="paramname"><em>outputInfo</em>, </td>
22771 </tr>
22772 <tr>
22773 <td class="paramkey"></td>
22774 <td></td>
22775 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
22776 <td class="paramname"><em>m_PadList</em>, </td>
22777 </tr>
22778 <tr>
22779 <td class="paramkey"></td>
22780 <td></td>
22781 <td class="paramtype">const uint8_t *&#160;</td>
22782 <td class="paramname"><em>inputData</em>, </td>
22783 </tr>
22784 <tr>
22785 <td class="paramkey"></td>
22786 <td></td>
22787 <td class="paramtype">uint8_t *&#160;</td>
22788 <td class="paramname"><em>outData</em>, </td>
22789 </tr>
22790 <tr>
22791 <td class="paramkey"></td>
22792 <td></td>
22793 <td class="paramtype">const float&#160;</td>
22794 <td class="paramname"><em>padValue</em>&#160;</td>
22795 </tr>
22796 <tr>
22797 <td></td>
22798 <td>)</td>
22799 <td></td><td></td>
22800 </tr>
22801 </table>
22802</div><div class="memdoc">
22803
22804<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.html#l00022">Pad()</a>.</p>
22805
22806</div>
22807</div>
22808<a id="af464d406b22309a891ed0aa3008a7953"></a>
22809<h2 class="memtitle"><span class="permalink"><a href="#af464d406b22309a891ed0aa3008a7953">&#9670;&nbsp;</a></span>ParseBoolean()</h2>
22810
22811<div class="memitem">
22812<div class="memproto">
22813 <table class="memname">
22814 <tr>
22815 <td class="memname">bool armnn::ParseBoolean </td>
22816 <td>(</td>
22817 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;&#160;</td>
22818 <td class="paramname"><em>value</em>, </td>
22819 </tr>
22820 <tr>
22821 <td class="paramkey"></td>
22822 <td></td>
22823 <td class="paramtype">bool&#160;</td>
22824 <td class="paramname"><em>defaultValue</em>&#160;</td>
22825 </tr>
22826 <tr>
22827 <td></td>
22828 <td>)</td>
22829 <td></td><td></td>
22830 </tr>
22831 </table>
22832</div><div class="memdoc">
22833
22834<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00096">96</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
22835
22836<p class="reference">References <a class="el" href="_backend_options_8hpp_source.html#l00110">BackendOptions::Var::AsBool()</a>, and <a class="el" href="_backend_options_8hpp_source.html#l00104">BackendOptions::Var::IsBool()</a>.</p>
22837<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (value.IsBool())</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; <span class="keywordflow">return</span> value.AsBool();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div></div><!-- fragment -->
22838</div>
22839</div>
22840<a id="a65645fa03bf8cddfb9d8a9f83beeb6e8"></a>
22841<h2 class="memtitle"><span class="permalink"><a href="#a65645fa03bf8cddfb9d8a9f83beeb6e8">&#9670;&nbsp;</a></span>ParseComputeDevice()</h2>
22842
22843<div class="memitem">
22844<div class="memproto">
22845 <table class="memname">
22846 <tr>
22847 <td class="memname">constexpr <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> armnn::ParseComputeDevice </td>
22848 <td>(</td>
22849 <td class="paramtype">const char *&#160;</td>
22850 <td class="paramname"><em>str</em></td><td>)</td>
22851 <td></td>
22852 </tr>
22853 </table>
22854</div><div class="memdoc">
22855<p>Deprecated function that will be removed together with the Compute enum </p>
22856
22857<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00145">145</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
22858
22859<p class="reference">References <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a>, <a class="el" href="_types_utils_8hpp_source.html#l00133">StrEqual()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
22860
22861<p class="reference">Referenced by <a class="el" href="_inference_test_8hpp_source.html#l00019">operator&gt;&gt;()</a>.</p>
22862<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;CpuAcc&quot;</span>))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a>;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;CpuRef&quot;</span>))</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;GpuAcc&quot;</span>))</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="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a>;</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; <span class="keywordflow">else</span></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"> 161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a637fea04314a9870c1dc4355c1bed429"><div class="ttname"><a href="namespacearmnn.html#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a></div><div class="ttdeci">constexpr bool StrEqual(const char *strA, const char(&amp;strB)[N])</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00133">TypesUtils.hpp:133</a></div></div>
22863<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
22864<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
22865<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
22866<div class="ttc" id="namespacearmnn_html_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
22867</div><!-- fragment -->
22868</div>
22869</div>
22870<a id="a4e9a59f936f3d2050a17597d22825f53"></a>
22871<h2 class="memtitle"><span class="permalink"><a href="#a4e9a59f936f3d2050a17597d22825f53">&#9670;&nbsp;</a></span>ParseFile()</h2>
22872
22873<div class="memitem">
22874<div class="memproto">
22875 <table class="memname">
22876 <tr>
22877 <td class="memname">std::string armnn::ParseFile </td>
22878 <td>(</td>
22879 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;&#160;</td>
22880 <td class="paramname"><em>value</em>, </td>
22881 </tr>
22882 <tr>
22883 <td class="paramkey"></td>
22884 <td></td>
22885 <td class="paramtype">std::string&#160;</td>
22886 <td class="paramname"><em>defaultValue</em>&#160;</td>
22887 </tr>
22888 <tr>
22889 <td></td>
22890 <td>)</td>
22891 <td></td><td></td>
22892 </tr>
22893 </table>
22894</div><div class="memdoc">
22895
22896<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00106">106</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
22897
22898<p class="reference">References <a class="el" href="_backend_options_8hpp_source.html#l00113">BackendOptions::Var::AsString()</a>, and <a class="el" href="_backend_options_8hpp_source.html#l00107">BackendOptions::Var::IsString()</a>.</p>
22899
22900<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
22901<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (value.IsString())</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> value.AsString();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div></div><!-- fragment -->
22902</div>
22903</div>
22904<a id="af457790132251cde6545072d879c7684"></a>
22905<h2 class="memtitle"><span class="permalink"><a href="#af457790132251cde6545072d879c7684">&#9670;&nbsp;</a></span>ParseOptions()</h2>
22906
22907<div class="memitem">
22908<div class="memproto">
22909 <table class="memname">
22910 <tr>
22911 <td class="memname">void armnn::ParseOptions </td>
22912 <td>(</td>
22913 <td class="paramtype">const std::vector&lt; <a class="el" href="structarmnn_1_1_backend_options.html">BackendOptions</a> &gt; &amp;&#160;</td>
22914 <td class="paramname"><em>options</em>, </td>
22915 </tr>
22916 <tr>
22917 <td class="paramkey"></td>
22918 <td></td>
22919 <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.html">BackendId</a>&#160;</td>
22920 <td class="paramname"><em>backend</em>, </td>
22921 </tr>
22922 <tr>
22923 <td class="paramkey"></td>
22924 <td></td>
22925 <td class="paramtype">F&#160;</td>
22926 <td class="paramname"><em>f</em>&#160;</td>
22927 </tr>
22928 <tr>
22929 <td></td>
22930 <td>)</td>
22931 <td></td><td></td>
22932 </tr>
22933 </table>
22934</div><div class="memdoc">
22935
22936<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00116">116</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
22937
22938<p class="reference">References <a class="el" href="_backend_options_8hpp_source.html#l00219">BackendOptions::BackendOption::GetName()</a>, and <a class="el" href="_backend_options_8hpp_source.html#l00220">BackendOptions::BackendOption::GetValue()</a>.</p>
22939
22940<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
22941<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> optionsGroup : <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (optionsGroup.GetBackendId() == backend)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i &lt; optionsGroup.GetOptionCount(); i++)</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; <span class="keyword">const</span> BackendOptions::BackendOption option = optionsGroup.GetOption(i);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; f(option.GetName(), option.GetValue());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
22942</div><!-- fragment -->
22943</div>
22944</div>
22945<a id="a3ca05ac77af0a0444ff34c1319094f6d"></a>
22946<h2 class="memtitle"><span class="permalink"><a href="#a3ca05ac77af0a0444ff34c1319094f6d">&#9670;&nbsp;</a></span>ParseTuningLevel()</h2>
22947
22948<div class="memitem">
22949<div class="memproto">
22950 <table class="memname">
22951 <tr>
22952 <td class="memname"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> armnn::ParseTuningLevel </td>
22953 <td>(</td>
22954 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.html">BackendOptions::Var</a> &amp;&#160;</td>
22955 <td class="paramname"><em>value</em>, </td>
22956 </tr>
22957 <tr>
22958 <td class="paramkey"></td>
22959 <td></td>
22960 <td class="paramtype"><a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
22961 <td class="paramname"><em>defaultValue</em>&#160;</td>
22962 </tr>
22963 <tr>
22964 <td></td>
22965 <td>)</td>
22966 <td></td><td></td>
22967 </tr>
22968 </table>
22969</div><div class="memdoc">
22970
22971<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.html#l00078">78</a> of file <a class="el" href="_cl_backend_context_8cpp_source.html">ClBackendContext.cpp</a>.</p>
22972
22973<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>, <a class="el" href="_backend_options_8hpp_source.html#l00105">BackendOptions::Var::IsInt()</a>, <a class="el" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
22974
22975<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.html#l00153">ClBackendContext::ClBackendContext()</a>.</p>
22976<div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (value.IsInt())</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="keywordtype">int</span> v = value.IsInt();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (v &gt; static_cast&lt;int&gt;(TuningLevel::Exhaustive) ||</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; v &lt; static_cast&lt;int&gt;(TuningLevel::None))</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"> 86</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; <span class="stringliteral">&quot;Invalid GpuAcc tuning level (&quot;</span>&lt;&lt; v &lt;&lt; <span class="stringliteral">&quot;) selected. &quot;</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="stringliteral">&quot;Using default(&quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(defaultValue) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; } <span class="keywordflow">else</span></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; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a><span class="keyword">&gt;</span>(v);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</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; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
22977<div class="ttc" id="namespacearmnn_html_a707090747256af276c389e0cf1cb0a9a"><div class="ttname"><a href="namespacearmnn.html#a707090747256af276c389e0cf1cb0a9a">armnn::TuningLevel</a></div><div class="ttdeci">TuningLevel</div><div class="ttdef"><b>Definition:</b> <a href="_cl_backend_context_8cpp_source.html#l00069">ClBackendContext.cpp:69</a></div></div>
22978</div><!-- fragment -->
22979</div>
22980</div>
22981<a id="a2a9ac8ebb69307ad4ec894ffa0523dbf"></a>
22982<h2 class="memtitle"><span class="permalink"><a href="#a2a9ac8ebb69307ad4ec894ffa0523dbf">&#9670;&nbsp;</a></span>PermuteTensor()</h2>
22983
22984<div class="memitem">
22985<div class="memproto">
22986 <table class="memname">
22987 <tr>
22988 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> PermuteTensor </td>
22989 <td>(</td>
22990 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.html">ConstCpuTensorHandle</a> *&#160;</td>
22991 <td class="paramname"><em>tensor</em>, </td>
22992 </tr>
22993 <tr>
22994 <td class="paramkey"></td>
22995 <td></td>
22996 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">PermutationVector</a> &amp;&#160;</td>
22997 <td class="paramname"><em>permutationVector</em>, </td>
22998 </tr>
22999 <tr>
23000 <td class="paramkey"></td>
23001 <td></td>
23002 <td class="paramtype">void *&#160;</td>
23003 <td class="paramname"><em>permuteBuffer</em>&#160;</td>
23004 </tr>
23005 <tr>
23006 <td></td>
23007 <td>)</td>
23008 <td></td><td></td>
23009 </tr>
23010 </table>
23011</div><div class="memdoc">
23012
23013<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00013">13</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
23014
23015<p class="reference">References <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00031">ConstCpuTensorHandle::GetConstTensor()</a>, <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00113">GetDataTypeSize()</a>, <a class="el" href="_tensor_8cpp_source.html#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_types_8hpp_source.html#l00199">PermutationVector::GetSize()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.html#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, and <a class="el" href="_permute_8cpp_source.html#l00098">armnnUtils::Permuted()</a>.</p>
23016
23017<p class="reference">Referenced by <a class="el" href="_workload_utils_8cpp_source.html#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, and <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>.</p>
23018<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; BOOST_ASSERT_MSG(tensor, <span class="stringliteral">&quot;Invalid input tensor&quot;</span>);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; BOOST_ASSERT_MSG(permuteBuffer, <span class="stringliteral">&quot;Invalid permute buffer&quot;</span>);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; TensorInfo tensorInfo = tensor-&gt;GetTensorInfo();</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">if</span> (permutationVector.GetSize() &gt; 0)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; tensorInfo = <a class="code" href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(tensorInfo, permutationVector);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(tensorInfo.GetShape(), permutationVector,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; tensor-&gt;GetConstTensor&lt;<span class="keywordtype">void</span>&gt;(), permuteBuffer,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a>(tensorInfo.GetDataType()));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; ::memcpy(permuteBuffer, tensor-&gt;GetConstTensor&lt;<span class="keywordtype">void</span>&gt;(), tensorInfo.GetNumBytes());</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> ConstTensor(tensorInfo, permuteBuffer);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00121">Permute.cpp:121</a></div></div>
23019<div class="ttc" id="namespacearmnn_utils_html_abeaf4f6785039866fd075f4569ba8e84"><div class="ttname"><a href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a></div><div class="ttdeci">armnn::TensorShape Permuted(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.html#l00098">Permute.cpp:98</a></div></div>
23020<div class="ttc" id="namespacearmnn_html_aa02b9e06fb20fa3c13da0427e6ee5ab2"><div class="ttname"><a href="namespacearmnn.html#aa02b9e06fb20fa3c13da0427e6ee5ab2">armnn::GetDataTypeSize</a></div><div class="ttdeci">constexpr unsigned int GetDataTypeSize(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.html#l00113">TypesUtils.hpp:113</a></div></div>
23021</div><!-- fragment -->
23022</div>
23023</div>
23024<a id="ae2e93e304cf516841c521e3eaee025cd"></a>
23025<h2 class="memtitle"><span class="permalink"><a href="#ae2e93e304cf516841c521e3eaee025cd">&#9670;&nbsp;</a></span>Pooling2d()</h2>
23026
23027<div class="memitem">
23028<div class="memproto">
23029 <table class="memname">
23030 <tr>
23031 <td class="memname">void Pooling2d </td>
23032 <td>(</td>
23033 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
23034 <td class="paramname"><em>rInputDecoder</em>, </td>
23035 </tr>
23036 <tr>
23037 <td class="paramkey"></td>
23038 <td></td>
23039 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
23040 <td class="paramname"><em>rOutputEncoder</em>, </td>
23041 </tr>
23042 <tr>
23043 <td class="paramkey"></td>
23044 <td></td>
23045 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
23046 <td class="paramname"><em>inputInfo</em>, </td>
23047 </tr>
23048 <tr>
23049 <td class="paramkey"></td>
23050 <td></td>
23051 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
23052 <td class="paramname"><em>outputInfo</em>, </td>
23053 </tr>
23054 <tr>
23055 <td class="paramkey"></td>
23056 <td></td>
23057 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.html">Pooling2dDescriptor</a> &amp;&#160;</td>
23058 <td class="paramname"><em>params</em>&#160;</td>
23059 </tr>
23060 <tr>
23061 <td></td>
23062 <td>)</td>
23063 <td></td><td></td>
23064 </tr>
23065 </table>
23066</div><div class="memdoc">
23067
23068<p>Computes the Pooling2d operation. </p>
23069
23070<p class="definition">Definition at line <a class="el" href="_pooling2d_8cpp_source.html#l00143">143</a> of file <a class="el" href="_pooling2d_8cpp_source.html">Pooling2d.cpp</a>.</p>
23071
23072<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00369">Pooling2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00355">Pooling2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.html#l00367">Pooling2dDescriptor::m_PaddingMethod</a>, <a class="el" href="_descriptors_8hpp_source.html#l00349">Pooling2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l00351">Pooling2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00353">Pooling2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l00359">Pooling2dDescriptor::m_PoolHeight</a>, <a class="el" href="_descriptors_8hpp_source.html#l00347">Pooling2dDescriptor::m_PoolType</a>, <a class="el" href="_descriptors_8hpp_source.html#l00357">Pooling2dDescriptor::m_PoolWidth</a>, <a class="el" href="_descriptors_8hpp_source.html#l00361">Pooling2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l00363">Pooling2dDescriptor::m_StrideY</a>, <a class="el" href="_pooling2d_8cpp_source.html#l00143">Pooling2d()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
23073
23074<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01910">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_pooling2d_8cpp_source.html#l00143">Pooling2d()</a>, and <a class="el" href="_pooling2d_layer_8cpp_source.html#l00022">Pooling2dLayer::Pooling2dLayer()</a>.</p>
23075<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">auto</span> channelsIndex = dataLayout.GetChannelsIndex();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">auto</span> heightIndex = dataLayout.GetHeightIndex();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">auto</span> widthIndex = dataLayout.GetWidthIndex();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batchSize = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0]);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> channels = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[channelsIndex]);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> heightOutput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[heightIndex]);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> widthOutput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[widthIndex]);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> heightInput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[heightIndex]);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> widthInput = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[widthIndex]);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padLeft = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padRight = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padTop = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a>);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padBottom = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> strideX = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">m_StrideX</a>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> strideY = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> poolHeight = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a5699e8606c37d18c03910b242cd1b010">m_PoolHeight</a>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> poolWidth = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a6d8fb685cc1ff224f25aa127fcf62c86">m_PoolWidth</a>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> defaultInitializer = DefaultInitializer(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</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; Accumulator accumulate = GetAccumulator(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Executor execute = GetExecutor(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</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; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Check supported padding methods outside the loop to simplify</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// the inner loop.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> != PaddingMethod::Exclude &amp;&amp;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> != PaddingMethod::IgnoreValue)</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; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Unsupported padding type&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> n = 0; n &lt; batchSize; n++)</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; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> yOutput = 0; yOutput &lt; heightOutput; yOutput++)</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"> 191</span>&#160; <span class="comment">// Calculate values independent of the x axis</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">int</span> hstart = (yOutput * strideY) - padTop;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">int</span> hend = hstart + poolHeight;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Clamp the pooling region inside the valid input area (which includes the padding).</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// This is necessary because the final pooling in a row may overlap beyond the padding.</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; hend = std::min(hend, heightInput + padBottom);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">int</span> height = hend - hstart;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> hclamped = ClampRange(hstart, hend, heightInput);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> xOutput = 0; xOutput &lt; widthOutput; xOutput++)</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="keywordtype">int</span> wstart = (xOutput * strideX) - padLeft;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">int</span> wend = wstart + poolWidth;</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"> 206</span>&#160; <span class="comment">// Clamp the pooling region inside the valid input area (which includes the padding).</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// This is necessary because the final pooling in a row may overlap beyond the padding.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; wend = std::min(wend, widthInput + padRight);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">float</span> result = defaultInitializer;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordtype">float</span> poolAreaSize = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(height * (wend - wstart));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Special case: when the pooling kernel is over a padding region and the padding</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// size is larger or equal to the kernel and the kernel only covers</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// padding and no real values, then we initialize the result as zero</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// by convention. This is because we need to choose a value here and</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// all values we have are padding, which we ignore.</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> (OnPaddingOnly(hstart, hend, heightInput) ||</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; OnPaddingOnly(wstart, wend, widthInput))</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; result = 0.0f;</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = dataLayout.GetIndex(outputShape,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yOutput),</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xOutput));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; rOutputEncoder[outputIndex];</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(result);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">continue</span>;</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;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">bool</span> clamped = hclamped |= ClampRange(wstart, wend, widthInput);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (clamped &amp;&amp; params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> == PaddingMethod::Exclude)</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="comment">// When we exclude the padding, it means we calculate with a smaller</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// kernel size, so I changed the divisor here.</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; poolAreaSize = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;((hend - hstart) * (wend - wstart));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> yInput = hstart; yInput &lt; hend; yInput++)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> xInput = wstart; xInput &lt; wend; xInput++)</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"> 246</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex = dataLayout.GetIndex(inputShape,</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yInput),</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xInput));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; rInputDecoder[inputIndex];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordtype">float</span> inval = rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; accumulate(result, inval);</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"> 257</span>&#160; }</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; execute(result, poolAreaSize);</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = dataLayout.GetIndex(outputShape,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yOutput),</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xOutput));</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"> 267</span>&#160; rOutputEncoder[outputIndex];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(result);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</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"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a5699e8606c37d18c03910b242cd1b010"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a5699e8606c37d18c03910b242cd1b010">armnn::Pooling2dDescriptor::m_PoolHeight</a></div><div class="ttdeci">uint32_t m_PoolHeight</div><div class="ttdoc">Pooling height value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00359">Descriptors.hpp:359</a></div></div>
23076<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a56b51f56cef50cdfa554258eecdab046">armnn::Pooling2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00353">Descriptors.hpp:353</a></div></div>
23077<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a002bc30e590d78cbb4f4d12171055ca7">armnn::Pooling2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00351">Descriptors.hpp:351</a></div></div>
23078<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
23079<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a6d8fb685cc1ff224f25aa127fcf62c86"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a6d8fb685cc1ff224f25aa127fcf62c86">armnn::Pooling2dDescriptor::m_PoolWidth</a></div><div class="ttdeci">uint32_t m_PoolWidth</div><div class="ttdoc">Pooling width value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00357">Descriptors.hpp:357</a></div></div>
23080<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Pooling2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00349">Descriptors.hpp:349</a></div></div>
23081<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a8c29d6ea9b4186d69aad5961c910939c"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a8c29d6ea9b4186d69aad5961c910939c">armnn::Pooling2dDescriptor::m_PaddingMethod</a></div><div class="ttdeci">PaddingMethod m_PaddingMethod</div><div class="ttdoc">The padding method to be used. (Exclude, IgnoreValue). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00367">Descriptors.hpp:367</a></div></div>
23082<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Pooling2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00363">Descriptors.hpp:363</a></div></div>
23083<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a0031997bf43bd2747656c31e4977793a"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a0031997bf43bd2747656c31e4977793a">armnn::Pooling2dDescriptor::m_PoolType</a></div><div class="ttdeci">PoolingAlgorithm m_PoolType</div><div class="ttdoc">The pooling algorithm to use (Max. Average, L2). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00347">Descriptors.hpp:347</a></div></div>
23084<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
23085<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
23086<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::Pooling2dDescriptor::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.html#l00369">Descriptors.hpp:369</a></div></div>
23087<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
23088<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#aa9e49717ebdb741e8c767741647fc618">armnn::Pooling2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00355">Descriptors.hpp:355</a></div></div>
23089<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
23090<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
23091<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_html_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.html#afe6a3377c4531315354def9023c8fdda">armnn::Pooling2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00361">Descriptors.hpp:361</a></div></div>
23092</div><!-- fragment -->
23093</div>
23094</div>
23095<a id="aa1ca65b3ba7f7c760eb3d5563c12864e"></a>
23096<h2 class="memtitle"><span class="permalink"><a href="#aa1ca65b3ba7f7c760eb3d5563c12864e">&#9670;&nbsp;</a></span>PreluImpl()</h2>
23097
23098<div class="memitem">
23099<div class="memproto">
23100 <table class="memname">
23101 <tr>
23102 <td class="memname">void PreluImpl </td>
23103 <td>(</td>
23104 <td class="paramtype">const <a class="el" href="structarmnn_1_1_prelu_queue_descriptor.html">PreluQueueDescriptor</a> &amp;&#160;</td>
23105 <td class="paramname"><em>data</em>, </td>
23106 </tr>
23107 <tr>
23108 <td class="paramkey"></td>
23109 <td></td>
23110 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
23111 <td class="paramname"><em>inputData</em>, </td>
23112 </tr>
23113 <tr>
23114 <td class="paramkey"></td>
23115 <td></td>
23116 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
23117 <td class="paramname"><em>alphaData</em>, </td>
23118 </tr>
23119 <tr>
23120 <td class="paramkey"></td>
23121 <td></td>
23122 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
23123 <td class="paramname"><em>outputData</em>&#160;</td>
23124 </tr>
23125 <tr>
23126 <td></td>
23127 <td>)</td>
23128 <td></td><td></td>
23129 </tr>
23130 </table>
23131</div><div class="memdoc">
23132
23133<p class="definition">Definition at line <a class="el" href="_prelu_impl_8cpp_source.html#l00013">13</a> of file <a class="el" href="_prelu_impl_8cpp_source.html">PreluImpl.cpp</a>.</p>
23134
23135<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, and <a class="el" href="_broadcast_8hpp_source.html#l00026">BroadcastLoop::Unroll()</a>.</p>
23136
23137<p class="reference">Referenced by <a class="el" href="_ref_prelu_workload_8cpp_source.html#l00021">RefPreluWorkload::Execute()</a>.</p>
23138<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> TensorInfo&amp; alphaInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[1]);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape = alphaInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape = outputInfo.GetShape();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="comment">// PReLU activation: f(x) = alpha * x for x &lt; 0, f(x) = x for x &gt;= 0</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">auto</span> prelu = [](<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> alpha)</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="keywordflow">return</span> x &lt; 0 ? alpha * x : x;</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;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; BroadcastLoop(inputShape, alphaShape, outputShape).Unroll(prelu, 0, inputData, alphaData, outputData);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
23139</div><!-- fragment -->
23140</div>
23141</div>
23142<a id="abe34cf42d7c8515ecd15d11f4aeb399c"></a>
23143<h2 class="memtitle"><span class="permalink"><a href="#abe34cf42d7c8515ecd15d11f4aeb399c">&#9670;&nbsp;</a></span>PreserveTypeTestImpl()</h2>
23144
23145<div class="memitem">
23146<div class="memproto">
23147 <table class="memname">
23148 <tr>
23149 <td class="memname">void armnn::PreserveTypeTestImpl </td>
23150 <td>(</td>
23151 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;&#160;</td>
23152 <td class="paramname"><em>dataType</em></td><td>)</td>
23153 <td></td>
23154 </tr>
23155 </table>
23156</div><div class="memdoc">
23157
23158<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02817">2817</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
23159
23160<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
23161
23162<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l02847">BOOST_AUTO_TEST_CASE()</a>.</p>
23163<div class="fragment"><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;{</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160;</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160;</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160; <span class="keyword">const</span> TensorShape shape{1U, 2U, 3U};</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; <span class="keyword">const</span> TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, dataType);</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160; QuantizerOptions <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a> = dataType == DataType::Float32 ?</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160; QuantizerOptions(DataType::QAsymmU8, <span class="keyword">true</span>) : QuantizerOptions(dataType, <a class="code" href="_cl_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a>);</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>)-&gt;ExportNetwork();</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; TestPreserveType validatorQAsymmU8(options, dataType, shape, shape);</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; validatorQAsymmU8.CheckQuantizeDequantizeLayerVisited(</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; dataType == DataType::Float32 || dataType == DataType::Float16);</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
23164<div class="ttc" id="_cl_layer_tests_8cpp_html_a37f1c3ccc9fc906be85185350dd83d48"><div class="ttname"><a href="_cl_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></div><div class="ttdeci">DataLayout::NCHW DataLayout::NCHW DataLayout::NHWC DataLayout::NHWC true</div><div class="ttdef"><b>Definition:</b> <a href="_cl_layer_tests_8cpp_source.html#l00176">ClLayerTests.cpp:176</a></div></div>
23165<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
23166<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
23167<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
23168</div><!-- fragment -->
23169</div>
23170</div>
23171<a id="abbbe4a59b72fba606f21e7c24dcbd8c0"></a>
23172<h2 class="memtitle"><span class="permalink"><a href="#abbbe4a59b72fba606f21e7c24dcbd8c0">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[1/2]</span></h2>
23173
23174<div class="memitem">
23175<div class="memproto">
23176<table class="mlabels">
23177 <tr>
23178 <td class="mlabels-left">
23179 <table class="memname">
23180 <tr>
23181 <td class="memname">void armnn::Quantize </td>
23182 <td>(</td>
23183 <td class="paramtype">uint8_t *&#160;</td>
23184 <td class="paramname"><em>quant</em>, </td>
23185 </tr>
23186 <tr>
23187 <td class="paramkey"></td>
23188 <td></td>
23189 <td class="paramtype">const float *&#160;</td>
23190 <td class="paramname"><em>dequant</em>, </td>
23191 </tr>
23192 <tr>
23193 <td class="paramkey"></td>
23194 <td></td>
23195 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
23196 <td class="paramname"><em>info</em>&#160;</td>
23197 </tr>
23198 <tr>
23199 <td></td>
23200 <td>)</td>
23201 <td></td><td></td>
23202 </tr>
23203 </table>
23204 </td>
23205 <td class="mlabels-right">
23206<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23207 </tr>
23208</table>
23209</div><div class="memdoc">
23210
23211<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.html#l00095">95</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.html">RefWorkloadUtils.hpp</a>.</p>
23212
23213<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.html#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
23214<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; quant[i] = armnn::Quantize&lt;uint8_t&gt;(dequant[i], <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
23215</div><!-- fragment -->
23216</div>
23217</div>
23218<a id="ad773a034fb9983e15f3094b4c5c7c30c"></a>
23219<h2 class="memtitle"><span class="permalink"><a href="#ad773a034fb9983e15f3094b4c5c7c30c">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[2/2]</span></h2>
23220
23221<div class="memitem">
23222<div class="memproto">
23223 <table class="memname">
23224 <tr>
23225 <td class="memname">template int32_t Quantize&lt; int32_t &gt; </td>
23226 <td>(</td>
23227 <td class="paramtype">float&#160;</td>
23228 <td class="paramname"><em>value</em>, </td>
23229 </tr>
23230 <tr>
23231 <td class="paramkey"></td>
23232 <td></td>
23233 <td class="paramtype">float&#160;</td>
23234 <td class="paramname"><em>scale</em>, </td>
23235 </tr>
23236 <tr>
23237 <td class="paramkey"></td>
23238 <td></td>
23239 <td class="paramtype">int32_t&#160;</td>
23240 <td class="paramname"><em>offset</em>&#160;</td>
23241 </tr>
23242 <tr>
23243 <td></td>
23244 <td>)</td>
23245 <td></td><td></td>
23246 </tr>
23247 </table>
23248</div><div class="memdoc">
23249
23250<p>Explicit specialization of Quantize for int8_t. </p>
23251<p>Explicit specialization of Quantize for int32_t.</p>
23252<p>Explicit specialization of Quantize for int16_t.</p>
23253<p>Explicit specialization of Quantize for uint8_t.</p>
23254<p>Quantize a floating point data type into an 8-bit data type. </p><dl class="params"><dt>Parameters</dt><dd>
23255 <table class="params">
23256 <tr><td class="paramname">value</td><td>- The value to quantize. </td></tr>
23257 <tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
23258 <tr><td class="paramname">offset</td><td>- The offset. </td></tr>
23259 </table>
23260 </dd>
23261</dl>
23262<dl class="section return"><dt>Returns</dt><dd>- The quantized value calculated as round(value/scale)+offset. </dd></dl>
23263
23264<p class="definition">Definition at line <a class="el" href="_types_utils_8cpp_source.html#l00031">31</a> of file <a class="el" href="_types_utils_8cpp_source.html">TypesUtils.cpp</a>.</p>
23265
23266<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l01950">BOOST_AUTO_TEST_CASE()</a>.</p>
23267<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; static_assert(IsQuantizedType&lt;QuantizedType&gt;(), <span class="stringliteral">&quot;Not an integer type.&quot;</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; constexpr QuantizedType max = std::numeric_limits&lt;QuantizedType&gt;::max();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; constexpr QuantizedType min = std::numeric_limits&lt;QuantizedType&gt;::lowest();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; BOOST_ASSERT(scale != 0.f);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; BOOST_ASSERT(!std::isnan(value));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">float</span> clampedValue = std::min(std::max(static_cast&lt;float&gt;(round(value/scale) + offset), static_cast&lt;float&gt;(min)),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; static_cast&lt;float&gt;(max));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">auto</span> quantizedBits = <span class="keyword">static_cast&lt;</span>QuantizedType<span class="keyword">&gt;</span>(clampedValue);</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; <span class="keywordflow">return</span> quantizedBits;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div></div><!-- fragment -->
23268</div>
23269</div>
23270<a id="a0e2bce68a1f7eff47ead4d9a2804eb91"></a>
23271<h2 class="memtitle"><span class="permalink"><a href="#a0e2bce68a1f7eff47ead4d9a2804eb91">&#9670;&nbsp;</a></span>QuantizeConstant()</h2>
23272
23273<div class="memitem">
23274<div class="memproto">
23275 <table class="memname">
23276 <tr>
23277 <td class="memname">void armnn::QuantizeConstant </td>
23278 <td>(</td>
23279 <td class="paramtype">const srcType *&#160;</td>
23280 <td class="paramname"><em>src</em>, </td>
23281 </tr>
23282 <tr>
23283 <td class="paramkey"></td>
23284 <td></td>
23285 <td class="paramtype">uint8_t *&#160;</td>
23286 <td class="paramname"><em>dst</em>, </td>
23287 </tr>
23288 <tr>
23289 <td class="paramkey"></td>
23290 <td></td>
23291 <td class="paramtype">size_t&#160;</td>
23292 <td class="paramname"><em>numElements</em>, </td>
23293 </tr>
23294 <tr>
23295 <td class="paramkey"></td>
23296 <td></td>
23297 <td class="paramtype">float &amp;&#160;</td>
23298 <td class="paramname"><em>scale</em>, </td>
23299 </tr>
23300 <tr>
23301 <td class="paramkey"></td>
23302 <td></td>
23303 <td class="paramtype">int &amp;&#160;</td>
23304 <td class="paramname"><em>offset</em>&#160;</td>
23305 </tr>
23306 <tr>
23307 <td></td>
23308 <td>)</td>
23309 <td></td><td></td>
23310 </tr>
23311 </table>
23312</div><div class="memdoc">
23313
23314<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00023">23</a> of file <a class="el" href="_network_quantizer_utils_8hpp_source.html">NetworkQuantizerUtils.hpp</a>.</p>
23315
23316<p class="reference">References <a class="el" href="_network_quantization_scheme_8hpp_source.html#l00031">QAsymmU8QuantizationScheme::ComputeScheme()</a>, and <a class="el" href="_network_quantizer_utils_8cpp_source.html#l00015">CreateQuantizedConst()</a>.</p>
23317
23318<p class="reference">Referenced by <a class="el" href="_network_quantizer_utils_8cpp_source.html#l00015">CreateQuantizedConst()</a>.</p>
23319<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(src);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; BOOST_ASSERT(dst);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">float</span> min = std::numeric_limits&lt;srcType&gt;::max();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">float</span> max = std::numeric_limits&lt;srcType&gt;::lowest();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numElements; ++i)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; min = std::min(min, src[i]);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; max = std::max(max, src[i]);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; QAsymmU8QuantizationScheme quantizationScheme;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qParams = quantizationScheme.ComputeScheme(min, max);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; scale = qParams.first;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; offset = qParams.second;</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"> 41</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numElements; ++i)</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; dst[i] = armnn::Quantize&lt;uint8_t&gt;(src[i], scale, offset);</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"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.html#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.html#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
23320</div><!-- fragment -->
23321</div>
23322</div>
23323<a id="ae86f1ca23eaa764da9e589cc8e39a969"></a>
23324<h2 class="memtitle"><span class="permalink"><a href="#ae86f1ca23eaa764da9e589cc8e39a969">&#9670;&nbsp;</a></span>ReducedOutputOffset()</h2>
23325
23326<div class="memitem">
23327<div class="memproto">
23328 <table class="memname">
23329 <tr>
23330 <td class="memname">unsigned int armnn::ReducedOutputOffset </td>
23331 <td>(</td>
23332 <td class="paramtype">const unsigned int&#160;</td>
23333 <td class="paramname"><em>numDims</em>, </td>
23334 </tr>
23335 <tr>
23336 <td class="paramkey"></td>
23337 <td></td>
23338 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
23339 <td class="paramname"><em>dims</em>, </td>
23340 </tr>
23341 <tr>
23342 <td class="paramkey"></td>
23343 <td></td>
23344 <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
23345 <td class="paramname"><em>index</em>, </td>
23346 </tr>
23347 <tr>
23348 <td class="paramkey"></td>
23349 <td></td>
23350 <td class="paramtype">const unsigned int&#160;</td>
23351 <td class="paramname"><em>numAxis</em>, </td>
23352 </tr>
23353 <tr>
23354 <td class="paramkey"></td>
23355 <td></td>
23356 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
23357 <td class="paramname"><em>axis</em>&#160;</td>
23358 </tr>
23359 <tr>
23360 <td></td>
23361 <td>)</td>
23362 <td></td><td></td>
23363 </tr>
23364 </table>
23365</div><div class="memdoc">
23366
23367<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00039">39</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html">Mean.cpp</a>.</p>
23368
23369<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.html#l00071">Mean()</a>.</p>
23370<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numDims; ++idx)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">bool</span> isAxis = <span class="keyword">false</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (!axis.empty())</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisIdx = 0; axisIdx &lt; numAxis; ++axisIdx)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (idx == axis[axisIdx])</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; isAxis = <span class="keyword">true</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</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; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (!isAxis)</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; offset = offset * dims[idx] + index[idx];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> offset;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div></div><!-- fragment -->
23371</div>
23372</div>
23373<a id="ae7d50846b2769f81521af24d063bc093"></a>
23374<h2 class="memtitle"><span class="permalink"><a href="#ae7d50846b2769f81521af24d063bc093">&#9670;&nbsp;</a></span>RefBackendId()</h2>
23375
23376<div class="memitem">
23377<div class="memproto">
23378 <table class="memname">
23379 <tr>
23380 <td class="memname">constexpr const char* armnn::RefBackendId </td>
23381 <td>(</td>
23382 <td class="paramname"></td><td>)</td>
23383 <td></td>
23384 </tr>
23385 </table>
23386</div><div class="memdoc">
23387
23388<p class="definition">Definition at line <a class="el" href="_ref_backend_id_8hpp_source.html#l00010">10</a> of file <a class="el" href="_ref_backend_id_8hpp_source.html">RefBackendId.hpp</a>.</p>
23389
23390<p class="reference">Referenced by <a class="el" href="_ref_backend_8cpp_source.html#l00024">RefBackend::GetIdStatic()</a>.</p>
23391<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuRef&quot;</span>; }</div></div><!-- fragment -->
23392</div>
23393</div>
23394<a id="a5baedac4819656984488bc1fe5fe1505"></a>
23395<h2 class="memtitle"><span class="permalink"><a href="#a5baedac4819656984488bc1fe5fe1505">&#9670;&nbsp;</a></span>RefTensorHandleFactoryId()</h2>
23396
23397<div class="memitem">
23398<div class="memproto">
23399 <table class="memname">
23400 <tr>
23401 <td class="memname">constexpr const char* armnn::RefTensorHandleFactoryId </td>
23402 <td>(</td>
23403 <td class="paramname"></td><td>)</td>
23404 <td></td>
23405 </tr>
23406 </table>
23407</div><div class="memdoc">
23408
23409<p class="definition">Definition at line <a class="el" href="_ref_tensor_handle_factory_8hpp_source.html#l00015">15</a> of file <a class="el" href="_ref_tensor_handle_factory_8hpp_source.html">RefTensorHandleFactory.hpp</a>.</p>
23410
23411<p class="reference">Referenced by <a class="el" href="_ref_tensor_handle_factory_8cpp_source.html#l00016">RefTensorHandleFactory::GetIdStatic()</a>.</p>
23412<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Ref/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
23413</div>
23414</div>
23415<a id="a52b301fd3adce20b51c4482cb52f1a38"></a>
23416<h2 class="memtitle"><span class="permalink"><a href="#a52b301fd3adce20b51c4482cb52f1a38">&#9670;&nbsp;</a></span>ReorderWeightChannelsForAcl()</h2>
23417
23418<div class="memitem">
23419<div class="memproto">
23420 <table class="memname">
23421 <tr>
23422 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> armnn::ReorderWeightChannelsForAcl </td>
23423 <td>(</td>
23424 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.html">ConstTensor</a> &amp;&#160;</td>
23425 <td class="paramname"><em>weightHandle</em>, </td>
23426 </tr>
23427 <tr>
23428 <td class="paramkey"></td>
23429 <td></td>
23430 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
23431 <td class="paramname"><em>dataLayout</em>, </td>
23432 </tr>
23433 <tr>
23434 <td class="paramkey"></td>
23435 <td></td>
23436 <td class="paramtype">void *&#160;</td>
23437 <td class="paramname"><em>permuteBuffer</em>&#160;</td>
23438 </tr>
23439 <tr>
23440 <td></td>
23441 <td>)</td>
23442 <td></td><td></td>
23443 </tr>
23444 </table>
23445</div><div class="memdoc">
23446
23447<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00062">62</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
23448
23449<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8cpp_source.html#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_tensor_8hpp_source.html#l00169">BaseTensor&lt; MemoryType &gt;::GetShape()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
23450<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* weight = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(permuteBuffer);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> TensorShape&amp; weightShape = weightHandle.GetShape();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> multiplier;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC: <span class="comment">//It actually is [ H, W, I, M ]</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; height = weightShape[0];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; width = weightShape[1];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; inputChannels = weightShape[2];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; multiplier = weightShape[3];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW: <span class="comment">//It actually is [ M, I, H, W ]</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; height = weightShape[2];</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; width = weightShape[3];</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; inputChannels = weightShape[1];</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; multiplier = weightShape[0];</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</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"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; std::vector&lt;DataType&gt; weightAclOrder(height*width*inputChannels*multiplier);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> destinationWeightsChannel;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalChannels = inputChannels * multiplier;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelSize = height * width;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannel = 0;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> originWeightsChannel = 0; originWeightsChannel &lt; totalChannels; originWeightsChannel++)</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"> 95</span>&#160; inputChannel = originWeightsChannel % inputChannels;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; destinationWeightsChannel = (originWeightsChannel - inputChannel) / inputChannels + multiplier * inputChannel;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; channelSize; i++)</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; weightAclOrder[i + destinationWeightsChannel * channelSize] =</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; weight[i + originWeightsChannel * channelSize];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ::memcpy(permuteBuffer, weightAclOrder.data(), weightHandle.GetInfo().GetNumBytes());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> ConstTensor(weightHandle.GetInfo(), permuteBuffer);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
23451</div><!-- fragment -->
23452</div>
23453</div>
23454<a id="a7658f93d899c8646515a29370e6aa994"></a>
23455<h2 class="memtitle"><span class="permalink"><a href="#a7658f93d899c8646515a29370e6aa994">&#9670;&nbsp;</a></span>ReportError()</h2>
23456
23457<div class="memitem">
23458<div class="memproto">
23459 <table class="memname">
23460 <tr>
23461 <td class="memname">void armnn::ReportError </td>
23462 <td>(</td>
23463 <td class="paramtype">const std::string &amp;&#160;</td>
23464 <td class="paramname"><em>errorMessage</em>, </td>
23465 </tr>
23466 <tr>
23467 <td class="paramkey"></td>
23468 <td></td>
23469 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
23470 <td class="paramname"><em>errorMessages</em>&#160;</td>
23471 </tr>
23472 <tr>
23473 <td></td>
23474 <td>)</td>
23475 <td></td><td></td>
23476 </tr>
23477 </table>
23478</div><div class="memdoc">
23479
23480<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00074">74</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
23481
23482<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
23483
23484<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>, <a class="el" href="_network_8cpp_source.html#l00098">CheckScaleSetOnQuantizedType()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
23485<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::stringstream fullErrorMessage;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; fullErrorMessage &lt;&lt; <span class="stringliteral">&quot;ERROR: &quot;</span> &lt;&lt; errorMessage;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; fullErrorMessage.str();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (errorMessages)</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; errorMessages.value().push_back(fullErrorMessage.str());</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="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
23486</div><!-- fragment -->
23487</div>
23488</div>
23489<a id="a38e626422579decc13e3ee37da1a84c9"></a>
23490<h2 class="memtitle"><span class="permalink"><a href="#a38e626422579decc13e3ee37da1a84c9">&#9670;&nbsp;</a></span>ReportWarning()</h2>
23491
23492<div class="memitem">
23493<div class="memproto">
23494 <table class="memname">
23495 <tr>
23496 <td class="memname">void armnn::ReportWarning </td>
23497 <td>(</td>
23498 <td class="paramtype">const std::string &amp;&#160;</td>
23499 <td class="paramname"><em>warningMessage</em>, </td>
23500 </tr>
23501 <tr>
23502 <td class="paramkey"></td>
23503 <td></td>
23504 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
23505 <td class="paramname"><em>warningMessages</em>&#160;</td>
23506 </tr>
23507 <tr>
23508 <td></td>
23509 <td>)</td>
23510 <td></td><td></td>
23511 </tr>
23512 </table>
23513</div><div class="memdoc">
23514
23515<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00086">86</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
23516
23517<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00163">ARMNN_LOG</a>, and <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
23518
23519<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00345">ApplyBackendOptimizations()</a>, and <a class="el" href="_network_8cpp_source.html#l00133">AssignBackends()</a>.</p>
23520<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; std::stringstream fullWarningMessage;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; fullWarningMessage &lt;&lt; <span class="stringliteral">&quot;WARNING: &quot;</span> &lt;&lt; warningMessage;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; fullWarningMessage.str();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (warningMessages)</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; warningMessages.value().push_back(fullWarningMessage.str());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="ttc" id="_logging_8hpp_html_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.html#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.html#l00163">Logging.hpp:163</a></div></div>
23521</div><!-- fragment -->
23522</div>
23523</div>
23524<a id="a5ee4a1cca55f69b31e625c786655ed1a"></a>
23525<h2 class="memtitle"><span class="permalink"><a href="#a5ee4a1cca55f69b31e625c786655ed1a">&#9670;&nbsp;</a></span>RequiresCopy()</h2>
23526
23527<div class="memitem">
23528<div class="memproto">
23529 <table class="memname">
23530 <tr>
23531 <td class="memname">bool armnn::RequiresCopy </td>
23532 <td>(</td>
23533 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
23534 <td class="paramname"><em>src</em>, </td>
23535 </tr>
23536 <tr>
23537 <td class="paramkey"></td>
23538 <td></td>
23539 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.html#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
23540 <td class="paramname"><em>dst</em>, </td>
23541 </tr>
23542 <tr>
23543 <td class="paramkey"></td>
23544 <td></td>
23545 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
23546 <td class="paramname"><em>registry</em>&#160;</td>
23547 </tr>
23548 <tr>
23549 <td></td>
23550 <td>)</td>
23551 <td></td><td></td>
23552 </tr>
23553 </table>
23554</div><div class="memdoc">
23555
23556<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00443">443</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
23557
23558<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00060">ITensorHandleFactory::GetExportFlags()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.html#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00061">ITensorHandleFactory::GetImportFlags()</a>.</p>
23559
23560<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.html#l00555">CalculateSlotOption()</a>.</p>
23561<div class="fragment"><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">if</span> (src != dst)</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; ITensorHandleFactory* srcFactory = registry.GetFactory(src);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(dst);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (srcFactory &amp;&amp; dstFactory &amp;&amp;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; (srcFactory-&gt;GetExportFlags() &amp; dstFactory-&gt;GetImportFlags()) != 0)</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> <span class="keyword">false</span>;</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;}</div></div><!-- fragment -->
23562</div>
23563</div>
23564<a id="a3170fdd696155a247ecd81d445c0e2e1"></a>
23565<h2 class="memtitle"><span class="permalink"><a href="#a3170fdd696155a247ecd81d445c0e2e1">&#9670;&nbsp;</a></span>ReshapeWeightsForAcl()</h2>
23566
23567<div class="memitem">
23568<div class="memproto">
23569 <table class="memname">
23570 <tr>
23571 <td class="memname">void ReshapeWeightsForAcl </td>
23572 <td>(</td>
23573 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
23574 <td class="paramname"><em>weightInfo</em>, </td>
23575 </tr>
23576 <tr>
23577 <td class="paramkey"></td>
23578 <td></td>
23579 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
23580 <td class="paramname"><em>dataLayout</em>&#160;</td>
23581 </tr>
23582 <tr>
23583 <td></td>
23584 <td>)</td>
23585 <td></td><td></td>
23586 </tr>
23587 </table>
23588</div><div class="memdoc">
23589
23590<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.html#l00036">36</a> of file <a class="el" href="_workload_utils_8cpp_source.html">WorkloadUtils.cpp</a>.</p>
23591
23592<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, and <a class="el" href="_tensor_8hpp_source.html#l00090">TensorInfo::SetShape()</a>.</p>
23593
23594<p class="reference">Referenced by <a class="el" href="_workload_utils_8cpp_source.html#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00109">ConvertWeightTensorInfoFromArmnnToAcl()</a>, and <a class="el" href="_workload_utils_8hpp_source.html#l00192">GatherTensorHandlePairs()</a>.</p>
23595<div class="fragment"><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="comment">// Reshape the weights in-place</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> TensorShape&amp; weightShape = weightInfo.GetShape();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// The data layout is NHWC, reshape from [ H, W, I, M ] to [ 1, H, W, I * M ]</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; weightInfo.SetShape({ 1,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; weightShape[0],</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; weightShape[1],</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; weightShape[2] * weightShape[3] });</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; weightInfo.SetShape({ 1,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; weightShape[0] * weightShape[1],</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; weightShape[2],</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; weightShape[3] });</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// The data layout is NCHW, reshape from [ M, I, H, W ] to [ 1, I * M, H, W, ]</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; weightInfo.SetShape({ 1, weightShape[0] * weightShape[1], weightShape[2], weightShape[3] });</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">break</span>;</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;}</div></div><!-- fragment -->
23596</div>
23597</div>
23598<a id="a25dc224be48103343302b5a6fd588fe7"></a>
23599<h2 class="memtitle"><span class="permalink"><a href="#a25dc224be48103343302b5a6fd588fe7">&#9670;&nbsp;</a></span>Resize()</h2>
23600
23601<div class="memitem">
23602<div class="memproto">
23603 <table class="memname">
23604 <tr>
23605 <td class="memname">void Resize </td>
23606 <td>(</td>
23607 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
23608 <td class="paramname"><em>in</em>, </td>
23609 </tr>
23610 <tr>
23611 <td class="paramkey"></td>
23612 <td></td>
23613 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
23614 <td class="paramname"><em>inputInfo</em>, </td>
23615 </tr>
23616 <tr>
23617 <td class="paramkey"></td>
23618 <td></td>
23619 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
23620 <td class="paramname"><em>out</em>, </td>
23621 </tr>
23622 <tr>
23623 <td class="paramkey"></td>
23624 <td></td>
23625 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
23626 <td class="paramname"><em>outputInfo</em>, </td>
23627 </tr>
23628 <tr>
23629 <td class="paramkey"></td>
23630 <td></td>
23631 <td class="paramtype"><a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a>&#160;</td>
23632 <td class="paramname"><em>dataLayout</em>, </td>
23633 </tr>
23634 <tr>
23635 <td class="paramkey"></td>
23636 <td></td>
23637 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4">armnn::ResizeMethod</a>&#160;</td>
23638 <td class="paramname"><em>resizeMethod</em>, </td>
23639 </tr>
23640 <tr>
23641 <td class="paramkey"></td>
23642 <td></td>
23643 <td class="paramtype">bool&#160;</td>
23644 <td class="paramname"><em>alignCorners</em>&#160;</td>
23645 </tr>
23646 <tr>
23647 <td></td>
23648 <td>)</td>
23649 <td></td><td></td>
23650 </tr>
23651 </table>
23652</div><div class="memdoc">
23653
23654<p class="definition">Definition at line <a class="el" href="_resize_8cpp_source.html#l00035">35</a> of file <a class="el" href="_resize_8cpp_source.html">Resize.cpp</a>.</p>
23655
23656<p class="reference">References <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>, <a class="el" href="_resize_8cpp_source.html#l00035">Resize()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
23657
23658<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02003">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_inference_test_image_8hpp_source.html#l00079">InferenceTestImage::GetSizeInBytes()</a>, <a class="el" href="_resize_8cpp_source.html#l00035">Resize()</a>, and <a class="el" href="_resize_layer_8cpp_source.html#l00021">ResizeLayer::ResizeLayer()</a>.</p>
23659<div class="fragment"><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; <span class="comment">// We follow the definition of TensorFlow and AndroidNN: the top-left corner of a texel in the output</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// image is projected into the input image to figure out the interpolants and weights. Note that this</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// will yield different results than if projecting the centre of output texels.</span></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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchSize = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelCount = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sizeOffset = resizeMethod == <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a> &amp;&amp; alignCorners ? 1 : 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// How much to scale pixel coordinates in the output image, to get the corresponding pixel coordinates</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// in the input image.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scaleY = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(inputHeight - sizeOffset)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; / boost::numeric_cast&lt;float&gt;(outputHeight - sizeOffset);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scaleX = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(inputWidth - sizeOffset)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; / boost::numeric_cast&lt;float&gt;(outputWidth - sizeOffset);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; batchSize; ++n)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channelCount; ++c)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; outputHeight; ++y)</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="comment">// Corresponding real-valued height coordinate in input image.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> iy = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(y) * scaleY;</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; <span class="comment">// Discrete height coordinate of top-left texel (in the 2x2 texel area used for interpolation).</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> fiy = floorf(iy);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y0 = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(fiy);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Interpolation weight (range [0,1]).</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> yw = iy - fiy;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x &lt; outputWidth; ++x)</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; <span class="comment">// Real-valued and discrete width coordinates in input image.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ix = boost::numeric_cast&lt;<span class="keywordtype">float</span>&gt;(x) * scaleX;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> fix = floorf(ix);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x0 = boost::numeric_cast&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(fix);</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; <span class="comment">// Interpolation weight (range [0,1]).</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> xw = ix - fix;</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; <span class="comment">// Discrete width/height coordinates of texels below and to the right of (x0, y0).</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x1 = std::min(x0 + 1, inputWidth - 1u);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y1 = std::min(y0 + 1, inputHeight - 1u);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">float</span> interpolatedValue;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">switch</span> (resizeMethod)</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; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y0, x0)];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">float</span> input1 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y0, x1)];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">float</span> input2 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y1, x0)];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">float</span> input3 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y1, x1)];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">float</span> input4 = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</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="keyword">const</span> <span class="keywordtype">float</span> ly0 = Lerp(input1, input2, xw); <span class="comment">// lerp along row y0.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ly1 = Lerp(input3, input4, xw); <span class="comment">// lerp along row y1.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; interpolatedValue = Lerp(ly0, ly1, yw);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a>:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// calculate euclidean distance to the 4 neighbours</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">auto</span> distance00 = EuclideanDistance(fix, fiy, x0, y0);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">auto</span> distance01 = EuclideanDistance(fix, fiy, x0, y1);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">auto</span> distance10 = EuclideanDistance(fix, fiy, x1, y0);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">auto</span> distance11 = EuclideanDistance(fix, fiy, x1, y1);</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; <span class="keyword">auto</span> <a class="code" href="structarmnn_1_1minimum.html">minimum</a> = std::min( { distance00, distance01, distance10, distance11 } );</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xNearest = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yNearest = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance00)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; xNearest = x0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; yNearest = y0;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance01)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; xNearest = x0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; yNearest = y1;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance10)</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; xNearest = x1;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; yNearest = y0;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.html">minimum</a> == distance11)</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"> 146</span>&#160; xNearest = x1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; yNearest = y1;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span></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; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Resize Nearest Neighbor failure&quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, yNearest, xNearest)];</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; interpolatedValue = in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Unknown resize method: &quot;</span> +</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::to_string(static_cast&lt;int&gt;(resizeMethod)));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; out[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(outputShape, n, c, y, x)];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(interpolatedValue);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</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"> 168</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
23660<div class="ttc" id="structarmnn_1_1minimum_html"><div class="ttname"><a href="structarmnn_1_1minimum.html">armnn::minimum</a></div><div class="ttdef"><b>Definition:</b> <a href="_minimum_8hpp_source.html#l00012">Minimum.hpp:12</a></div></div>
23661<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
23662<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
23663<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
23664<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
23665<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
23666<div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
23667<div class="ttc" id="namespacearmnn_html_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.html#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
23668<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
23669<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
23670<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a1e25d8623da985a43597b5756c73b206"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a1e25d8623da985a43597b5756c73b206">armnnUtils::DataLayoutIndexed::GetIndex</a></div><div class="ttdeci">unsigned int GetIndex(const armnn::TensorShape &amp;shape, unsigned int batchIndex, unsigned int channelIndex, unsigned int heightIndex, unsigned int widthIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed.hpp:27</a></div></div>
23671</div><!-- fragment -->
23672</div>
23673</div>
23674<a id="aff5bee79757341daf750c7dd7c123a15"></a>
23675<h2 class="memtitle"><span class="permalink"><a href="#aff5bee79757341daf750c7dd7c123a15">&#9670;&nbsp;</a></span>RunClFunction()</h2>
23676
23677<div class="memitem">
23678<div class="memproto">
23679<table class="mlabels">
23680 <tr>
23681 <td class="mlabels-left">
23682 <table class="memname">
23683 <tr>
23684 <td class="memname">void armnn::RunClFunction </td>
23685 <td>(</td>
23686 <td class="paramtype">arm_compute::IFunction &amp;&#160;</td>
23687 <td class="paramname"><em>function</em>, </td>
23688 </tr>
23689 <tr>
23690 <td class="paramkey"></td>
23691 <td></td>
23692 <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;&#160;</td>
23693 <td class="paramname"><em>location</em>&#160;</td>
23694 </tr>
23695 <tr>
23696 <td></td>
23697 <td>)</td>
23698 <td></td><td></td>
23699 </tr>
23700 </table>
23701 </td>
23702 <td class="mlabels-right">
23703<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23704 </tr>
23705</table>
23706</div><div class="memdoc">
23707
23708<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00131">131</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
23709
23710<p class="reference">References <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.html#l00123">WrapClError()</a>.</p>
23711
23712<p class="reference">Referenced by <a class="el" href="_cl_pad_workload_8cpp_source.html#l00039">ClPadWorkload::Execute()</a>, <a class="el" href="_cl_addition_workload_8cpp_source.html#l00032">ClAdditionWorkload::Execute()</a>, <a class="el" href="_cl_subtraction_workload_8cpp_source.html#l00032">ClSubtractionWorkload::Execute()</a>, <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.html#l00029">ClConvertFp32ToFp16Workload::Execute()</a>, <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.html#l00029">ClConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_cl_activation_workload_8cpp_source.html#l00046">ClActivationWorkload::Execute()</a>, <a class="el" href="_cl_lstm_float_workload_8cpp_source.html#l00250">ClLstmFloatWorkload::Execute()</a>, <a class="el" href="_cl_prelu_workload_8cpp_source.html#l00042">ClPreluWorkload::Execute()</a>, <a class="el" href="_cl_abs_workload_8cpp_source.html#l00038">ClAbsWorkload::Execute()</a>, <a class="el" href="_cl_quantize_workload_8cpp_source.html#l00043">ClQuantizeWorkload::Execute()</a>, <a class="el" href="_cl_rsqrt_workload_8cpp_source.html#l00038">ClRsqrtWorkload::Execute()</a>, <a class="el" href="_cl_instance_normalization_workload_8cpp_source.html#l00053">ClInstanceNormalizationWorkload::Execute()</a>, <a class="el" href="_cl_softmax_float_workload_8cpp_source.html#l00030">ClSoftmaxFloatWorkload::Execute()</a>, <a class="el" href="_cl_space_to_depth_workload_8cpp_source.html#l00038">ClSpaceToDepthWorkload::Execute()</a>, <a class="el" href="_cl_maximum_workload_8cpp_source.html#l00052">ClMaximumWorkload::Execute()</a>, <a class="el" href="_cl_minimum_workload_8cpp_source.html#l00052">ClMinimumWorkload::Execute()</a>, <a class="el" href="_cl_normalization_float_workload_8cpp_source.html#l00049">ClNormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.html#l00039">ClBatchToSpaceNdWorkload::Execute()</a>, <a class="el" href="_cl_floor_float_workload_8cpp_source.html#l00034">ClFloorFloatWorkload::Execute()</a>, <a class="el" href="_cl_reshape_workload_8cpp_source.html#l00035">ClReshapeWorkload::Execute()</a>, <a class="el" href="_cl_resize_workload_8cpp_source.html#l00071">ClResizeWorkload::Execute()</a>, <a class="el" href="_cl_softmax_uint8_workload_8cpp_source.html#l00040">ClSoftmaxUint8Workload::Execute()</a>, <a class="el" href="_cl_slice_workload_8cpp_source.html#l00050">ClSliceWorkload::Execute()</a>, <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.html#l00047">ClL2NormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_greater_workload_8cpp_source.html#l00056">ClGreaterWorkload&lt; T &gt;::Execute()</a>, <a class="el" href="_cl_arg_min_max_workload_8cpp_source.html#l00075">ClArgMinMaxWorkload::Execute()</a>, <a class="el" href="_cl_depth_to_space_workload_8cpp_source.html#l00060">ClDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_cl_multiplication_workload_8cpp_source.html#l00052">ClMultiplicationWorkload::Execute()</a>, <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.html#l00079">ClSpaceToBatchNdWorkload::Execute()</a>, <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.html#l00136">ClQuantizedLstmWorkload::Execute()</a>, <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00090">ClStridedSliceWorkload::Execute()</a>, <a class="el" href="_cl_division_float_workload_8cpp_source.html#l00040">ClDivisionFloatWorkload::Execute()</a>, <a class="el" href="_cl_pooling2d_workload_8cpp_source.html#l00054">ClPooling2dWorkload::Execute()</a>, <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.html#l00092">ClBatchNormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.html#l00148">ClDepthwiseConvolutionWorkload::Execute()</a>, <a class="el" href="_cl_fully_connected_workload_8cpp_source.html#l00084">ClFullyConnectedWorkload::Execute()</a>, <a class="el" href="_cl_convolution2d_workload_8cpp_source.html#l00110">ClConvolution2dWorkload::Execute()</a>, <a class="el" href="_cl_permute_workload_8cpp_source.html#l00045">ClPermuteWorkload::Execute()</a>, and <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.html#l00098">ClTransposeConvolution2dWorkload::Execute()</a>.</p>
23713<div class="fragment"><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; <span class="keywordflow">try</span></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"> 135</span>&#160; <span class="keyword">function</span>.run();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">catch</span> (cl::Error&amp; error)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="namespacearmnn.html#a2192b5ff59aacdb27f8b0238323915dc">WrapClError</a>(error, location);</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;}</div><div class="ttc" id="namespacearmnn_html_a2192b5ff59aacdb27f8b0238323915dc"><div class="ttname"><a href="namespacearmnn.html#a2192b5ff59aacdb27f8b0238323915dc">armnn::WrapClError</a></div><div class="ttdeci">RuntimeException WrapClError(const cl::Error &amp;clError, const CheckLocation &amp;location)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.html#l00123">ClWorkloadUtils.hpp:123</a></div></div>
23714</div><!-- fragment -->
23715</div>
23716</div>
23717<a id="a01fa2d4db2c1b4ee5269a31e514f37ec"></a>
23718<h2 class="memtitle"><span class="permalink"><a href="#a01fa2d4db2c1b4ee5269a31e514f37ec">&#9670;&nbsp;</a></span>RuntimeLoadedNetworksReserve()</h2>
23719
23720<div class="memitem">
23721<div class="memproto">
23722 <table class="memname">
23723 <tr>
23724 <td class="memname">void RuntimeLoadedNetworksReserve </td>
23725 <td>(</td>
23726 <td class="paramtype"><a class="el" href="classarmnn_1_1_runtime.html">armnn::Runtime</a> *&#160;</td>
23727 <td class="paramname"><em>runtime</em></td><td>)</td>
23728 <td></td>
23729 </tr>
23730 </table>
23731</div><div class="memdoc">
23732
23733<p class="definition">Definition at line <a class="el" href="_runtime_tests_8cpp_source.html#l00028">28</a> of file <a class="el" href="_runtime_tests_8cpp_source.html">RuntimeTests.cpp</a>.</p>
23734
23735<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.html#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>.</p>
23736
23737<p class="reference">Referenced by <a class="el" href="_runtime_tests_8cpp_source.html#l00037">BOOST_AUTO_TEST_CASE()</a>.</p>
23738<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; runtime-&gt;m_LoadedNetworks.reserve(1);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
23739</div>
23740</div>
23741<a id="a40c8a268a9dc9dc910e348534d479f7a"></a>
23742<h2 class="memtitle"><span class="permalink"><a href="#a40c8a268a9dc9dc910e348534d479f7a">&#9670;&nbsp;</a></span>SampleDynamicBackendId()</h2>
23743
23744<div class="memitem">
23745<div class="memproto">
23746 <table class="memname">
23747 <tr>
23748 <td class="memname">constexpr const char* armnn::SampleDynamicBackendId </td>
23749 <td>(</td>
23750 <td class="paramname"></td><td>)</td>
23751 <td></td>
23752 </tr>
23753 </table>
23754</div><div class="memdoc">
23755
23756<p class="definition">Definition at line <a class="el" href="_sample_dynamic_backend_8cpp_source.html#l00017">17</a> of file <a class="el" href="_sample_dynamic_backend_8cpp_source.html">SampleDynamicBackend.cpp</a>.</p>
23757
23758<p class="reference">References <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.html#l00044">OptimizationViews::AddUntouchedSubgraph()</a>.</p>
23759<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;SampleDynamic&quot;</span>; }</div></div><!-- fragment -->
23760</div>
23761</div>
23762<a id="a5d3468fb5880eb444cd25b55a86220ff"></a>
23763<h2 class="memtitle"><span class="permalink"><a href="#a5d3468fb5880eb444cd25b55a86220ff">&#9670;&nbsp;</a></span>SelectTensorHandleStrategy()</h2>
23764
23765<div class="memitem">
23766<div class="memproto">
23767 <table class="memname">
23768 <tr>
23769 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.html">OptimizationResult</a> SelectTensorHandleStrategy </td>
23770 <td>(</td>
23771 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
23772 <td class="paramname"><em>optGraph</em>, </td>
23773 </tr>
23774 <tr>
23775 <td class="paramkey"></td>
23776 <td></td>
23777 <td class="paramtype"><a class="el" href="namespacearmnn.html#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
23778 <td class="paramname"><em>backends</em>, </td>
23779 </tr>
23780 <tr>
23781 <td class="paramkey"></td>
23782 <td></td>
23783 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.html">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
23784 <td class="paramname"><em>registry</em>, </td>
23785 </tr>
23786 <tr>
23787 <td class="paramkey"></td>
23788 <td></td>
23789 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
23790 <td class="paramname"><em>errMessages</em>&#160;</td>
23791 </tr>
23792 <tr>
23793 <td></td>
23794 <td>)</td>
23795 <td></td><td></td>
23796 </tr>
23797 </table>
23798</div><div class="memdoc">
23799
23800<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.html#l00741">741</a> of file <a class="el" href="_network_8cpp_source.html">Network.cpp</a>.</p>
23801
23802<p class="reference">References <a class="el" href="_network_8cpp_source.html#l00664">CalculateEdgeStrategy()</a>, <a class="el" href="_network_8cpp_source.html#l00555">CalculateSlotOption()</a>, <a class="el" href="_network_8cpp_source.html#l00463">CalculateSlotOptionForInput()</a>, <a class="el" href="_network_8cpp_source.html#l00545">CalculateSlotOptionForOutput()</a>, <a class="el" href="_graph_8hpp_source.html#l00039">Graph::ForEachLayer()</a>, <a class="el" href="_layer_8hpp_source.html#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.html#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_layer_8hpp_source.html#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.html#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.html#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="_network_8hpp_source.html#l00284">OptimizationResult::m_Error</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_layer_8cpp_source.html#l00177">OutputSlot::SetEdgeStrategy()</a>, <a class="el" href="_layer_8cpp_source.html#l00167">OutputSlot::SetTensorHandleFactory()</a>, and <a class="el" href="namespacearmnn.html#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
23803
23804<p class="reference">Referenced by <a class="el" href="_tensor_handle_strategy_test_8cpp_source.html#l00292">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_network_8cpp_source.html#l00807">Optimize()</a>.</p>
23805<div class="fragment"><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; OptimizationResult result;</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; optGraph.ForEachLayer([&amp;backends, &amp;registry, &amp;result, &amp;errMessages](Layer* layer)</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; BOOST_ASSERT(layer);</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="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="l00753"></a><span class="lineno"> 753</span>&#160; <span class="comment">// assignment if this check fails</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; BOOST_ASSERT(backends.find(layer-&gt;GetBackendId()) != backends.end());</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="comment">// Check each output separately</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> slotIdx = 0; slotIdx &lt; layer-&gt;GetNumOutputSlots(); slotIdx++)</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; OutputSlot&amp; outputSlot = layer-&gt;GetOutputSlot(slotIdx);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <a class="code" href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">ITensorHandleFactory::FactoryId</a> slotOption = ITensorHandleFactory::LegacyFactoryId;</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="comment">// Calculate the factory to use which results in the fewest copies being made.</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">switch</span>(layer-&gt;GetType())</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">case</span> LayerType::Input:</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; slotOption = <a class="code" href="namespacearmnn.html#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">case</span> LayerType::Output:</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; slotOption = <a class="code" href="namespacearmnn.html#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; slotOption = <a class="code" href="namespacearmnn.html#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; outputSlot.SetTensorHandleFactory(slotOption);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</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="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> connectionIdx = 0;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</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; <a class="code" href="namespacearmnn.html#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy = <a class="code" href="namespacearmnn.html#ab6ed577caec49def150e231c63af0d12">CalculateEdgeStrategy</a>(backends, slotOption, *layer, connectedLayer, registry);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">if</span> (strategy == EdgeStrategy::Undefined)</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (errMessages)</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</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="l00792"></a><span class="lineno"> 792</span>&#160; <span class="stringliteral">&quot; between backends.&quot;</span>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; outputSlot.SetEdgeStrategy(connectionIdx, strategy);</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; connectionIdx++;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; });</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ab6ed577caec49def150e231c63af0d12"><div class="ttname"><a href="namespacearmnn.html#ab6ed577caec49def150e231c63af0d12">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)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.html#l00664">Network.cpp:664</a></div></div>
23806<div class="ttc" id="namespacearmnn_html_a8d9f52bbb69750456acca06988beabda"><div class="ttname"><a href="namespacearmnn.html#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.html#l00555">Network.cpp:555</a></div></div>
23807<div class="ttc" id="namespacearmnn_html_a947e07902b1b5d98b57eeae34053146b"><div class="ttname"><a href="namespacearmnn.html#a947e07902b1b5d98b57eeae34053146b">armnn::FactoryId</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId FactoryId</div><div class="ttdef"><b>Definition:</b> <a href="_cl_tensor_handle_factory_8cpp_source.html#l00020">ClTensorHandleFactory.cpp:20</a></div></div>
23808<div class="ttc" id="namespacearmnn_html_ab46c7f5f4736d550ab0e5e05a0fff4a9"><div class="ttname"><a href="namespacearmnn.html#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.html#l00545">Network.cpp:545</a></div></div>
23809<div class="ttc" id="namespacearmnn_html_accb1637c58e1523f740025e0d0e7c6dd"><div class="ttname"><a href="namespacearmnn.html#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.html#l00463">Network.cpp:463</a></div></div>
23810<div class="ttc" id="namespacearmnn_html_aff209afc1dc598da399e3e78617ce016"><div class="ttname"><a href="namespacearmnn.html#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.html#l00064">ITensorHandleFactory.hpp:64</a></div></div>
23811</div><!-- fragment -->
23812</div>
23813</div>
23814<a id="a7f8325a4bc02f2f687ba1968b595ec0a"></a>
23815<h2 class="memtitle"><span class="permalink"><a href="#a7f8325a4bc02f2f687ba1968b595ec0a">&#9670;&nbsp;</a></span>SetAllLoggingSinks()</h2>
23816
23817<div class="memitem">
23818<div class="memproto">
23819 <table class="memname">
23820 <tr>
23821 <td class="memname">void SetAllLoggingSinks </td>
23822 <td>(</td>
23823 <td class="paramtype">bool&#160;</td>
23824 <td class="paramname"><em>standardOut</em>, </td>
23825 </tr>
23826 <tr>
23827 <td class="paramkey"></td>
23828 <td></td>
23829 <td class="paramtype">bool&#160;</td>
23830 <td class="paramname"><em>debugOut</em>, </td>
23831 </tr>
23832 <tr>
23833 <td class="paramkey"></td>
23834 <td></td>
23835 <td class="paramtype">bool&#160;</td>
23836 <td class="paramname"><em>coloured</em>&#160;</td>
23837 </tr>
23838 <tr>
23839 <td></td>
23840 <td>)</td>
23841 <td></td><td></td>
23842 </tr>
23843 </table>
23844</div><div class="memdoc">
23845
23846<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.html#l00147">147</a> of file <a class="el" href="_logging_8cpp_source.html">Logging.cpp</a>.</p>
23847
23848<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.html#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_unit_tests_8cpp_source.html#l00068">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_utils_8cpp_source.html#l00010">ConfigureLogging()</a>.</p>
23849<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; SetLoggingSinks&lt;LogSeverity::Trace&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; SetLoggingSinks&lt;LogSeverity::Debug&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; SetLoggingSinks&lt;LogSeverity::Info&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; SetLoggingSinks&lt;LogSeverity::Warning&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; SetLoggingSinks&lt;LogSeverity::Error&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; SetLoggingSinks&lt;LogSeverity::Fatal&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div></div><!-- fragment -->
23850</div>
23851</div>
23852<a id="a460e01ad4cd0bfa6bde4eccaf0e77220"></a>
23853<h2 class="memtitle"><span class="permalink"><a href="#a460e01ad4cd0bfa6bde4eccaf0e77220">&#9670;&nbsp;</a></span>SetClSliceData()</h2>
23854
23855<div class="memitem">
23856<div class="memproto">
23857<table class="mlabels">
23858 <tr>
23859 <td class="mlabels-left">
23860 <table class="memname">
23861 <tr>
23862 <td class="memname">auto armnn::SetClSliceData </td>
23863 <td>(</td>
23864 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
23865 <td class="paramname"><em>m_begin</em>, </td>
23866 </tr>
23867 <tr>
23868 <td class="paramkey"></td>
23869 <td></td>
23870 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
23871 <td class="paramname"><em>m_size</em>&#160;</td>
23872 </tr>
23873 <tr>
23874 <td></td>
23875 <td>)</td>
23876 <td></td><td></td>
23877 </tr>
23878 </table>
23879 </td>
23880 <td class="mlabels-right">
23881<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23882 </tr>
23883</table>
23884</div><div class="memdoc">
23885
23886<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00066">66</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
23887
23888<p class="reference">Referenced by <a class="el" href="_cl_slice_workload_8cpp_source.html#l00034">ClSliceWorkload::ClSliceWorkload()</a>.</p>
23889<div class="fragment"><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; <span class="comment">// This function must translate the size vector given to an end vector</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// expected by the ACL NESlice workload</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</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; <span class="comment">// For strided slices, we have the relationship size = (end - begin) / stride</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// For slice, we assume stride to be a vector of all ones, yielding the formula</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// size = (end - begin) therefore we know end = size + begin</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex] + m_size[revertedIndex]));</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"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
23890</div><!-- fragment -->
23891</div>
23892</div>
23893<a id="a6d4bdf4368a1422943f8f2b1740ec491"></a>
23894<h2 class="memtitle"><span class="permalink"><a href="#a6d4bdf4368a1422943f8f2b1740ec491">&#9670;&nbsp;</a></span>SetClStridedSliceData()</h2>
23895
23896<div class="memitem">
23897<div class="memproto">
23898<table class="mlabels">
23899 <tr>
23900 <td class="mlabels-left">
23901 <table class="memname">
23902 <tr>
23903 <td class="memname">auto armnn::SetClStridedSliceData </td>
23904 <td>(</td>
23905 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
23906 <td class="paramname"><em>m_begin</em>, </td>
23907 </tr>
23908 <tr>
23909 <td class="paramkey"></td>
23910 <td></td>
23911 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
23912 <td class="paramname"><em>m_end</em>, </td>
23913 </tr>
23914 <tr>
23915 <td class="paramkey"></td>
23916 <td></td>
23917 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
23918 <td class="paramname"><em>m_stride</em>&#160;</td>
23919 </tr>
23920 <tr>
23921 <td></td>
23922 <td>)</td>
23923 <td></td><td></td>
23924 </tr>
23925 </table>
23926 </td>
23927 <td class="mlabels-right">
23928<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23929 </tr>
23930</table>
23931</div><div class="memdoc">
23932
23933<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00045">45</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
23934
23935<p class="reference">Referenced by <a class="el" href="_cl_strided_slice_workload_8cpp_source.html#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>.</p>
23936<div class="fragment"><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; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_end[revertedIndex]));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; strides.set(i, static_cast&lt;int&gt;(m_stride[revertedIndex]));</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"> 63</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends, strides);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
23937</div><!-- fragment -->
23938</div>
23939</div>
23940<a id="ac9aad76a34137b6359a867b282ea7cfb"></a>
23941<h2 class="memtitle"><span class="permalink"><a href="#ac9aad76a34137b6359a867b282ea7cfb">&#9670;&nbsp;</a></span>SetLogFilter()</h2>
23942
23943<div class="memitem">
23944<div class="memproto">
23945 <table class="memname">
23946 <tr>
23947 <td class="memname">void SetLogFilter </td>
23948 <td>(</td>
23949 <td class="paramtype"><a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
23950 <td class="paramname"><em>level</em></td><td>)</td>
23951 <td></td>
23952 </tr>
23953 </table>
23954</div><div class="memdoc">
23955
23956<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.html#l00029">29</a> of file <a class="el" href="_logging_8cpp_source.html">Logging.cpp</a>.</p>
23957
23958<p class="reference">References <a class="el" href="_utils_8hpp_source.html#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="_logging_8hpp_source.html#l00118">SimpleLogger&lt; Level &gt;::Enable()</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>, <a class="el" href="_logging_8hpp_source.html#l00112">SimpleLogger&lt; Level &gt;::Get()</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>, <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>, and <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>.</p>
23959
23960<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.html#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_unit_tests_8cpp_source.html#l00068">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_utils_8cpp_source.html#l00010">ConfigureLogging()</a>.</p>
23961<div class="fragment"><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; SimpleLogger&lt;LogSeverity::Trace&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; SimpleLogger&lt;LogSeverity::Debug&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; SimpleLogger&lt;LogSeverity::Info&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; SimpleLogger&lt;LogSeverity::Warning&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; SimpleLogger&lt;LogSeverity::Error&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; SimpleLogger&lt;LogSeverity::Fatal&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">switch</span> (level)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> LogSeverity::Trace:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; SimpleLogger&lt;LogSeverity::Trace&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">LogSeverity::Debug</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; SimpleLogger&lt;LogSeverity::Debug&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> LogSeverity::Info:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SimpleLogger&lt;LogSeverity::Info&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> LogSeverity::Warning:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; SimpleLogger&lt;LogSeverity::Warning&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> LogSeverity::Error:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; SimpleLogger&lt;LogSeverity::Error&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> LogSeverity::Fatal:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; SimpleLogger&lt;LogSeverity::Fatal&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; BOOST_ASSERT(<span class="keyword">false</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.html#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.html#l00019">Debug.cpp:19</a></div></div>
23962<div class="ttc" id="_utils_8hpp_html_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.html#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.html#l00035">Utils.hpp:35</a></div></div>
23963</div><!-- fragment -->
23964</div>
23965</div>
23966<a id="a5f523aee1752323aeaf899085649320b"></a>
23967<h2 class="memtitle"><span class="permalink"><a href="#a5f523aee1752323aeaf899085649320b">&#9670;&nbsp;</a></span>SetLoggingSinks()</h2>
23968
23969<div class="memitem">
23970<div class="memproto">
23971<table class="mlabels">
23972 <tr>
23973 <td class="mlabels-left">
23974 <table class="memname">
23975 <tr>
23976 <td class="memname">void armnn::SetLoggingSinks </td>
23977 <td>(</td>
23978 <td class="paramtype">bool&#160;</td>
23979 <td class="paramname"><em>standardOut</em>, </td>
23980 </tr>
23981 <tr>
23982 <td class="paramkey"></td>
23983 <td></td>
23984 <td class="paramtype">bool&#160;</td>
23985 <td class="paramname"><em>debugOut</em>, </td>
23986 </tr>
23987 <tr>
23988 <td class="paramkey"></td>
23989 <td></td>
23990 <td class="paramtype">bool&#160;</td>
23991 <td class="paramname"><em>coloured</em>&#160;</td>
23992 </tr>
23993 <tr>
23994 <td></td>
23995 <td>)</td>
23996 <td></td><td></td>
23997 </tr>
23998 </table>
23999 </td>
24000 <td class="mlabels-right">
24001<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24002 </tr>
24003</table>
24004</div><div class="memdoc">
24005
24006<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.html#l00123">123</a> of file <a class="el" href="_logging_8cpp_source.html">Logging.cpp</a>.</p>
24007
24008<p class="reference">References <a class="el" href="_logging_8hpp_source.html#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_logging_8hpp_source.html#l00112">SimpleLogger&lt; Level &gt;::Get()</a>, and <a class="el" href="_logging_8hpp_source.html#l00129">SimpleLogger&lt; Level &gt;::RemoveAllSinks()</a>.</p>
24009<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; SimpleLogger&lt;Level&gt;::Get().RemoveAllSinks();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (standardOut)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (coloured)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; std::make_shared&lt;StandardOutputColourSink&gt;(Level));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; } <span class="keywordflow">else</span></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"> 135</span>&#160; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; std::make_shared&lt;StandardOutputSink&gt;());</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (debugOut)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; std::make_shared&lt;DebugOutputSink&gt;());</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><!-- fragment -->
24010</div>
24011</div>
24012<a id="ab40e30cea5a328a3c35aa32f9b7db1c1"></a>
24013<h2 class="memtitle"><span class="permalink"><a href="#ab40e30cea5a328a3c35aa32f9b7db1c1">&#9670;&nbsp;</a></span>SetNeonSliceData()</h2>
24014
24015<div class="memitem">
24016<div class="memproto">
24017<table class="mlabels">
24018 <tr>
24019 <td class="mlabels-left">
24020 <table class="memname">
24021 <tr>
24022 <td class="memname">auto armnn::SetNeonSliceData </td>
24023 <td>(</td>
24024 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
24025 <td class="paramname"><em>m_begin</em>, </td>
24026 </tr>
24027 <tr>
24028 <td class="paramkey"></td>
24029 <td></td>
24030 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
24031 <td class="paramname"><em>m_size</em>&#160;</td>
24032 </tr>
24033 <tr>
24034 <td></td>
24035 <td>)</td>
24036 <td></td><td></td>
24037 </tr>
24038 </table>
24039 </td>
24040 <td class="mlabels-right">
24041<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24042 </tr>
24043</table>
24044</div><div class="memdoc">
24045
24046<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00088">88</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
24047
24048<p class="reference">Referenced by <a class="el" href="_neon_slice_workload_8cpp_source.html#l00034">NeonSliceWorkload::NeonSliceWorkload()</a>.</p>
24049<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// This function must translate the size vector given to an end vector</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// expected by the ACL NESlice workload</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// For strided slices, we have the relationship size = (end - begin) / stride</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// For slice, we assume stride to be a vector of all ones, yielding the formula</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// size = (end - begin) therefore we know end = size + begin</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex] + m_size[revertedIndex]));</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"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
24050</div><!-- fragment -->
24051</div>
24052</div>
24053<a id="a01d1e745f360ccd0b655214645bcef32"></a>
24054<h2 class="memtitle"><span class="permalink"><a href="#a01d1e745f360ccd0b655214645bcef32">&#9670;&nbsp;</a></span>SetNeonStridedSliceData()</h2>
24055
24056<div class="memitem">
24057<div class="memproto">
24058<table class="mlabels">
24059 <tr>
24060 <td class="mlabels-left">
24061 <table class="memname">
24062 <tr>
24063 <td class="memname">auto armnn::SetNeonStridedSliceData </td>
24064 <td>(</td>
24065 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
24066 <td class="paramname"><em>m_begin</em>, </td>
24067 </tr>
24068 <tr>
24069 <td class="paramkey"></td>
24070 <td></td>
24071 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
24072 <td class="paramname"><em>m_end</em>, </td>
24073 </tr>
24074 <tr>
24075 <td class="paramkey"></td>
24076 <td></td>
24077 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
24078 <td class="paramname"><em>m_stride</em>&#160;</td>
24079 </tr>
24080 <tr>
24081 <td></td>
24082 <td>)</td>
24083 <td></td><td></td>
24084 </tr>
24085 </table>
24086 </td>
24087 <td class="mlabels-right">
24088<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24089 </tr>
24090</table>
24091</div><div class="memdoc">
24092
24093<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.html#l00066">66</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.html">NeonWorkloadUtils.hpp</a>.</p>
24094
24095<p class="reference">Referenced by <a class="el" href="_neon_strided_slice_workload_8cpp_source.html#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>.</p>
24096<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_end[revertedIndex]));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; strides.set(i, static_cast&lt;int&gt;(m_stride[revertedIndex]));</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; <span class="keywordflow">return</span> std::make_tuple(starts, ends, strides);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.html#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.html#l00079">InternalTypes.hpp:79</a></div></div>
24097</div><!-- fragment -->
24098</div>
24099</div>
24100<a id="a52cbff9d344ba4a1fe01d4da2c1f7ba2"></a>
24101<h2 class="memtitle"><span class="permalink"><a href="#a52cbff9d344ba4a1fe01d4da2c1f7ba2">&#9670;&nbsp;</a></span>SetupQuantize()</h2>
24102
24103<div class="memitem">
24104<div class="memproto">
24105 <table class="memname">
24106 <tr>
24107 <td class="memname">std::vector&lt;uint8_t&gt; armnn::SetupQuantize </td>
24108 <td>(</td>
24109 <td class="paramtype">float&#160;</td>
24110 <td class="paramname"><em>value</em></td><td>)</td>
24111 <td></td>
24112 </tr>
24113 </table>
24114</div><div class="memdoc">
24115
24116<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02727">2727</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
24117
24118<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8cpp_source.html#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
24119
24120<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l02742">BOOST_AUTO_TEST_CASE()</a>.</p>
24121<div class="fragment"><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;{</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputInfo({ 1, 2, 2 }, <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160; inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(1.0f);</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; inputInfo.SetQuantizationOffset(1);</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; std::vector&lt;float&gt; input({ value, 0.0f, 0.0f, 1.0f });</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; &amp;inputRef = input;</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; <span class="keyword">auto</span> output = armnnUtils::QuantizedVector&lt;uint8_t&gt;(inputRef,</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; inputInfo.GetQuantizationScale(),</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160; inputInfo.GetQuantizationOffset());</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; <span class="keywordflow">return</span> output;</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_html"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00053">Tensor.hpp:53</a></div></div>
24122<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
24123<div class="ttc" id="classarmnn_1_1_tensor_info_html_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00259">Tensor.cpp:259</a></div></div>
24124</div><!-- fragment -->
24125</div>
24126</div>
24127<a id="a13c7d751e4d37f65a6d40c3c6e50d2b8"></a>
24128<h2 class="memtitle"><span class="permalink"><a href="#a13c7d751e4d37f65a6d40c3c6e50d2b8">&#9670;&nbsp;</a></span>SetValueChecked()</h2>
24129
24130<div class="memitem">
24131<div class="memproto">
24132 <table class="memname">
24133 <tr>
24134 <td class="memname">void armnn::SetValueChecked </td>
24135 <td>(</td>
24136 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; T &amp;&gt;&#160;</td>
24137 <td class="paramname"><em>optionalRef</em>, </td>
24138 </tr>
24139 <tr>
24140 <td class="paramkey"></td>
24141 <td></td>
24142 <td class="paramtype">V &amp;&amp;&#160;</td>
24143 <td class="paramname"><em>val</em>&#160;</td>
24144 </tr>
24145 <tr>
24146 <td></td>
24147 <td>)</td>
24148 <td></td><td></td>
24149 </tr>
24150 </table>
24151</div><div class="memdoc">
24152
24153<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00018">18</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
24154
24155<p class="reference">References <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
24156
24157<p class="reference">Referenced by <a class="el" href="_layer_support_common_8hpp_source.html#l00071">FalseFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00079">FalseFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00095">FalseFuncI32()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00087">FalseFuncU8()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00111">FalseInputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00103">FalseInputFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00127">FalseOutputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.html#l00119">FalseOutputFuncF32()</a>, <a class="el" href="_neon_layer_support_8cpp_source.html#l00218">NeonLayerSupport::IsConcatSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00247">ClLayerSupport::IsConcatSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.html#l00737">ClLayerSupport::IsSplitterSupported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.html#l00721">NeonLayerSupport::IsSplitterSupported()</a>.</p>
24158<div class="fragment"><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="keywordflow">if</span> (optionalRef)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; optionalRef.value() = val;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
24159</div>
24160</div>
24161<a id="a044ea0cc993d4d1fbe4ec877b17b8d39"></a>
24162<h2 class="memtitle"><span class="permalink"><a href="#a044ea0cc993d4d1fbe4ec877b17b8d39">&#9670;&nbsp;</a></span>Slice()</h2>
24163
24164<div class="memitem">
24165<div class="memproto">
24166 <table class="memname">
24167 <tr>
24168 <td class="memname">void Slice </td>
24169 <td>(</td>
24170 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
24171 <td class="paramname"><em>inputInfo</em>, </td>
24172 </tr>
24173 <tr>
24174 <td class="paramkey"></td>
24175 <td></td>
24176 <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.html">SliceDescriptor</a> &amp;&#160;</td>
24177 <td class="paramname"><em>descriptor</em>, </td>
24178 </tr>
24179 <tr>
24180 <td class="paramkey"></td>
24181 <td></td>
24182 <td class="paramtype">const void *&#160;</td>
24183 <td class="paramname"><em>inputData</em>, </td>
24184 </tr>
24185 <tr>
24186 <td class="paramkey"></td>
24187 <td></td>
24188 <td class="paramtype">void *&#160;</td>
24189 <td class="paramname"><em>outputData</em>, </td>
24190 </tr>
24191 <tr>
24192 <td class="paramkey"></td>
24193 <td></td>
24194 <td class="paramtype">unsigned int&#160;</td>
24195 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
24196 </tr>
24197 <tr>
24198 <td></td>
24199 <td>)</td>
24200 <td></td><td></td>
24201 </tr>
24202 </table>
24203</div><div class="memdoc">
24204
24205<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_slice_8cpp_source.html#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_slice_8cpp_source.html">Slice.cpp</a>.</p>
24206
24207<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00943">SliceDescriptor::m_Begin</a>, and <a class="el" href="_descriptors_8hpp_source.html#l00946">SliceDescriptor::m_Size</a>.</p>
24208
24209<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02153">BOOST_AUTO_TEST_CASE()</a>.</p>
24210<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputShape.GetNumDimensions();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; BOOST_ASSERT(descriptor.m_Begin.size() == numDims);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(descriptor.m_Size.size() == numDims);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxNumDims = 4;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; BOOST_ASSERT(numDims &lt;= maxNumDims);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; std::vector&lt;unsigned int&gt; paddedInput(4);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; std::vector&lt;unsigned int&gt; paddedBegin(4);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; std::vector&lt;unsigned int&gt; paddedSize (4);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numPaddingDims = maxNumDims - numDims;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; maxNumDims; ++i)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (i &lt; numPaddingDims)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; paddedInput[i] = 1u;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; paddedBegin[i] = 0u;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; paddedSize[i] = 1u;</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; <span class="keywordflow">else</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"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = i - numPaddingDims;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; paddedInput[i] = inputShape[j];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; paddedBegin[i] = descriptor.m_Begin[j];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; paddedSize[i] = descriptor.m_Size[j];</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"> 50</span>&#160; }</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim0 = paddedInput[0];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim1 = paddedInput[1];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim2 = paddedInput[2];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim3 = paddedInput[3];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin0 = paddedBegin[0];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin1 = paddedBegin[1];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin2 = paddedBegin[2];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin3 = paddedBegin[3];</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size0 = paddedSize[0];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size1 = paddedSize[1];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size2 = paddedSize[2];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size3 = paddedSize[3];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; BOOST_ASSERT(begin0 + size0 &lt;= dim0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; BOOST_ASSERT(begin1 + size1 &lt;= dim1);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; BOOST_ASSERT(begin2 + size2 &lt;= dim2);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BOOST_ASSERT(begin3 + size3 &lt;= dim3);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* input = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(inputData);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* output = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(outputData);</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; boost::ignore_unused(dim0);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx0 = begin0; idx0 &lt; begin0 + size0; ++idx0)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx1 = begin1; idx1 &lt; begin1 + size1; ++idx1)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx2 = begin2; idx2 &lt; begin2 + size2; ++idx2)</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx3 = begin3; idx3 &lt; begin3 + size3; ++idx3)</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputOffset =</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; (((idx0 * dim1 + idx1) * dim2 + idx2) * dim3 + idx3) * dataTypeSize;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ::memcpy(output, input + inputOffset, dataTypeSize);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; output += dataTypeSize;</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; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</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><!-- fragment -->
24211</div>
24212</div>
24213<a id="aa999ff2585ad75b95954a9323f63c32b"></a>
24214<h2 class="memtitle"><span class="permalink"><a href="#aa999ff2585ad75b95954a9323f63c32b">&#9670;&nbsp;</a></span>Softmax()</h2>
24215
24216<div class="memitem">
24217<div class="memproto">
24218 <table class="memname">
24219 <tr>
24220 <td class="memname">void Softmax </td>
24221 <td>(</td>
24222 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24223 <td class="paramname"><em>in</em>, </td>
24224 </tr>
24225 <tr>
24226 <td class="paramkey"></td>
24227 <td></td>
24228 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24229 <td class="paramname"><em>out</em>, </td>
24230 </tr>
24231 <tr>
24232 <td class="paramkey"></td>
24233 <td></td>
24234 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
24235 <td class="paramname"><em>inputTensorInfo</em>, </td>
24236 </tr>
24237 <tr>
24238 <td class="paramkey"></td>
24239 <td></td>
24240 <td class="paramtype">float&#160;</td>
24241 <td class="paramname"><em>beta</em>, </td>
24242 </tr>
24243 <tr>
24244 <td class="paramkey"></td>
24245 <td></td>
24246 <td class="paramtype">int&#160;</td>
24247 <td class="paramname"><em>axis</em>&#160;</td>
24248 </tr>
24249 <tr>
24250 <td></td>
24251 <td>)</td>
24252 <td></td><td></td>
24253 </tr>
24254 </table>
24255</div><div class="memdoc">
24256
24257<p>Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo. </p>
24258
24259<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_softmax_8cpp_source.html#l00017">17</a> of file <a class="el" href="backends_2reference_2workloads_2_softmax_8cpp_source.html">Softmax.cpp</a>.</p>
24260
24261<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
24262
24263<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02183">BOOST_AUTO_TEST_CASE()</a>.</p>
24264<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; BOOST_ASSERT_MSG(axis &lt; static_cast&lt;int&gt;(inputTensorInfo.GetNumDimensions()),</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="stringliteral">&quot;Required axis index greater than number of dimensions.&quot;</span>);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; BOOST_ASSERT_MSG(axis &gt;= -static_cast&lt;int&gt;(inputTensorInfo.GetNumDimensions()),</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="stringliteral">&quot;Required axis index lower than negative of the number of dimensions&quot;</span>);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = axis &lt; 0 ?</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; inputTensorInfo.GetNumDimensions() - <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(abs(axis))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; : static_cast&lt;unsigned int&gt;(axis);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputTensorInfo.GetShape();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape, 0, uAxis);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputShape[uAxis];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerSize = <a class="code" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; uAxis + 1,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; inputShape.GetNumDimensions());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerSize; ++outer)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBeginIdx = outer * axisSize * innerSize;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputEndIdx = inputBeginIdx + axisSize * innerSize;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBeginIdx = outer * axisSize * innerSize;</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"> 41</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerSize; ++inner, ++inputBeginIdx, ++inputEndIdx, ++outputBeginIdx)</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; <span class="comment">// Find max</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> maxValue = std::numeric_limits&lt;float&gt;::lowest();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize)</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; in[iter];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; maxValue = std::max(maxValue, in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</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"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Compute sum</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize)</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; in[iter];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; sum += std::exp((in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * beta);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</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="comment">// Compute result</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIter = outputBeginIdx;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; out[outputIter];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize, outputIter += innerSize)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; out[outputIter];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; in[iter];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(std::exp((in.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * beta) / sum);</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"> 70</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
24265<div class="ttc" id="namespacearmnn_utils_html_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00113">TensorUtils.cpp:113</a></div></div>
24266<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
24267</div><!-- fragment -->
24268</div>
24269</div>
24270<a id="a4a180e425d4c19b2cdea4ce5760180e1"></a>
24271<h2 class="memtitle"><span class="permalink"><a href="#a4a180e425d4c19b2cdea4ce5760180e1">&#9670;&nbsp;</a></span>SpaceToBatchNd()</h2>
24272
24273<div class="memitem">
24274<div class="memproto">
24275 <table class="memname">
24276 <tr>
24277 <td class="memname">void SpaceToBatchNd </td>
24278 <td>(</td>
24279 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
24280 <td class="paramname"><em>inputInfo</em>, </td>
24281 </tr>
24282 <tr>
24283 <td class="paramkey"></td>
24284 <td></td>
24285 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
24286 <td class="paramname"><em>outputInfo</em>, </td>
24287 </tr>
24288 <tr>
24289 <td class="paramkey"></td>
24290 <td></td>
24291 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.html">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
24292 <td class="paramname"><em>params</em>, </td>
24293 </tr>
24294 <tr>
24295 <td class="paramkey"></td>
24296 <td></td>
24297 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24298 <td class="paramname"><em>inputData</em>, </td>
24299 </tr>
24300 <tr>
24301 <td class="paramkey"></td>
24302 <td></td>
24303 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24304 <td class="paramname"><em>outputData</em>&#160;</td>
24305 </tr>
24306 <tr>
24307 <td></td>
24308 <td>)</td>
24309 <td></td><td></td>
24310 </tr>
24311 </table>
24312</div><div class="memdoc">
24313
24314<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">34</a> of file <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html">SpaceToBatchNd.cpp</a>.</p>
24315
24316<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">GetOffset()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00801">SpaceToBatchNdDescriptor::m_BlockShape</a>, <a class="el" href="_descriptors_8hpp_source.html#l00806">SpaceToBatchNdDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l00804">SpaceToBatchNdDescriptor::m_PadList</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd()</a>.</p>
24317
24318<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02211">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00034">SpaceToBatchNd()</a>, and <a class="el" href="_space_to_batch_nd_layer_8cpp_source.html#l00023">SpaceToBatchNdLayer::SpaceToBatchNdLayer()</a>.</p>
24319<div class="fragment"><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; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</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"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBatchSize = outputShape[0];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockHeight = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a02e143524aefddd40b485fcf7dea6696">m_BlockShape</a>[0];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockWidth = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a02e143524aefddd40b485fcf7dea6696">m_BlockShape</a>[1];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingTop = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a85f98c94e11f65a6b73f831735c040f3">m_PadList</a>[0].first;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingLeft = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a85f98c94e11f65a6b73f831735c040f3">m_PadList</a>[1].first;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outB = 0; outB &lt; outputBatchSize; outB++)</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"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inB = outB % inputBatchSize;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftW = (outB / inputBatchSize) % blockWidth;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftH = (outB / inputBatchSize) / blockWidth;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = 0; outH &lt; outputHeight; outH++)</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"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = 0; outW &lt; outputWidth; outW++)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (outH * blockHeight + shiftH &lt; paddingTop ||</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; outH * blockHeight + shiftH &gt;= paddingTop + inputHeight ||</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; outW * blockWidth + shiftW &lt; paddingLeft ||</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; outW * blockWidth + shiftW &gt;= paddingLeft + inputWidth)</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"> 77</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; outB,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; outH,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; outW,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; c,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; dataLayout);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; outputData -= outOffset;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(inputShape,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; inB,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; (outH * blockHeight + shiftH) - paddingTop,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; (outW * blockWidth + shiftW) - paddingLeft,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; c,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; dataLayout);</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; outB,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; outH,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; outW,</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; c,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; dataLayout);</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"> 108</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; inputData += inOffset;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputData.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; inputData -= inOffset;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; outputData -= outOffset;</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"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_html_a85f98c94e11f65a6b73f831735c040f3"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a85f98c94e11f65a6b73f831735c040f3">armnn::SpaceToBatchNdDescriptor::m_PadList</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt; &gt; m_PadList</div><div class="ttdoc">Specifies the padding values for the input dimension: heightPad{top, bottom} widthPad{left, right}. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00804">Descriptors.hpp:804</a></div></div>
24320<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
24321<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::SpaceToBatchNdDescriptor::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.html#l00806">Descriptors.hpp:806</a></div></div>
24322<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_html_a02e143524aefddd40b485fcf7dea6696"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.html#a02e143524aefddd40b485fcf7dea6696">armnn::SpaceToBatchNdDescriptor::m_BlockShape</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; m_BlockShape</div><div class="ttdoc">Block shape value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00801">Descriptors.hpp:801</a></div></div>
24323<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
24324<div class="ttc" id="namespacearmnn_html_adafb0fd0a3f6435c2bdf41f971761ecf"><div class="ttname"><a href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">armnn::GetOffset</a></div><div class="ttdeci">unsigned int GetOffset(const TensorShape &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">SpaceToBatchNd.cpp:15</a></div></div>
24325<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
24326<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
24327<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
24328<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
24329<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
24330<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
24331</div><!-- fragment -->
24332</div>
24333</div>
24334<a id="a5e1dc69443b64ad16b669388a6023f7a"></a>
24335<h2 class="memtitle"><span class="permalink"><a href="#a5e1dc69443b64ad16b669388a6023f7a">&#9670;&nbsp;</a></span>SpaceToDepth()</h2>
24336
24337<div class="memitem">
24338<div class="memproto">
24339 <table class="memname">
24340 <tr>
24341 <td class="memname">void SpaceToDepth </td>
24342 <td>(</td>
24343 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
24344 <td class="paramname"><em>inputInfo</em>, </td>
24345 </tr>
24346 <tr>
24347 <td class="paramkey"></td>
24348 <td></td>
24349 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
24350 <td class="paramname"><em>outputInfo</em>, </td>
24351 </tr>
24352 <tr>
24353 <td class="paramkey"></td>
24354 <td></td>
24355 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.html">SpaceToDepthDescriptor</a> &amp;&#160;</td>
24356 <td class="paramname"><em>params</em>, </td>
24357 </tr>
24358 <tr>
24359 <td class="paramkey"></td>
24360 <td></td>
24361 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24362 <td class="paramname"><em>inputData</em>, </td>
24363 </tr>
24364 <tr>
24365 <td class="paramkey"></td>
24366 <td></td>
24367 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24368 <td class="paramname"><em>outputData</em>&#160;</td>
24369 </tr>
24370 <tr>
24371 <td></td>
24372 <td>)</td>
24373 <td></td><td></td>
24374 </tr>
24375 </table>
24376</div><div class="memdoc">
24377
24378<p class="definition">Definition at line <a class="el" href="_space_to_depth_8cpp_source.html#l00036">36</a> of file <a class="el" href="_space_to_depth_8cpp_source.html">SpaceToDepth.cpp</a>.</p>
24379
24380<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">GetOffset()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00827">SpaceToDepthDescriptor::m_BlockSize</a>, <a class="el" href="_descriptors_8hpp_source.html#l00830">SpaceToDepthDescriptor::m_DataLayout</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth()</a>.</p>
24381
24382<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02242">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_space_to_depth_8cpp_source.html#l00036">SpaceToDepth()</a>, and <a class="el" href="_space_to_depth_layer_8cpp_source.html#l00025">SpaceToDepthLayer::SpaceToDepthLayer()</a>.</p>
24383<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayout = params.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>&amp; outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize = params.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">m_BlockSize</a>;</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"> 56</span>&#160; <span class="keywordflow">if</span> (blockSize == 0)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="stringliteral">&quot;Input shape must be divisible by block size in all spatial dimensions: Block size is&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="stringliteral">&quot; equal to zero&quot;</span>);</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"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outChannelIndex = 0; outChannelIndex &lt; outputChannels; outChannelIndex++)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inChannelIndex = outChannelIndex % inputChannels;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftW = (outChannelIndex / inputChannels) % blockSize;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftH = (outChannelIndex / inputChannels) / blockSize;</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"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = 0; outH &lt; outputHeight; outH++)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = 0; outW &lt; outputWidth; outW++)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inBatchIndex = 0; inBatchIndex &lt; inputBatchSize; inBatchIndex++)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(inputShape,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; inChannelIndex,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; (outH * blockSize + shiftH),</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; (outW * blockSize + shiftW),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; inBatchIndex,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; dataLayout);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; outChannelIndex,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; outH,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outW,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; inBatchIndex,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; dataLayout);</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; outputData += outOffset;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; inputData += inOffset;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputData.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; inputData -= inOffset;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; outputData -= outOffset;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6089e1ca91914015777ea780a513131a">armnn::SpaceToDepthDescriptor::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.html#l00830">Descriptors.hpp:830</a></div></div>
24384<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed.hpp:24</a></div></div>
24385<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_html"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00080">Exceptions.hpp:80</a></div></div>
24386<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed.hpp:25</a></div></div>
24387<div class="ttc" id="namespacearmnn_html_adafb0fd0a3f6435c2bdf41f971761ecf"><div class="ttname"><a href="namespacearmnn.html#adafb0fd0a3f6435c2bdf41f971761ecf">armnn::GetOffset</a></div><div class="ttdeci">unsigned int GetOffset(const TensorShape &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.html#l00015">SpaceToBatchNd.cpp:15</a></div></div>
24388<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed.hpp:23</a></div></div>
24389<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
24390<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_html_a6c6b8957f1e176867e5fb05b1a1a1486"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.html#a6c6b8957f1e176867e5fb05b1a1a1486">armnn::SpaceToDepthDescriptor::m_BlockSize</a></div><div class="ttdeci">unsigned int m_BlockSize</div><div class="ttdoc">Scalar specifying the input block size. It must be &gt;= 1. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l00827">Descriptors.hpp:827</a></div></div>
24391<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
24392<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
24393<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
24394<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
24395</div><!-- fragment -->
24396</div>
24397</div>
24398<a id="ac4d30f99e7fa46fe375e925a6ad537be"></a>
24399<h2 class="memtitle"><span class="permalink"><a href="#ac4d30f99e7fa46fe375e925a6ad537be">&#9670;&nbsp;</a></span>Split()</h2>
24400
24401<div class="memitem">
24402<div class="memproto">
24403 <table class="memname">
24404 <tr>
24405 <td class="memname">void Split </td>
24406 <td>(</td>
24407 <td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;&#160;</td>
24408 <td class="paramname"><em>data</em></td><td>)</td>
24409 <td></td>
24410 </tr>
24411 </table>
24412</div><div class="memdoc">
24413
24414<p class="definition">Definition at line <a class="el" href="_splitter_8cpp_source.html#l00022">22</a> of file <a class="el" href="_splitter_8cpp_source.html">Splitter.cpp</a>.</p>
24415
24416<p class="reference">References <a class="el" href="classarmnn_1_1_encoder.html#ac729108381e2340bea12877971713ecb">Encoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00091">SplitterQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00096">SplitterQueueDescriptor::m_ViewOrigins</a>, and <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>.</p>
24417
24418<p class="reference">Referenced by <a class="el" href="_ref_splitter_workload_8cpp_source.html#l00014">RefSplitterWorkload::Execute()</a>, and <a class="el" href="_splitter_8hpp_source.html#l00017">Splitter()</a>.</p>
24419<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; std::unique_ptr&lt;Decoder&lt;float&gt;&gt; decoderPtr =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; MakeDecoder&lt;float&gt;(inputInfo, data.m_Inputs[0]-&gt;Map());</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; Decoder&lt;float&gt;&amp; decoder = *decoderPtr;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; inputInfo.GetNumElements(); ++index)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = inputInfo.GetNumElements();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;inputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; dimensionStride /= inputInfo.GetShape()[i];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; indexRemainder -= indices[i] * dimensionStride;</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;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; SplitterQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[viewIdx]);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; BOOST_ASSERT(outputInfo.GetNumDimensions() == inputInfo.GetNumDimensions());</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="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;outputInfo.GetNumDimensions(); i++)</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"> 56</span>&#160; <span class="keywordflow">if</span> (indices[i] &lt; view.m_Origin[i])</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + outputInfo.GetShape()[i])</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; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</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">if</span> (insideView)</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; std::unique_ptr&lt;Encoder&lt;float&gt;&gt; encoderPtr =</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; MakeEncoder&lt;float&gt;(outputInfo, data.m_Outputs[viewIdx]-&gt;Map());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; Encoder&lt;float&gt;&amp; encoder = *encoderPtr;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">float</span> inputValue = 0.f;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = outputInfo.GetNumDimensions(); i-- &gt; 0;)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; outIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; dimensionStride *= outputInfo.GetShape()[i];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</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; decoder += index;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; inputValue = decoder.Get();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; decoder -= index;</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"> 86</span>&#160; encoder += outIndex;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; encoder.Set(inputValue);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
24420<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
24421</div><!-- fragment -->
24422</div>
24423</div>
24424<a id="a427c3d26d05b518b1ace407035f5920e"></a>
24425<h2 class="memtitle"><span class="permalink"><a href="#a427c3d26d05b518b1ace407035f5920e">&#9670;&nbsp;</a></span>Splitter()</h2>
24426
24427<div class="memitem">
24428<div class="memproto">
24429 <table class="memname">
24430 <tr>
24431 <td class="memname">void armnn::Splitter </td>
24432 <td>(</td>
24433 <td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.html">SplitterQueueDescriptor</a> &amp;&#160;</td>
24434 <td class="paramname"><em>data</em></td><td>)</td>
24435 <td></td>
24436 </tr>
24437 </table>
24438</div><div class="memdoc">
24439
24440<p class="definition">Definition at line <a class="el" href="_splitter_8hpp_source.html#l00017">17</a> of file <a class="el" href="_splitter_8hpp_source.html">Splitter.hpp</a>.</p>
24441
24442<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00091">SplitterQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00096">SplitterQueueDescriptor::m_ViewOrigins</a>, <a class="el" href="_types_8hpp_source.html#l00018">MaxNumOfTensorDimensions</a>, and <a class="el" href="_splitter_8cpp_source.html#l00022">Split()</a>.</p>
24443
24444<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02273">BOOST_AUTO_TEST_CASE()</a>.</p>
24445<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo0 = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; inputInfo0.GetNumElements(); ++index)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = inputInfo0.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;inputInfo0.GetNumDimensions(); i++)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; dimensionStride /= inputInfo0.GetShape()[i];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; indexRemainder -= indices[i] * dimensionStride;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SplitterQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[viewIdx]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(outputInfo.GetNumDimensions() == inputInfo0.GetNumDimensions());</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; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;outputInfo.GetNumDimensions(); i++)</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">if</span> (indices[i] &lt; view.m_Origin[i])</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; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + outputInfo.GetShape()[i])</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; insideView = <span class="keyword">false</span>;</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"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (insideView)</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = outputInfo.GetNumDimensions(); i-- &gt; 0;)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; outIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; dimensionStride *= outputInfo.GetShape()[i];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</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; <span class="comment">//We are within the view, to copy input data to the output corresponding to this view.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* outputData = GetOutputTensorData&lt;DataType&gt;(viewIdx, data);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BOOST_ASSERT(outputData);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* inputData = GetInputTensorData&lt;DataType&gt;(0, data);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; BOOST_ASSERT(inputData);</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; outputData[outIndex] = inputData[index];</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"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
24446<div class="ttc" id="namespacearmnn_html_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00018">Types.hpp:18</a></div></div>
24447<div class="ttc" id="namespacearmnn_html_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00032">Types.hpp:32</a></div></div>
24448</div><!-- fragment -->
24449</div>
24450</div>
24451<a id="a6ef2dcac2ec0683d52df1b051404e7d6"></a>
24452<h2 class="memtitle"><span class="permalink"><a href="#a6ef2dcac2ec0683d52df1b051404e7d6">&#9670;&nbsp;</a></span>Stack()</h2>
24453
24454<div class="memitem">
24455<div class="memproto">
24456 <table class="memname">
24457 <tr>
24458 <td class="memname">void Stack </td>
24459 <td>(</td>
24460 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_queue_descriptor.html">StackQueueDescriptor</a> &amp;&#160;</td>
24461 <td class="paramname"><em>data</em>, </td>
24462 </tr>
24463 <tr>
24464 <td class="paramkey"></td>
24465 <td></td>
24466 <td class="paramtype">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt;&gt;&gt; &amp;&#160;</td>
24467 <td class="paramname"><em>inputs</em>, </td>
24468 </tr>
24469 <tr>
24470 <td class="paramkey"></td>
24471 <td></td>
24472 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24473 <td class="paramname"><em>output</em>&#160;</td>
24474 </tr>
24475 <tr>
24476 <td></td>
24477 <td>)</td>
24478 <td></td><td></td>
24479 </tr>
24480 </table>
24481</div><div class="memdoc">
24482
24483<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.html#l00012">12</a> of file <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.html">Stack.cpp</a>.</p>
24484
24485<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.html#l00025">GetTensorInfo()</a>, <a class="el" href="_descriptors_8hpp_source.html#l00972">StackDescriptor::m_Axis</a>, <a class="el" href="_workload_data_8hpp_source.html#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.html#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
24486
24487<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02328">BOOST_AUTO_TEST_CASE()</a>.</p>
24488<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNumDims = outputInfo.GetNumDimensions();</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNumDims = inputInfo.GetNumDimensions();</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&amp; outputDims = outputInfo.GetShape();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&amp; inputDims = inputInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axis = data.m_Parameters.m_Axis;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// Initialise output data</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputElements = 1;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;outputNumDims; ++i)</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; numOutputElements *= outputDims[i];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iNumTensors = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(data.m_Inputs.size());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iBatchSize = inputDims[0];</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iChannels = (inputNumDims &gt; 1) ? inputDims[1] : 1;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iHeight = (inputNumDims &gt; 2) ? inputDims[2] : 1;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iWidth = (inputNumDims &gt; 3) ? inputDims[3] : 1;</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oBatchSize = outputDims[1];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oChannels = (outputNumDims &gt; 2) ? outputDims[2] : 1;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oHeight = (outputNumDims &gt; 3) ? outputDims[3] : 1;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oWidth = (outputNumDims &gt; 4) ? outputDims[4] : 1;</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"> 45</span>&#160; <span class="comment">// Array to store the input coordinates</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// iCoordinates[0] = i, iCoordinates[1] = bi, iCoordinates[2] = ci</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// iCoordinates[3] = hi, iCoordinates[4] = wi, iCoordinates[5] = 0</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// iCoordinates[5] will be always zero and used for not incrementing</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// the output when the input has less than 4 dimensions</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::array&lt;unsigned int, 6&gt; iCoordinates{ 0 };</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="comment">// Array of pointers used to map the output coordinates to the input ones, in accordance with the axis</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// This array is initialized with &amp;iCoordinates[5] since this will be always zero</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::array&lt;unsigned int *, 5&gt; oCoordinates = { &amp;iCoordinates[5],</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;iCoordinates[5] };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// Set the axis coordinate</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; oCoordinates[axis] = &amp;iCoordinates[0];</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"> 63</span>&#160; <span class="comment">// Map the output coordinates, accounting for the axis</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim_shift = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim = 0; dim &lt; inputNumDims; ++dim)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span>(dim == axis)</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; dim_shift++;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; oCoordinates[dim + dim_shift] = &amp;iCoordinates[dim + 1];</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;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Alias for the input coordinates</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;i = iCoordinates[0];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;bi = iCoordinates[1];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;ci = iCoordinates[2];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;hi = iCoordinates[3];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;wi = iCoordinates[4];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Alias for the output coordinates</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;o = *(oCoordinates[0]);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;bo = *(oCoordinates[1]);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;co = *(oCoordinates[2]);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;ho = *(oCoordinates[3]);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;wo = *(oCoordinates[4]);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// Stack tensors</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span>(; i &lt; iNumTensors; ++(i))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span>(bi = 0; bi &lt; iBatchSize; ++(bi))</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; <span class="keywordflow">for</span>(ci = 0; ci &lt; iChannels; ++(ci))</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"> 95</span>&#160; <span class="keywordflow">for</span>(hi = 0; hi &lt; iHeight; ++(hi))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span>(wi = 0; wi &lt; iWidth; ++(wi))</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; output[o * oWidth * oHeight * oChannels * oBatchSize +</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; bo * oWidth * oHeight * oChannels +</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; co * oWidth * oHeight +</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; ho * oWidth +</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; wo];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputs[i]-&gt;Get());</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; ++(*(inputs[i]));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</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; }</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="ttc" id="namespacearmnn_utils_html_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00038">TensorUtils.cpp:38</a></div></div>
24489<div class="ttc" id="classarmnn_1_1_tensor_shape_html"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00020">Tensor.hpp:20</a></div></div>
24490<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
24491</div><!-- fragment -->
24492</div>
24493</div>
24494<a id="a637fea04314a9870c1dc4355c1bed429"></a>
24495<h2 class="memtitle"><span class="permalink"><a href="#a637fea04314a9870c1dc4355c1bed429">&#9670;&nbsp;</a></span>StrEqual()</h2>
24496
24497<div class="memitem">
24498<div class="memproto">
24499 <table class="memname">
24500 <tr>
24501 <td class="memname">constexpr bool armnn::StrEqual </td>
24502 <td>(</td>
24503 <td class="paramtype">const char *&#160;</td>
24504 <td class="paramname"><em>strA</em>, </td>
24505 </tr>
24506 <tr>
24507 <td class="paramkey"></td>
24508 <td></td>
24509 <td class="paramtype">const char(&amp;)&#160;</td>
24510 <td class="paramname"><em>strB</em>[N]&#160;</td>
24511 </tr>
24512 <tr>
24513 <td></td>
24514 <td>)</td>
24515 <td></td><td></td>
24516 </tr>
24517 </table>
24518</div><div class="memdoc">
24519
24520<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00133">133</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
24521
24522<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.html#l00145">ParseComputeDevice()</a>.</p>
24523<div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">bool</span> isEqual = <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; isEqual &amp;&amp; (i &lt; N); ++i)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; isEqual = (strA[i] == strB[i]);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> isEqual;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div></div><!-- fragment -->
24524</div>
24525</div>
24526<a id="a86d7a7168ac00b75b4971f9aad623698"></a>
24527<h2 class="memtitle"><span class="permalink"><a href="#a86d7a7168ac00b75b4971f9aad623698">&#9670;&nbsp;</a></span>StridedSlice()</h2>
24528
24529<div class="memitem">
24530<div class="memproto">
24531 <table class="memname">
24532 <tr>
24533 <td class="memname">void StridedSlice </td>
24534 <td>(</td>
24535 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> &amp;&#160;</td>
24536 <td class="paramname"><em>inputInfo</em>, </td>
24537 </tr>
24538 <tr>
24539 <td class="paramkey"></td>
24540 <td></td>
24541 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">StridedSliceDescriptor</a> &amp;&#160;</td>
24542 <td class="paramname"><em>params</em>, </td>
24543 </tr>
24544 <tr>
24545 <td class="paramkey"></td>
24546 <td></td>
24547 <td class="paramtype">const void *&#160;</td>
24548 <td class="paramname"><em>inputData</em>, </td>
24549 </tr>
24550 <tr>
24551 <td class="paramkey"></td>
24552 <td></td>
24553 <td class="paramtype">void *&#160;</td>
24554 <td class="paramname"><em>outputData</em>, </td>
24555 </tr>
24556 <tr>
24557 <td class="paramkey"></td>
24558 <td></td>
24559 <td class="paramtype">unsigned int&#160;</td>
24560 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
24561 </tr>
24562 <tr>
24563 <td></td>
24564 <td>)</td>
24565 <td></td><td></td>
24566 </tr>
24567 </table>
24568</div><div class="memdoc">
24569
24570<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html#l00090">90</a> of file <a class="el" href="backends_2reference_2workloads_2_strided_slice_8cpp_source.html">StridedSlice.cpp</a>.</p>
24571
24572<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
24573
24574<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.html#l02395">BOOST_AUTO_TEST_CASE()</a>.</p>
24575<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* input = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(inputData);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* output = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(outputData);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> TensorShape inputShape = ExtendShape(inputInfo.GetShape(), 4);</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; StridedSliceDescriptor paddedParams = params;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// Pad parameters to 4 dimensions</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; PadParams(paddedParams, 4);</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; <span class="keyword">const</span> <span class="keywordtype">int</span> start0 = paddedParams.GetStartForAxis(inputShape, 0);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop0 = paddedParams.GetStopForAxis (inputShape, 0, start0);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start1 = paddedParams.GetStartForAxis(inputShape, 1);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop1 = paddedParams.GetStopForAxis (inputShape, 1, start1);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start2 = paddedParams.GetStartForAxis(inputShape, 2);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop2 = paddedParams.GetStopForAxis (inputShape, 2, start2);</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"> 115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start3 = paddedParams.GetStartForAxis(inputShape, 3);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop3 = paddedParams.GetStopForAxis (inputShape, 3, start3);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(dataTypeSize);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in0 = start0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; !LoopCondition(in0, stop0, paddedParams.m_Stride[0]);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; in0 += paddedParams.m_Stride[0])</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; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in1 = start1;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; !LoopCondition(in1, stop1, paddedParams.m_Stride[1]);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; in1 += paddedParams.m_Stride[1])</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in2 = start2;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; !LoopCondition(in2, stop2, paddedParams.m_Stride[2]);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; in2 += paddedParams.m_Stride[2])</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in3 = start3;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; !LoopCondition(in3, stop3, paddedParams.m_Stride[3]);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; in3 += paddedParams.m_Stride[3])</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">int</span> dim1 = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputShape[1]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">int</span> dim2 = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputShape[2]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">int</span> dim3 = boost::numeric_cast&lt;<span class="keywordtype">int</span>&gt;(inputShape[3]);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">int</span> inputOffset = (((in0 * dim1 + in1) * dim2 + in2) * dim3 + in3) * step;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; ::memcpy(output, input + inputOffset, dataTypeSize);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; output += step;</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"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div></div><!-- fragment -->
24576</div>
24577</div>
24578<a id="a14d7f180bf51e86850305965c3707e07"></a>
24579<h2 class="memtitle"><span class="permalink"><a href="#a14d7f180bf51e86850305965c3707e07">&#9670;&nbsp;</a></span>swap() <span class="overload">[1/2]</span></h2>
24580
24581<div class="memitem">
24582<div class="memproto">
24583 <table class="memname">
24584 <tr>
24585 <td class="memname">void armnn::swap </td>
24586 <td>(</td>
24587 <td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
24588 <td class="paramname"><em>first</em>, </td>
24589 </tr>
24590 <tr>
24591 <td class="paramkey"></td>
24592 <td></td>
24593 <td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.html">OriginsDescriptor</a> &amp;&#160;</td>
24594 <td class="paramname"><em>second</em>&#160;</td>
24595 </tr>
24596 <tr>
24597 <td></td>
24598 <td>)</td>
24599 <td></td><td></td>
24600 </tr>
24601 </table>
24602</div><div class="memdoc">
24603
24604<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.html#l00342">342</a> of file <a class="el" href="_descriptors_8cpp_source.html">Descriptors.cpp</a>.</p>
24605
24606<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00351">ViewsDescriptor::swap</a>, and <a class="el" href="_descriptors_8cpp_source.html#l00351">swap()</a>.</p>
24607
24608<p class="reference">Referenced by <a class="el" href="_fully_connected_test_impl_8cpp_source.html#l00247">FullyConnectedFloat32Test()</a>, <a class="el" href="_fully_connected_test_impl_8cpp_source.html#l00148">FullyConnectedLargeTestCommon()</a>, <a class="el" href="_backend_id_8hpp_source.html#l00102">BackendId::operator=()</a>, <a class="el" href="_squash_equal_siblings_8hpp_source.html#l00024">SquashEqualSiblingsImpl&lt; Comparable &gt;::Run()</a>, and <a class="el" href="_backend_registry_8cpp_source.html#l00093">BackendRegistry::Swap()</a>.</p>
24609<div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">using</span> <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">std::swap</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_NumViews, second.m_NumViews);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_NumDimensions, second.m_NumDimensions);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ViewOrigins, second.m_ViewOrigins);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ConcatAxis, second.m_ConcatAxis);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a686b8288a04b3ffff67d560eea53f6be"><div class="ttname"><a href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">armnn::swap</a></div><div class="ttdeci">void swap(ViewsDescriptor &amp;first, ViewsDescriptor &amp;second)</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00351">Descriptors.cpp:351</a></div></div>
24610</div><!-- fragment -->
24611</div>
24612</div>
24613<a id="a686b8288a04b3ffff67d560eea53f6be"></a>
24614<h2 class="memtitle"><span class="permalink"><a href="#a686b8288a04b3ffff67d560eea53f6be">&#9670;&nbsp;</a></span>swap() <span class="overload">[2/2]</span></h2>
24615
24616<div class="memitem">
24617<div class="memproto">
24618 <table class="memname">
24619 <tr>
24620 <td class="memname">void armnn::swap </td>
24621 <td>(</td>
24622 <td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
24623 <td class="paramname"><em>first</em>, </td>
24624 </tr>
24625 <tr>
24626 <td class="paramkey"></td>
24627 <td></td>
24628 <td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.html">ViewsDescriptor</a> &amp;&#160;</td>
24629 <td class="paramname"><em>second</em>&#160;</td>
24630 </tr>
24631 <tr>
24632 <td></td>
24633 <td>)</td>
24634 <td></td><td></td>
24635 </tr>
24636 </table>
24637</div><div class="memdoc">
24638
24639<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.html#l00351">351</a> of file <a class="el" href="_descriptors_8cpp_source.html">Descriptors.cpp</a>.</p>
24640
24641<p class="reference">References <a class="el" href="_descriptors_8cpp_source.html#l00351">ViewsDescriptor::swap</a>.</p>
24642
24643<p class="reference">Referenced by <a class="el" href="_descriptors_8cpp_source.html#l00342">swap()</a>.</p>
24644<div class="fragment"><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">using</span> <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">std::swap</a>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_Origins, second.m_Origins);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ViewSizes, second.m_ViewSizes);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a686b8288a04b3ffff67d560eea53f6be"><div class="ttname"><a href="namespacearmnn.html#a686b8288a04b3ffff67d560eea53f6be">armnn::swap</a></div><div class="ttdeci">void swap(ViewsDescriptor &amp;first, ViewsDescriptor &amp;second)</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00351">Descriptors.cpp:351</a></div></div>
24645</div><!-- fragment -->
24646</div>
24647</div>
24648<a id="a14cfd39cfc30682fa821ade3dd298426"></a>
24649<h2 class="memtitle"><span class="permalink"><a href="#a14cfd39cfc30682fa821ade3dd298426">&#9670;&nbsp;</a></span>TestQuantizeConvolution2d()</h2>
24650
24651<div class="memitem">
24652<div class="memproto">
24653 <table class="memname">
24654 <tr>
24655 <td class="memname">void armnn::TestQuantizeConvolution2d </td>
24656 <td>(</td>
24657 <td class="paramtype">bool&#160;</td>
24658 <td class="paramname"><em>useBiases</em></td><td>)</td>
24659 <td></td>
24660 </tr>
24661 </table>
24662</div><div class="memdoc">
24663
24664<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01046">1046</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
24665
24666<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
24667
24668<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01122">BOOST_AUTO_TEST_CASE()</a>.</p>
24669<div class="fragment"><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;{</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">class </span>TestConv2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; {</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; TestConv2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; TestConv2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</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="keywordtype">void</span> VisitConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keyword">const</span> Convolution2dDescriptor&amp; convolution2dDescriptor,</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; boost::ignore_unused(convolution2dDescriptor, name);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; };</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; TensorShape shape{3U};</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; ConstTensor weights(info, weightsData);</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; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; descriptor.m_BiasEnabled = useBiases;</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; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; IConnectableLayer* conv2d;</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; std::vector&lt;float&gt; biasesData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">if</span> (useBiases)</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; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; conv2d = network-&gt;AddConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; input0-&gt;GetOutputSlot(0).Connect(conv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; conv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; conv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; TestConv2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; TestConv2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; TestConv2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; TestConv2dQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
24670<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
24671<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
24672<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
24673</div><!-- fragment -->
24674</div>
24675</div>
24676<a id="a5abbe8a9ee003c1379a921dbe2745b81"></a>
24677<h2 class="memtitle"><span class="permalink"><a href="#a5abbe8a9ee003c1379a921dbe2745b81">&#9670;&nbsp;</a></span>TestQuantizeDepthwiseConvolution2d()</h2>
24678
24679<div class="memitem">
24680<div class="memproto">
24681 <table class="memname">
24682 <tr>
24683 <td class="memname">void armnn::TestQuantizeDepthwiseConvolution2d </td>
24684 <td>(</td>
24685 <td class="paramtype">bool&#160;</td>
24686 <td class="paramname"><em>useBiases</em></td><td>)</td>
24687 <td></td>
24688 </tr>
24689 </table>
24690</div><div class="memdoc">
24691
24692<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l01132">1132</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
24693
24694<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
24695
24696<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01208">BOOST_AUTO_TEST_CASE()</a>.</p>
24697<div class="fragment"><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;{</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">class </span>TestDepthwiseConv2dQuantization : <span class="keyword">public</span> TestQuantization</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="keyword">public</span>:</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; TestDepthwiseConv2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; TestDepthwiseConv2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</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; <span class="keywordtype">void</span> VisitDepthwiseConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> DepthwiseConvolution2dDescriptor&amp; convolution2dDescriptor,</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; boost::ignore_unused(convolution2dDescriptor, name);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</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; };</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; TensorShape shape{3U};</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; ConstTensor weights(info, weightsData);</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; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; descriptor.m_BiasEnabled = useBiases;</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">// Add the layers</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; IConnectableLayer* depthwiseConv2d;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; std::vector&lt;float&gt; biasesData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (useBiases)</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</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; depthwiseConv2d = network-&gt;AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</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="comment">// Establish connections</span></div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; input0-&gt;GetOutputSlot(0).Connect(depthwiseConv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; depthwiseConv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">//Set TensorInfo</span></div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; depthwiseConv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; TestDepthwiseConv2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; TestDepthwiseConv2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; TestDepthwiseConv2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; TestDepthwiseConv2dQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
24698<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
24699<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
24700<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
24701</div><!-- fragment -->
24702</div>
24703</div>
24704<a id="afa7a0a639e2772ff2ced67d77be810c0"></a>
24705<h2 class="memtitle"><span class="permalink"><a href="#afa7a0a639e2772ff2ced67d77be810c0">&#9670;&nbsp;</a></span>TestQuantizeTransposeConvolution2d()</h2>
24706
24707<div class="memitem">
24708<div class="memproto">
24709 <table class="memname">
24710 <tr>
24711 <td class="memname">void armnn::TestQuantizeTransposeConvolution2d </td>
24712 <td>(</td>
24713 <td class="paramtype">bool&#160;</td>
24714 <td class="paramname"><em>useBiases</em></td><td>)</td>
24715 <td></td>
24716 </tr>
24717 </table>
24718</div><div class="memdoc">
24719
24720<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l02488">2488</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
24721
24722<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.html#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.html#l00048">INetwork::Create()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.html#l01117">TransposeConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
24723
24724<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l02568">BOOST_AUTO_TEST_CASE()</a>.</p>
24725<div class="fragment"><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;{</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <span class="keyword">class </span>TestTransposeConvolution2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; TestTransposeConvolution2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; TestQuantization(inputShape, outputShape)</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;</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; TestTransposeConvolution2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; TestQuantization(options, inputShape, outputShape)</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;</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; <span class="keywordtype">void</span> VisitTransposeConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; <span class="keyword">const</span> TransposeConvolution2dDescriptor&amp; descriptor,</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; boost::ignore_unused(descriptor, name);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</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"> 2513</span>&#160;</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; TensorShape shape{ 3 };</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; TensorInfo <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</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; std::initializer_list&lt;float&gt; floatData{ -1.0f, 1.5f, 2.0f };</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; std::vector&lt;float&gt; weightsData(floatData);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; TransposeConvolution2dDescriptor descriptor;</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; descriptor.m_BiasEnabled = useBiases;</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"> 2526</span>&#160; <span class="comment">// construct network</span></div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; std::vector&lt;float&gt; biasesData(floatData);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; <span class="keywordflow">if</span> (useBiases)</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; {</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</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; IConnectableLayer* transposeConv2d = network-&gt;AddTransposeConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160;</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; input-&gt;GetOutputSlot(0).Connect(transposeConv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; transposeConv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; transposeConv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; TestTransposeConvolution2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; <span class="comment">//test QAsymmS8 quantization</span></div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; TestTransposeConvolution2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; TestTransposeConvolution2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; TestTransposeConvolution2dQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
24726<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
24727<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
24728<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
24729</div><!-- fragment -->
24730</div>
24731</div>
24732<a id="a2748f45e58b1c612d473043f711d1434"></a>
24733<h2 class="memtitle"><span class="permalink"><a href="#a2748f45e58b1c612d473043f711d1434">&#9670;&nbsp;</a></span>TopKSort()</h2>
24734
24735<div class="memitem">
24736<div class="memproto">
24737 <table class="memname">
24738 <tr>
24739 <td class="memname">void TopKSort </td>
24740 <td>(</td>
24741 <td class="paramtype">unsigned int&#160;</td>
24742 <td class="paramname"><em>k</em>, </td>
24743 </tr>
24744 <tr>
24745 <td class="paramkey"></td>
24746 <td></td>
24747 <td class="paramtype">unsigned int *&#160;</td>
24748 <td class="paramname"><em>indices</em>, </td>
24749 </tr>
24750 <tr>
24751 <td class="paramkey"></td>
24752 <td></td>
24753 <td class="paramtype">const float *&#160;</td>
24754 <td class="paramname"><em>values</em>, </td>
24755 </tr>
24756 <tr>
24757 <td class="paramkey"></td>
24758 <td></td>
24759 <td class="paramtype">unsigned int&#160;</td>
24760 <td class="paramname"><em>numElement</em>&#160;</td>
24761 </tr>
24762 <tr>
24763 <td></td>
24764 <td>)</td>
24765 <td></td><td></td>
24766 </tr>
24767 </table>
24768</div><div class="memdoc">
24769
24770<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00025">25</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html">DetectionPostProcess.cpp</a>.</p>
24771
24772<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.html#l00015">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00141">DetectionPostProcess()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.html#l00050">NonMaxSuppression()</a>.</p>
24773<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; std::partial_sort(indices, indices + k, indices + numElement,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; [&amp;values](<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> values[i] &gt; values[j]; });</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
24774</div>
24775</div>
24776<a id="affec174d91f234497dfbceba5e251dee"></a>
24777<h2 class="memtitle"><span class="permalink"><a href="#affec174d91f234497dfbceba5e251dee">&#9670;&nbsp;</a></span>TransposeConvolution2dImpl()</h2>
24778
24779<div class="memitem">
24780<div class="memproto">
24781 <table class="memname">
24782 <tr>
24783 <td class="memname">void TransposeConvolution2dImpl </td>
24784 <td>(</td>
24785 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.html">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
24786 <td class="paramname"><em>descriptor</em>, </td>
24787 </tr>
24788 <tr>
24789 <td class="paramkey"></td>
24790 <td></td>
24791 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
24792 <td class="paramname"><em>inputShape</em>, </td>
24793 </tr>
24794 <tr>
24795 <td class="paramkey"></td>
24796 <td></td>
24797 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24798 <td class="paramname"><em>inputDecoder</em>, </td>
24799 </tr>
24800 <tr>
24801 <td class="paramkey"></td>
24802 <td></td>
24803 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
24804 <td class="paramname"><em>outputShape</em>, </td>
24805 </tr>
24806 <tr>
24807 <td class="paramkey"></td>
24808 <td></td>
24809 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.html">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24810 <td class="paramname"><em>outputEncoder</em>, </td>
24811 </tr>
24812 <tr>
24813 <td class="paramkey"></td>
24814 <td></td>
24815 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> &amp;&#160;</td>
24816 <td class="paramname"><em>weightsShape</em>, </td>
24817 </tr>
24818 <tr>
24819 <td class="paramkey"></td>
24820 <td></td>
24821 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24822 <td class="paramname"><em>weightsDecoder</em>, </td>
24823 </tr>
24824 <tr>
24825 <td class="paramkey"></td>
24826 <td></td>
24827 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.html">Decoder</a>&lt; float &gt; *&#160;</td>
24828 <td class="paramname"><em>biasesDecoder</em>&#160;</td>
24829 </tr>
24830 <tr>
24831 <td></td>
24832 <td>)</td>
24833 <td></td><td></td>
24834 </tr>
24835 </table>
24836</div><div class="memdoc">
24837
24838<p class="definition">Definition at line <a class="el" href="_transpose_convolution2d_8cpp_source.html#l00015">15</a> of file <a class="el" href="_transpose_convolution2d_8cpp_source.html">TransposeConvolution2d.cpp</a>.</p>
24839
24840<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8cpp_source.html#l00106">TensorShape::GetNumElements()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.html#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.html#l01117">TransposeConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.html#l01119">TransposeConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.html#l01105">TransposeConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.html#l01109">TransposeConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.html#l01113">TransposeConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.html#l01115">TransposeConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">BaseIterator::SetIndex()</a>.</p>
24841
24842<p class="reference">Referenced by <a class="el" href="_ref_transpose_convolution2d_workload_8cpp_source.html#l00053">RefTransposeConvolution2dWorkload::Execute()</a>.</p>
24843<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled &amp;&amp; !biasesDecoder)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Biases enabled but no bias data provided&quot;</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> dataLayoutIndexed(descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelsIndex = dataLayoutIndexed.GetChannelsIndex();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> heightIndex = dataLayoutIndexed.GetHeightIndex();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> widthIndex = dataLayoutIndexed.GetWidthIndex();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numBatches = inputShape[0];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[widthIndex];</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[heightIndex];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputDepth = inputShape[channelsIndex];</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsHeight = weightsShape[heightIndex];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsWidth = weightsShape[widthIndex];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[heightIndex];</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[widthIndex];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputDepth = outputShape[channelsIndex];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingLeft = descriptor.m_PadLeft;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingTop = descriptor.m_PadTop;</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideX = descriptor.m_StrideX;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideY = descriptor.m_StrideY;</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; std::vector&lt;float&gt; outputBuffer(outputShape.GetNumElements(), 0);</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batch = 0u; batch &lt; numBatches; ++batch)</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"> 56</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yInput = 0u; yInput &lt; inputHeight; ++yInput)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xInput = 0u; xInput &lt; inputWidth; ++xInput)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutputOrigin = xInput * strideX - paddingLeft;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutputOrigin = yInput * strideY - paddingTop;</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"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dOutput = 0u; dOutput &lt; outputDepth; ++dOutput)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yWeights = 0u; yWeights &lt; weightsHeight; ++yWeights)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xWeights = 0u; xWeights &lt; weightsWidth; ++xWeights)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = yOutputOrigin + yWeights;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = xOutputOrigin + xWeights;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (yOutput &lt; outputHeight &amp;&amp; xOutput&lt; outputWidth)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dInput = 0u; dInput &lt; inputDepth; dInput++)</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex =</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; dataLayoutIndexed.GetIndex(inputShape, batch, dInput, yInput, xInput);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; inputDecoder[inputIndex];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsIndex =</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; dataLayoutIndexed.GetIndex(weightsShape, dOutput, dInput, yWeights, xWeights);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; weightsDecoder.<a class="code" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(weightsIndex, dOutput);</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex =</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outputEncoder[outputIndex];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">float</span> output = outputBuffer[outputIndex];</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; output += inputDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>() * weightsDecoder.<a class="code" href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; outputBuffer[outputIndex] = output;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</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"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</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; <span class="comment">// Apply bias (if enabled)</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; outputEncoder[0];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; Decoder&lt;float&gt;&amp; rBiasesDecoder = *biasesDecoder;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batch = 0u; batch &lt; numBatches; ++batch)</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"> 108</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dOutput = 0u; dOutput &lt; outputDepth; ++dOutput)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; rBiasesDecoder.<a class="code" href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(dOutput, dOutput);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = 0u; yOutput &lt; outputHeight; ++yOutput)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = 0u; xOutput &lt; outputWidth; ++xOutput)</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"> 115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex =</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; outputBuffer[outputIndex] += rBiasesDecoder.Get();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</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; }</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; outputEncoder[0];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">float</span> output : outputBuffer)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">Set</a>(output);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ++outputEncoder;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_base_iterator_html_a1ec75b077d774dbfebf3662e8e4363c9"><div class="ttname"><a href="classarmnn_1_1_base_iterator.html#a1ec75b077d774dbfebf3662e8e4363c9">armnn::BaseIterator::SetIndex</a></div><div class="ttdeci">virtual BaseIterator &amp; SetIndex(unsigned int index, unsigned int axisIndex=0)=0</div></div>
24844<div class="ttc" id="classarmnn_1_1_decoder_html_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.html#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
24845<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_html"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.html">armnnUtils::DataLayoutIndexed</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.html#l00017">DataLayoutIndexed.hpp:17</a></div></div>
24846<div class="ttc" id="classarmnn_1_1_encoder_html_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.html#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
24847</div><!-- fragment -->
24848</div>
24849</div>
24850<a id="aeaee60c3c6c67a7cf37bbef45b89fc0a"></a>
24851<h2 class="memtitle"><span class="permalink"><a href="#aeaee60c3c6c67a7cf37bbef45b89fc0a">&#9670;&nbsp;</a></span>TrueFunc()</h2>
24852
24853<div class="memitem">
24854<div class="memproto">
24855 <table class="memname">
24856 <tr>
24857 <td class="memname">bool armnn::TrueFunc </td>
24858 <td>(</td>
24859 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.html">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
24860 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
24861 </tr>
24862 <tr>
24863 <td class="paramkey"></td>
24864 <td></td>
24865 <td class="paramtype">Params &amp;&amp;...&#160;</td>
24866 <td class="paramname"><em>params</em>&#160;</td>
24867 </tr>
24868 <tr>
24869 <td></td>
24870 <td>)</td>
24871 <td></td><td></td>
24872 </tr>
24873 </table>
24874</div><div class="memdoc">
24875
24876<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.html#l00055">55</a> of file <a class="el" href="_layer_support_common_8hpp_source.html">LayerSupportCommon.hpp</a>.</p>
24877<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; boost::ignore_unused(reasonIfUnsupported);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; boost::ignore_unused(params...);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div></div><!-- fragment -->
24878</div>
24879</div>
24880<a id="a245661fc96c9c4a9b898e1d98c8c6962"></a>
24881<h2 class="memtitle"><span class="permalink"><a href="#a245661fc96c9c4a9b898e1d98c8c6962">&#9670;&nbsp;</a></span>ValidateFullyConnectedLayer()</h2>
24882
24883<div class="memitem">
24884<div class="memproto">
24885 <table class="memname">
24886 <tr>
24887 <td class="memname">void armnn::ValidateFullyConnectedLayer </td>
24888 <td>(</td>
24889 <td class="paramtype">const bool&#160;</td>
24890 <td class="paramname"><em>biasEnabled</em></td><td>)</td>
24891 <td></td>
24892 </tr>
24893 </table>
24894</div><div class="memdoc">
24895
24896<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00989">989</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
24897
24898<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.html#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00951">CreateNetworkWithFullyConnectedLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
24899
24900<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l01036">BOOST_AUTO_TEST_CASE()</a>.</p>
24901<div class="fragment"><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; <span class="keyword">class </span>TestFullyConnectedQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; TestFullyConnectedQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; TestFullyConnectedQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordtype">void</span> VisitFullyConnectedLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keyword">const</span> FullyConnectedDescriptor&amp; desc,</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; boost::ignore_unused(desc, name);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; }</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;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.html#aad4b8cb9a4d882a48bc21510f0d1a938">CreateNetworkWithFullyConnectedLayer</a>(biasEnabled, shape, shape);</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; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; TestFullyConnectedQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; TestFullyConnectedQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; TestFullyConnectedQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <a class="code" href="namespacearmnn.html#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; TestFullyConnectedQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <a class="code" href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_aad4b8cb9a4d882a48bc21510f0d1a938"><div class="ttname"><a href="namespacearmnn.html#aad4b8cb9a4d882a48bc21510f0d1a938">armnn::CreateNetworkWithFullyConnectedLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithFullyConnectedLayer(const bool biasEnabled, const TensorShape &amp;inputShape, const TensorShape &amp;outputShape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00951">QuantizerTest.cpp:951</a></div></div>
24902<div class="ttc" id="namespacearmnn_html_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.html#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.html#l00193">QuantizerTest.cpp:193</a></div></div>
24903<div class="ttc" id="namespacearmnn_html_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.html#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.html#l00085">INetwork.hpp:85</a></div></div>
24904<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_html_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.html#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
24905</div><!-- fragment -->
24906</div>
24907</div>
24908<a id="a9667bea652e3a5ef81fea59b71513ced"></a>
24909<h2 class="memtitle"><span class="permalink"><a href="#a9667bea652e3a5ef81fea59b71513ced">&#9670;&nbsp;</a></span>VerifyTensorInfoDataType()</h2>
24910
24911<div class="memitem">
24912<div class="memproto">
24913<table class="mlabels">
24914 <tr>
24915 <td class="mlabels-left">
24916 <table class="memname">
24917 <tr>
24918 <td class="memname">void armnn::VerifyTensorInfoDataType </td>
24919 <td>(</td>
24920 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
24921 <td class="paramname"><em>info</em>, </td>
24922 </tr>
24923 <tr>
24924 <td class="paramkey"></td>
24925 <td></td>
24926 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&#160;</td>
24927 <td class="paramname"><em>dataType</em>&#160;</td>
24928 </tr>
24929 <tr>
24930 <td></td>
24931 <td>)</td>
24932 <td></td><td></td>
24933 </tr>
24934 </table>
24935 </td>
24936 <td class="mlabels-right">
24937<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24938 </tr>
24939</table>
24940</div><div class="memdoc">
24941
24942<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.html#l00292">292</a> of file <a class="el" href="_types_utils_8hpp_source.html">TypesUtils.hpp</a>.</p>
24943
24944<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00165">GetDataTypeName()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00088">TensorInfo::GetShape()</a>.</p>
24945
24946<p class="reference">Referenced by <a class="el" href="_parser_flatbuffers_serialize_fixture_8hpp_source.html#l00203">ParserFlatbuffersSerializeFixture::RunTest()</a>, and <a class="el" href="_parser_flatbuffers_fixture_8hpp_source.html#l00250">ParserFlatbuffersFixture::RunTest()</a>.</p>
24947<div class="fragment"><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;{</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (info.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>() != dataType)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;Unexpected datatype:&quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(info.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>())</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; &lt;&lt; <span class="stringliteral">&quot; for tensor:&quot;</span> &lt;&lt; info.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; &lt;&lt; <span class="stringliteral">&quot;. The type expected to be: &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(dataType);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(ss.str());</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_html"><div class="ttname"><a href="classarmnn_1_1_exception.html">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00046">Exceptions.hpp:46</a></div></div>
24948<div class="ttc" id="classarmnn_1_1_tensor_info_html_aea909c7327109228ef618d459015def3"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">armnn::TensorInfo::GetDataType</a></div><div class="ttdeci">DataType GetDataType() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00095">Tensor.hpp:95</a></div></div>
24949<div class="ttc" id="classarmnn_1_1_tensor_info_html_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#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.html#l00088">Tensor.hpp:88</a></div></div>
24950<div class="ttc" id="namespacearmnn_html_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.html#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.html#l00165">TypesUtils.hpp:165</a></div></div>
24951</div><!-- fragment -->
24952</div>
24953</div>
24954<a id="a9835ef753dda5b5a2fe827680e41fda7"></a>
24955<h2 class="memtitle"><span class="permalink"><a href="#a9835ef753dda5b5a2fe827680e41fda7">&#9670;&nbsp;</a></span>VisitLayers()</h2>
24956
24957<div class="memitem">
24958<div class="memproto">
24959 <table class="memname">
24960 <tr>
24961 <td class="memname">void armnn::VisitLayers </td>
24962 <td>(</td>
24963 <td class="paramtype">const LayerContainer &amp;&#160;</td>
24964 <td class="paramname"><em>layerContainer</em>, </td>
24965 </tr>
24966 <tr>
24967 <td class="paramkey"></td>
24968 <td></td>
24969 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;&#160;</td>
24970 <td class="paramname"><em>visitor</em>&#160;</td>
24971 </tr>
24972 <tr>
24973 <td></td>
24974 <td>)</td>
24975 <td></td><td></td>
24976 </tr>
24977 </table>
24978</div><div class="memdoc">
24979
24980<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">50</a> of file <a class="el" href="_network_quantizer_utils_8hpp_source.html">NetworkQuantizerUtils.hpp</a>.</p>
24981
24982<p class="reference">References <a class="el" href="_i_layer_visitor_8hpp_source.html#l00498">ILayerVisitor::FinishVisit()</a>, and <a class="el" href="_i_layer_visitor_8hpp_source.html#l00497">ILayerVisitor::StartVisit()</a>.</p>
24983
24984<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00871">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00136">NetworkQuantizer::ExportNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00050">NetworkQuantizer::OverrideInputRange()</a>, <a class="el" href="_network_quantizer_8cpp_source.html#l00060">NetworkQuantizer::Refine()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
24985<div class="fragment"><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; visitor.StartVisit();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> layer : layerContainer)</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; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; visitor.FinishVisit();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div></div><!-- fragment -->
24986</div>
24987</div>
24988<a id="a6482907b4c57873e197324f5cb66fd4d"></a>
24989<h2 class="memtitle"><span class="permalink"><a href="#a6482907b4c57873e197324f5cb66fd4d">&#9670;&nbsp;</a></span>VisitLayersTopologically()</h2>
24990
24991<div class="memitem">
24992<div class="memproto">
24993 <table class="memname">
24994 <tr>
24995 <td class="memname">void armnn::VisitLayersTopologically </td>
24996 <td>(</td>
24997 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.html">INetwork</a> *&#160;</td>
24998 <td class="paramname"><em>inputNetwork</em>, </td>
24999 </tr>
25000 <tr>
25001 <td class="paramkey"></td>
25002 <td></td>
25003 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.html">ILayerVisitor</a> &amp;&#160;</td>
25004 <td class="paramname"><em>visitor</em>&#160;</td>
25005 </tr>
25006 <tr>
25007 <td></td>
25008 <td>)</td>
25009 <td></td><td></td>
25010 </tr>
25011 </table>
25012</div><div class="memdoc">
25013
25014<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00193">193</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
25015
25016<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.html#l00035">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00033">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00037">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l00036">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.html#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.html#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.html#l00045">options</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.html#l00050">VisitLayers()</a>.</p>
25017
25018<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l02817">PreserveTypeTestImpl()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01046">TestQuantizeConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l01132">TestQuantizeDepthwiseConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.html#l02488">TestQuantizeTransposeConvolution2d()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00989">ValidateFullyConnectedLayer()</a>.</p>
25019<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">auto</span> network = boost::polymorphic_downcast&lt;const Network*&gt;(inputNetwork);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">auto</span> graph = network-&gt;GetGraph().TopologicalSort();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(graph, visitor);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="ttc" id="namespacearmnn_html_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.html#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.html#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
25020</div><!-- fragment -->
25021</div>
25022</div>
25023<a id="a2192b5ff59aacdb27f8b0238323915dc"></a>
25024<h2 class="memtitle"><span class="permalink"><a href="#a2192b5ff59aacdb27f8b0238323915dc">&#9670;&nbsp;</a></span>WrapClError()</h2>
25025
25026<div class="memitem">
25027<div class="memproto">
25028<table class="mlabels">
25029 <tr>
25030 <td class="mlabels-left">
25031 <table class="memname">
25032 <tr>
25033 <td class="memname"><a class="el" href="classarmnn_1_1_runtime_exception.html">RuntimeException</a> armnn::WrapClError </td>
25034 <td>(</td>
25035 <td class="paramtype">const <a class="el" href="namespacearmnn.html#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a> &amp;&#160;</td>
25036 <td class="paramname"><em>clError</em>, </td>
25037 </tr>
25038 <tr>
25039 <td class="paramkey"></td>
25040 <td></td>
25041 <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;&#160;</td>
25042 <td class="paramname"><em>location</em>&#160;</td>
25043 </tr>
25044 <tr>
25045 <td></td>
25046 <td>)</td>
25047 <td></td><td></td>
25048 </tr>
25049 </table>
25050 </td>
25051 <td class="mlabels-right">
25052<span class="mlabels"><span class="mlabel">inline</span></span> </td>
25053 </tr>
25054</table>
25055</div><div class="memdoc">
25056
25057<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.html#l00123">123</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.html">ClWorkloadUtils.hpp</a>.</p>
25058
25059<p class="reference">References <a class="el" href="_exceptions_8cpp_source.html#l00032">Exception::what()</a>.</p>
25060
25061<p class="reference">Referenced by <a class="el" href="_cl_workload_factory_8cpp_source.html#l00045">ClWorkloadFactory::GetBackendId()</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.html#l00131">RunClFunction()</a>.</p>
25062<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; std::stringstream message;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; message &lt;&lt; <span class="stringliteral">&quot;CL error: &quot;</span> &lt;&lt; clError.what() &lt;&lt; <span class="stringliteral">&quot;. Error code: &quot;</span> &lt;&lt; clError.err();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> RuntimeException(message.str(), location);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div></div><!-- fragment -->
25063</div>
25064</div>
25065<h2 class="groupheader">Variable Documentation</h2>
25066<a id="aacc0d11e271ebbfcff9d613dd17604aa"></a>
25067<h2 class="memtitle"><span class="permalink"><a href="#aacc0d11e271ebbfcff9d613dd17604aa">&#9670;&nbsp;</a></span>g_AggregateProfilingEventsByInference</h2>
25068
25069<div class="memitem">
25070<div class="memproto">
25071 <table class="memname">
25072 <tr>
25073 <td class="memname">constexpr bool g_AggregateProfilingEventsByInference = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
25074 </tr>
25075 </table>
25076</div><div class="memdoc">
25077
25078<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00038">38</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
25079
25080</div>
25081</div>
25082<a id="a09bdfaa922d72ce0d9ec014dfa8f8c95"></a>
25083<h2 class="memtitle"><span class="permalink"><a href="#a09bdfaa922d72ce0d9ec014dfa8f8c95">&#9670;&nbsp;</a></span>g_AsymmS8QuantizationBase</h2>
25084
25085<div class="memitem">
25086<div class="memproto">
25087 <table class="memname">
25088 <tr>
25089 <td class="memname">const float g_AsymmS8QuantizationBase = 255.0f</td>
25090 </tr>
25091 </table>
25092</div><div class="memdoc">
25093
25094<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00035">35</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
25095
25096<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
25097
25098</div>
25099</div>
25100<a id="a19994153bdbd7710f0af3973403bc4cc"></a>
25101<h2 class="memtitle"><span class="permalink"><a href="#a19994153bdbd7710f0af3973403bc4cc">&#9670;&nbsp;</a></span>g_AsymmU8QuantizationBase</h2>
25102
25103<div class="memitem">
25104<div class="memproto">
25105 <table class="memname">
25106 <tr>
25107 <td class="memname">const float g_AsymmU8QuantizationBase = 255.0f</td>
25108 </tr>
25109 </table>
25110</div><div class="memdoc">
25111
25112<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00033">33</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
25113
25114<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
25115
25116</div>
25117</div>
25118<a id="a43ecd194778b7653578044060ba8695e"></a>
25119<h2 class="memtitle"><span class="permalink"><a href="#a43ecd194778b7653578044060ba8695e">&#9670;&nbsp;</a></span>g_ProfilingEventCountHint</h2>
25120
25121<div class="memitem">
25122<div class="memproto">
25123 <table class="memname">
25124 <tr>
25125 <td class="memname">constexpr std::size_t g_ProfilingEventCountHint = 1024</td>
25126 </tr>
25127 </table>
25128</div><div class="memdoc">
25129
25130<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00030">30</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
25131
25132</div>
25133</div>
25134<a id="a1465480794787d2278d3f0d2e6d887b4"></a>
25135<h2 class="memtitle"><span class="permalink"><a href="#a1465480794787d2278d3f0d2e6d887b4">&#9670;&nbsp;</a></span>g_SymmS16QuantizationBase</h2>
25136
25137<div class="memitem">
25138<div class="memproto">
25139 <table class="memname">
25140 <tr>
25141 <td class="memname">const float g_SymmS16QuantizationBase = 32767.0f</td>
25142 </tr>
25143 </table>
25144</div><div class="memdoc">
25145
25146<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00037">37</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
25147
25148<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
25149
25150</div>
25151</div>
25152<a id="acd7f8820d124166a38c95bc8ad38811b"></a>
25153<h2 class="memtitle"><span class="permalink"><a href="#acd7f8820d124166a38c95bc8ad38811b">&#9670;&nbsp;</a></span>g_SymmS8QuantizationBase</h2>
25154
25155<div class="memitem">
25156<div class="memproto">
25157 <table class="memname">
25158 <tr>
25159 <td class="memname">const float g_SymmS8QuantizationBase = 127.0f</td>
25160 </tr>
25161 </table>
25162</div><div class="memdoc">
25163
25164<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00036">36</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
25165
25166<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.html#l00227">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.html#l00193">VisitLayersTopologically()</a>.</p>
25167
25168</div>
25169</div>
25170<a id="a1a9a6dea47de10df8e3c76dd45df56fb"></a>
25171<h2 class="memtitle"><span class="permalink"><a href="#a1a9a6dea47de10df8e3c76dd45df56fb">&#9670;&nbsp;</a></span>g_TestTolerance</h2>
25172
25173<div class="memitem">
25174<div class="memproto">
25175 <table class="memname">
25176 <tr>
25177 <td class="memname">const float g_TestTolerance = 0.000001f</td>
25178 </tr>
25179 </table>
25180</div><div class="memdoc">
25181
25182<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.html#l00038">38</a> of file <a class="el" href="_quantizer_test_8cpp_source.html">QuantizerTest.cpp</a>.</p>
25183
25184</div>
25185</div>
25186<a id="a41794552ff67b0dad16de60f9b8e7d7c"></a>
25187<h2 class="memtitle"><span class="permalink"><a href="#a41794552ff67b0dad16de60f9b8e7d7c">&#9670;&nbsp;</a></span>g_WriteProfilingEventSequence</h2>
25188
25189<div class="memitem">
25190<div class="memproto">
25191 <table class="memname">
25192 <tr>
25193 <td class="memname">constexpr bool g_WriteProfilingEventSequence = <a class="el" href="_ref_layer_tests_8cpp.html#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
25194 </tr>
25195 </table>
25196</div><div class="memdoc">
25197
25198<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00033">33</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
25199
25200</div>
25201</div>
25202<a id="a6ce7e56eb10e440463f09eee8f213adc"></a>
25203<h2 class="memtitle"><span class="permalink"><a href="#a6ce7e56eb10e440463f09eee8f213adc">&#9670;&nbsp;</a></span>g_WriteReportToStdOutOnProfilerDestruction</h2>
25204
25205<div class="memitem">
25206<div class="memproto">
25207 <table class="memname">
25208 <tr>
25209 <td class="memname">constexpr bool g_WriteReportToStdOutOnProfilerDestruction = <a class="el" href="_ref_layer_tests_8cpp.html#a67e2647a90dec71bb79c8b38872ba570">false</a></td>
25210 </tr>
25211 </table>
25212</div><div class="memdoc">
25213
25214<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00042">42</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
25215
25216</div>
25217</div>
25218<a id="a602ddc6408c3347ba4c1eba623003984"></a>
25219<h2 class="memtitle"><span class="permalink"><a href="#a602ddc6408c3347ba4c1eba623003984">&#9670;&nbsp;</a></span>LOWEST_CAPTURE_PERIOD</h2>
25220
25221<div class="memitem">
25222<div class="memproto">
25223 <table class="memname">
25224 <tr>
25225 <td class="memname">constexpr unsigned int LOWEST_CAPTURE_PERIOD = 10000u</td>
25226 </tr>
25227 </table>
25228</div><div class="memdoc">
25229
25230<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00021">21</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
25231
25232<p class="reference">Referenced by <a class="el" href="_profiling_tests_8cpp_source.html#l01732">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_periodic_counter_selection_command_handler_8cpp_source.html#l00059">PeriodicCounterSelectionCommandHandler::operator()()</a>.</p>
25233
25234</div>
25235</div>
25236<a id="abdcd184ed3bd648bb31d385040cafd5d"></a>
25237<h2 class="memtitle"><span class="permalink"><a href="#abdcd184ed3bd648bb31d385040cafd5d">&#9670;&nbsp;</a></span>MaxNumOfTensorDimensions</h2>
25238
25239<div class="memitem">
25240<div class="memproto">
25241 <table class="memname">
25242 <tr>
25243 <td class="memname">constexpr unsigned int MaxNumOfTensorDimensions = 5U</td>
25244 </tr>
25245 </table>
25246</div><div class="memdoc">
25247
25248<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.html#l00018">18</a> of file <a class="el" href="_types_8hpp_source.html">Types.hpp</a>.</p>
25249
25250<p class="reference">Referenced by <a class="el" href="_input_output_tensor_names_8cpp_source.html#l00081">BOOST_FIXTURE_TEST_CASE()</a>, <a class="el" href="_concatenate_8cpp_source.html#l00014">Concatenate()</a>, <a class="el" href="_workload_utils_8hpp_source.html#l00049">CopyTensorContentsGeneric()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.html#l01901">TfLiteParser::OutputShapeOfReshape()</a>, <a class="el" href="_descriptors_8cpp_source.html#l00018">PermutationVector::PermutationVector()</a>, <a class="el" href="_permute_8cpp_source.html#l00098">armnnUtils::Permuted()</a>, <a class="el" href="_splitter_8cpp_source.html#l00022">Split()</a>, <a class="el" href="_splitter_8hpp_source.html#l00017">Splitter()</a>, and <a class="el" href="_tensor_8cpp_source.html#l00028">TensorShape::TensorShape()</a>.</p>
25251
25252</div>
25253</div>
25254<a id="a680b729be51e88d93f2cbbdfeb5eaf4d"></a>
25255<h2 class="memtitle"><span class="permalink"><a href="#a680b729be51e88d93f2cbbdfeb5eaf4d">&#9670;&nbsp;</a></span>tl_Profiler</h2>
25256
25257<div class="memitem">
25258<div class="memproto">
25259 <table class="memname">
25260 <tr>
25261 <td class="memname">thread_local <a class="el" href="classarmnn_1_1_profiler.html">Profiler</a>* tl_Profiler = nullptr</td>
25262 </tr>
25263 </table>
25264</div><div class="memdoc">
25265
25266<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.html#l00484">484</a> of file <a class="el" href="_profiling_8cpp_source.html">Profiling.cpp</a>.</p>
25267
25268<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.html#l00498">ProfilerManager::GetProfiler()</a>.</p>
25269
25270</div>
25271</div>
25272</div><!-- contents -->
25273</div><!-- doc-content -->
25274<!-- start footer part -->
25275<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
25276 <ul>
25277 <li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li>
25278 <li class="footer">Generated on Fri Mar 13 2020 16:07:02 for ArmNN by
25279 <a href="http://www.doxygen.org/index.html">
25280 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
25281 </ul>
25282</div>
25283</body>
25284</html>