blob: d03a9a8c11545c1b35dac654dbdd4e12170c16fe [file] [log] [blame]
Nikhil Raj1dc83fe2024-05-16 09:47:51 +01001<!-- HTML header for doxygen 1.8.17-->
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.8.17"/>
8<meta name="viewport" content="width=device-width, initial-scale=1"/>
9<title>Arm NN: armnnUtils Namespace Reference</title>
10<link href="tabs.css" rel="stylesheet" type="text/css"/>
11<script type="text/javascript" src="jquery.js"></script>
12<script type="text/javascript" src="dynsections.js"></script>
13<link href="navtree.css" rel="stylesheet" type="text/css"/>
14<script type="text/javascript" src="resize.js"></script>
15<script type="text/javascript" src="navtreedata.js"></script>
16<script type="text/javascript" src="navtree.js"></script>
17<link href="search/search.css" rel="stylesheet" type="text/css"/>
18<script type="text/javascript" src="search/searchdata.js"></script>
19<script type="text/javascript" src="search/search.js"></script>
20<script type="text/x-mathjax-config">
21 MathJax.Hub.Config({
22 extensions: ["tex2jax.js"],
23 jax: ["input/TeX","output/HTML-CSS"],
24});
25</script>
26<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
27<link href="doxygen.css" rel="stylesheet" type="text/css" />
28<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
29</head>
30<body>
31<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
32<div id="titlearea">
33<table cellspacing="0" cellpadding="0">
34 <tbody>
35 <tr style="height: 56px;">
36 <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 15rem; margin-top: .5rem; margin-left 13px"/>
37 <td id="projectalign" style="padding-left: 0.9em;">
38 <div id="projectname">
39 &#160;<span id="projectnumber">24.05</span>
40 </div>
41 </td>
42 </tr>
43 </tbody>
44</table>
45</div>
46<!-- end header part -->
47<!-- Generated by Doxygen 1.8.17 -->
48<script type="text/javascript">
49/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
50var searchBox = new SearchBox("searchBox", "search",false,'Search');
51/* @license-end */
52</script>
53<script type="text/javascript" src="menudata.js"></script>
54<script type="text/javascript" src="menu.js"></script>
55<script type="text/javascript">
56/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
57$(function() {
58 initMenu('',true,false,'search.php','Search');
59 $(document).ready(function() { init_search(); });
60});
61/* @license-end */</script>
62<div id="main-nav"></div>
63</div><!-- top -->
64<div id="side-nav" class="ui-resizable side-nav-resizable">
65 <div id="nav-tree">
66 <div id="nav-tree-contents">
67 <div id="nav-sync" class="sync"></div>
68 </div>
69 </div>
70 <div id="splitbar" style="-moz-user-select:none;"
71 class="ui-resizable-handle">
72 </div>
73</div>
74<script type="text/javascript">
75/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
76$(document).ready(function(){initNavTree('namespacearmnn_utils.html',''); initResizable(); });
77/* @license-end */
78</script>
79<div id="doc-content">
80<!-- window showing the filter options -->
81<div id="MSearchSelectWindow"
82 onmouseover="return searchBox.OnSearchSelectShow()"
83 onmouseout="return searchBox.OnSearchSelectHide()"
84 onkeydown="return searchBox.OnSearchSelectKey(event)">
85</div>
86
87<!-- iframe showing the search results (closed by default) -->
88<div id="MSearchResultsWindow">
89<iframe src="javascript:void(0)" frameborder="0"
90 name="MSearchResults" id="MSearchResults">
91</iframe>
92</div>
93
94<div class="header">
95 <div class="summary">
96<a href="#namespaces">Namespaces</a> &#124;
97<a href="#nested-classes">Classes</a> &#124;
98<a href="#typedef-members">Typedefs</a> &#124;
99<a href="#func-members">Functions</a> &#124;
100<a href="#var-members">Variables</a> </div>
101 <div class="headertitle">
102<div class="title">armnnUtils Namespace Reference</div> </div>
103</div><!--header-->
104<div class="contents">
105<table class="memberdecls">
106<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
107Namespaces</h2></td></tr>
108<tr class="memitem:namespacearmnn_utils_1_1_filesystem"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils_1_1_filesystem.html">Filesystem</a></td></tr>
109<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
110</table><table class="memberdecls">
111<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
112Classes</h2></td></tr>
113<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a></td></tr>
114<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout. <a href="classarmnn_utils_1_1_data_layout_indexed.html#details">More...</a><br /></td></tr>
115<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_utils_1_1_floating_point_converter.html">FloatingPointConverter</a></td></tr>
117<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_utils_1_1_is_floating_point_iterator.html">IsFloatingPointIterator</a></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">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_utils_1_1_model_accuracy_checker.html">ModelAccuracyChecker</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">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_utils_1_1_parser_prototxt_fixture.html">ParserPrototxtFixture</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">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_utils_1_1_selective_quantizer.html">SelectiveQuantizer</a></td></tr>
125<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
126<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_utils_1_1_selective_quantizer_3_01armnn_1_1_b_float16_00_01false_01_4.html">SelectiveQuantizer&lt; armnn::BFloat16, false &gt;</a></td></tr>
127<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
128<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_utils_1_1_selective_quantizer_3_01armnn_1_1_half_00_01false_01_4.html">SelectiveQuantizer&lt; armnn::Half, false &gt;</a></td></tr>
129<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_utils_1_1_selective_quantizer_3_01_t_00_01false_01_4.html">SelectiveQuantizer&lt; T, false &gt;</a></td></tr>
131<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
132</table><table class="memberdecls">
133<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
134Typedefs</h2></td></tr>
135<tr class="memitem:ac7bd4ea667375c07718086368507ed44"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a> = mapbox::util::variant&lt; std::vector&lt; float &gt;, std::vector&lt; int &gt;, std::vector&lt; unsigned char &gt;, std::vector&lt; int8_t &gt; &gt;</td></tr>
136<tr class="separator:ac7bd4ea667375c07718086368507ed44"><td class="memSeparator" colspan="2">&#160;</td></tr>
137<tr class="memitem:ab175d8bf2482d5a39c2331d1f0ddcece"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ab175d8bf2482d5a39c2331d1f0ddcece">LabelCategoryNames</a> = std::vector&lt; std::string &gt;</td></tr>
138<tr class="separator:ab175d8bf2482d5a39c2331d1f0ddcece"><td class="memSeparator" colspan="2">&#160;</td></tr>
139</table><table class="memberdecls">
140<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
141Functions</h2></td></tr>
142<tr class="memitem:afb0302d3269537af9680c698599deac5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
143<tr class="memitem:afb0302d3269537af9680c698599deac5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">CompatibleTypes</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>)</td></tr>
144<tr class="separator:afb0302d3269537af9680c698599deac5"><td class="memSeparator" colspan="2">&#160;</td></tr>
145<tr class="memitem:a49ba5984d8cde4299d8ef15c9e556587"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a49ba5984d8cde4299d8ef15c9e556587">operator==</a> (const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> &amp;dataLayout, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;indexed)</td></tr>
146<tr class="memdesc:a49ba5984d8cde4299d8ef15c9e556587"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equality methods. <a href="namespacearmnn_utils.html#a49ba5984d8cde4299d8ef15c9e556587">More...</a><br /></td></tr>
147<tr class="separator:a49ba5984d8cde4299d8ef15c9e556587"><td class="memSeparator" colspan="2">&#160;</td></tr>
148<tr class="memitem:a0448088ed94f810bd2464f3afd1859f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a0448088ed94f810bd2464f3afd1859f0">operator==</a> (const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;indexed, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> &amp;dataLayout)</td></tr>
149<tr class="separator:a0448088ed94f810bd2464f3afd1859f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
150<tr class="memitem:a56b0e17341e000fa1d4561890294520c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a56b0e17341e000fa1d4561890294520c">within_percentage_tolerance</a> (float a, float b, float tolerancePercent=1.0f)</td></tr>
151<tr class="memdesc:a56b0e17341e000fa1d4561890294520c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two floats and return true if their values are within a specified tolerance of each other. <a href="namespacearmnn_utils.html#a56b0e17341e000fa1d4561890294520c">More...</a><br /></td></tr>
152<tr class="separator:a56b0e17341e000fa1d4561890294520c"><td class="memSeparator" colspan="2">&#160;</td></tr>
153<tr class="memitem:abeaf4f6785039866fd075f4569ba8e84"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">Permuted</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;srcShape, const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;mappings)</td></tr>
154<tr class="separator:abeaf4f6785039866fd075f4569ba8e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
155<tr class="memitem:a2ba6f6f40c7382b61b00ac02f961ba22"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a2ba6f6f40c7382b61b00ac02f961ba22">Permuted</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;info, const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;mappings)</td></tr>
156<tr class="separator:a2ba6f6f40c7382b61b00ac02f961ba22"><td class="memSeparator" colspan="2">&#160;</td></tr>
157<tr class="memitem:af3c74017185773dd61d8ca6662d65d43"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#af3c74017185773dd61d8ca6662d65d43">Permute</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;dstShape, const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</td></tr>
158<tr class="separator:af3c74017185773dd61d8ca6662d65d43"><td class="memSeparator" colspan="2">&#160;</td></tr>
159<tr class="memitem:a21b249bca87a5ad47359abd9ec7acada"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
160<tr class="memitem:a21b249bca87a5ad47359abd9ec7acada"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a21b249bca87a5ad47359abd9ec7acada">SelectiveQuantize</a> (float value, float scale, int32_t offset)</td></tr>
161<tr class="separator:a21b249bca87a5ad47359abd9ec7acada"><td class="memSeparator" colspan="2">&#160;</td></tr>
162<tr class="memitem:a5135dc1ce7a8aeb97623c1a92c5a3543"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
163<tr class="memitem:a5135dc1ce7a8aeb97623c1a92c5a3543"><td class="memTemplItemLeft" align="right" valign="top">float&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a5135dc1ce7a8aeb97623c1a92c5a3543">SelectiveDequantize</a> (T value, float scale, int32_t offset)</td></tr>
164<tr class="separator:a5135dc1ce7a8aeb97623c1a92c5a3543"><td class="memSeparator" colspan="2">&#160;</td></tr>
165<tr class="memitem:afb0aab92dc5b9bc5d7ebe2ea036f3809"><td class="memTemplParams" colspan="2">template&lt;typename T , typename FloatIt , typename std::enable_if&lt; IsFloatingPointIterator&lt; FloatIt &gt;::value, int &gt;::type = 0&gt; </td></tr>
166<tr class="memitem:afb0aab92dc5b9bc5d7ebe2ea036f3809"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#afb0aab92dc5b9bc5d7ebe2ea036f3809">QuantizedVector</a> (FloatIt first, FloatIt last, float qScale, int32_t qOffset)</td></tr>
167<tr class="separator:afb0aab92dc5b9bc5d7ebe2ea036f3809"><td class="memSeparator" colspan="2">&#160;</td></tr>
168<tr class="memitem:ad10541679f7d9740ba7a3c96b9843456"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
169<tr class="memitem:ad10541679f7d9740ba7a3c96b9843456"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ad10541679f7d9740ba7a3c96b9843456">QuantizedVector</a> (const std::vector&lt; float &gt; &amp;array, float qScale=1.f, int32_t qOffset=0)</td></tr>
170<tr class="separator:ad10541679f7d9740ba7a3c96b9843456"><td class="memSeparator" colspan="2">&#160;</td></tr>
171<tr class="memitem:af29a7b903bf7ae9639ea29bc05ccb289"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
172<tr class="memitem:af29a7b903bf7ae9639ea29bc05ccb289"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#af29a7b903bf7ae9639ea29bc05ccb289">QuantizedVector</a> (std::initializer_list&lt; float &gt; array, float qScale=1.f, int32_t qOffset=0)</td></tr>
173<tr class="separator:af29a7b903bf7ae9639ea29bc05ccb289"><td class="memSeparator" colspan="2">&#160;</td></tr>
174<tr class="memitem:ab53d94ea22b51c6bcdf9584644bd67bb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ab53d94ea22b51c6bcdf9584644bd67bb">GetTensorShape</a> (unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout)</td></tr>
175<tr class="separator:ab53d94ea22b51c6bcdf9584644bd67bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
176<tr class="memitem:acee63cd08da47910fc166a1990988fa8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a> (unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout, const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> dataType)</td></tr>
177<tr class="separator:acee63cd08da47910fc166a1990988fa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:aee5883b056e03a22db41b7b471fb598e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#aee5883b056e03a22db41b7b471fb598e">GetTensorInfo</a> (unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int depth, unsigned int height, unsigned int width, const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout, const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> dataType)</td></tr>
179<tr class="separator:aee5883b056e03a22db41b7b471fb598e"><td class="memSeparator" colspan="2">&#160;</td></tr>
180<tr class="memitem:a1c9097ab13afc54b48c503c6487aaee1"><td class="memItemLeft" align="right" valign="top">std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a1c9097ab13afc54b48c503c6487aaee1">FindMinMax</a> (<a class="el" href="classarmnn_1_1_i_tensor_handle.html">armnn::ITensorHandle</a> *tensorHandle)</td></tr>
181<tr class="separator:a1c9097ab13afc54b48c503c6487aaee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
182<tr class="memitem:a2bff2aae3ae824ff74ba550488373886"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a2bff2aae3ae824ff74ba550488373886">ReduceDims</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;tensorInfo, unsigned int dimensions)</td></tr>
183<tr class="separator:a2bff2aae3ae824ff74ba550488373886"><td class="memSeparator" colspan="2">&#160;</td></tr>
184<tr class="memitem:a29e9952fc973569b267d87b04ce372c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a29e9952fc973569b267d87b04ce372c2">ReduceDims</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensorInfo, unsigned int dimensions)</td></tr>
185<tr class="separator:a29e9952fc973569b267d87b04ce372c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
186<tr class="memitem:a0d3b1be320610515e0cac8d745d9f8c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a0d3b1be320610515e0cac8d745d9f8c2">ExpandDims</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;tensorShape, int axis)</td></tr>
187<tr class="separator:a0d3b1be320610515e0cac8d745d9f8c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
188<tr class="memitem:a9ef6d3649c5d3aa16a9839e3e2ad659b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a9ef6d3649c5d3aa16a9839e3e2ad659b">ExpandDimsToRank</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;tensorShape, unsigned int rank)</td></tr>
189<tr class="separator:a9ef6d3649c5d3aa16a9839e3e2ad659b"><td class="memSeparator" colspan="2">&#160;</td></tr>
190<tr class="memitem:ac7f0575b4a8c9ba80c5b0695ada4dd92"><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_utils.html#ac7f0575b4a8c9ba80c5b0695ada4dd92">SqueezeDims</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;tensorShape)</td></tr>
191<tr class="separator:ac7f0575b4a8c9ba80c5b0695ada4dd92"><td class="memSeparator" colspan="2">&#160;</td></tr>
192<tr class="memitem:af57864f5e03358d14c2988edae912b8b"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#af57864f5e03358d14c2988edae912b8b">GetNumElementsBetween</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</td></tr>
193<tr class="separator:af57864f5e03358d14c2988edae912b8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
194<tr class="memitem:ac93cb1365b4bcb67df2a3164606096c5"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ac93cb1365b4bcb67df2a3164606096c5">GetUnsignedAxis</a> (const unsigned int inputDimension, const int axis)</td></tr>
195<tr class="separator:ac93cb1365b4bcb67df2a3164606096c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
196<tr class="memitem:a276aac5f7a8bdc3db4f62203870ca13b"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a276aac5f7a8bdc3db4f62203870ca13b">GetNumElementsAfter</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;shape, unsigned int axis)</td></tr>
197<tr class="separator:a276aac5f7a8bdc3db4f62203870ca13b"><td class="memSeparator" colspan="2">&#160;</td></tr>
198<tr class="memitem:a1826e433f7e6817976a8175b4ef8296c"><td class="memItemLeft" align="right" valign="top">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a1826e433f7e6817976a8175b4ef8296c">GetPerAxisParams</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;info)</td></tr>
199<tr class="separator:a1826e433f7e6817976a8175b4ef8296c"><td class="memSeparator" colspan="2">&#160;</td></tr>
200<tr class="memitem:a573c6170ca8451709e031b6243bc187d"><td class="memTemplParams" colspan="2">template&lt;typename PrimitiveType &gt; </td></tr>
201<tr class="memitem:a573c6170ca8451709e031b6243bc187d"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; float[]&gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a573c6170ca8451709e031b6243bc187d">ToFloatArray</a> (const std::vector&lt; PrimitiveType &gt; &amp;data, const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensorInfo)</td></tr>
202<tr class="separator:a573c6170ca8451709e031b6243bc187d"><td class="memSeparator" colspan="2">&#160;</td></tr>
203<tr class="memitem:a949e191038ae0bfd9a0597a7de353a27"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; float[]&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a949e191038ae0bfd9a0597a7de353a27">ToFloatArray</a> (const std::vector&lt; uint8_t &gt; &amp;data, const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensorInfo)</td></tr>
204<tr class="separator:a949e191038ae0bfd9a0597a7de353a27"><td class="memSeparator" colspan="2">&#160;</td></tr>
205<tr class="memitem:a428a9a6ffdf0e8d723b50c038c56c336"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a428a9a6ffdf0e8d723b50c038c56c336">TransposeTensorShape</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;srcShape, const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;mappings)</td></tr>
206<tr class="separator:a428a9a6ffdf0e8d723b50c038c56c336"><td class="memSeparator" colspan="2">&#160;</td></tr>
207<tr class="memitem:a49e3aa80e05abc7b4643aad600e8d827"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a49e3aa80e05abc7b4643aad600e8d827">TransposeTensorShape</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;info, const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;mappings)</td></tr>
208<tr class="separator:a49e3aa80e05abc7b4643aad600e8d827"><td class="memSeparator" colspan="2">&#160;</td></tr>
209<tr class="memitem:a405d5f966ec992d1717711e5a2d7909d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a405d5f966ec992d1717711e5a2d7909d">Transpose</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;dstShape, const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</td></tr>
210<tr class="separator:a405d5f966ec992d1717711e5a2d7909d"><td class="memSeparator" colspan="2">&#160;</td></tr>
211<tr class="memitem:af75354033a8fe40804ef8c0fda1663a4"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
212<tr class="memitem:af75354033a8fe40804ef8c0fda1663a4"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#af75354033a8fe40804ef8c0fda1663a4">CompatibleTypes&lt; float &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
213<tr class="separator:af75354033a8fe40804ef8c0fda1663a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
214<tr class="memitem:acabe92532fe8b1e897a8f57045ee4708"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
215<tr class="memitem:acabe92532fe8b1e897a8f57045ee4708"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#acabe92532fe8b1e897a8f57045ee4708">CompatibleTypes&lt; Half &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
216<tr class="separator:acabe92532fe8b1e897a8f57045ee4708"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:a6bb19e0cf0c632e27058a609f05a5d02"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
218<tr class="memitem:a6bb19e0cf0c632e27058a609f05a5d02"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a6bb19e0cf0c632e27058a609f05a5d02">CompatibleTypes&lt; BFloat16 &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
219<tr class="separator:a6bb19e0cf0c632e27058a609f05a5d02"><td class="memSeparator" colspan="2">&#160;</td></tr>
220<tr class="memitem:a438e61647ca0873180d75c9f035b1611"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
221<tr class="memitem:a438e61647ca0873180d75c9f035b1611"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a438e61647ca0873180d75c9f035b1611">CompatibleTypes&lt; uint8_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
222<tr class="separator:a438e61647ca0873180d75c9f035b1611"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="memitem:ae6c6b22d4ce4b9aa733236f9cb92608e"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
224<tr class="memitem:ae6c6b22d4ce4b9aa733236f9cb92608e"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ae6c6b22d4ce4b9aa733236f9cb92608e">CompatibleTypes&lt; int8_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
225<tr class="separator:ae6c6b22d4ce4b9aa733236f9cb92608e"><td class="memSeparator" colspan="2">&#160;</td></tr>
226<tr class="memitem:a787be51827fb835b5c60be66e00ceaac"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
227<tr class="memitem:a787be51827fb835b5c60be66e00ceaac"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a787be51827fb835b5c60be66e00ceaac">CompatibleTypes&lt; int16_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
228<tr class="separator:a787be51827fb835b5c60be66e00ceaac"><td class="memSeparator" colspan="2">&#160;</td></tr>
229<tr class="memitem:a0324d8bcec2695e460417fdd5823f914"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
230<tr class="memitem:a0324d8bcec2695e460417fdd5823f914"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a0324d8bcec2695e460417fdd5823f914">CompatibleTypes&lt; int32_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
231<tr class="separator:a0324d8bcec2695e460417fdd5823f914"><td class="memSeparator" colspan="2">&#160;</td></tr>
232<tr class="memitem:af792b8829217dbca5ec7bda667ee0dfb"><td class="memItemLeft" align="right" valign="top">template&lt;&gt; </td></tr>
233<tr class="memitem:af792b8829217dbca5ec7bda667ee0dfb"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#af792b8829217dbca5ec7bda667ee0dfb">CompatibleTypes&lt; int64_t &gt;</a> (<a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
234<tr class="separator:af792b8829217dbca5ec7bda667ee0dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
235<tr class="memitem:a662b45b5a4d48a01e967c0b28b6a552b"><td class="memTemplParams" colspan="2">template&lt;typename TNodeId , typename TTargetNodes &gt; </td></tr>
236<tr class="memitem:a662b45b5a4d48a01e967c0b28b6a552b"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a662b45b5a4d48a01e967c0b28b6a552b">GraphTopologicalSort</a> (const TTargetNodes &amp;targetNodes, std::function&lt; std::vector&lt; TNodeId &gt;(TNodeId)&gt; getIncomingEdges, std::vector&lt; TNodeId &gt; &amp;outSorted)</td></tr>
237<tr class="separator:a662b45b5a4d48a01e967c0b28b6a552b"><td class="memSeparator" colspan="2">&#160;</td></tr>
238<tr class="memitem:a158a68b143d2564fa1ca047646cf4185"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a158a68b143d2564fa1ca047646cf4185">SplitBy</a> (const std::string &amp;originalString, const std::string &amp;delimiter=&quot; &quot;, bool includeEmptyToken=false)</td></tr>
239<tr class="memdesc:a158a68b143d2564fa1ca047646cf4185"><td class="mdescLeft">&#160;</td><td class="mdescRight">Split a string into tokens by a delimiter. <a href="namespacearmnn_utils.html#a158a68b143d2564fa1ca047646cf4185">More...</a><br /></td></tr>
240<tr class="separator:a158a68b143d2564fa1ca047646cf4185"><td class="memSeparator" colspan="2">&#160;</td></tr>
241<tr class="memitem:a14be0364a6fc0975d45e84737dfe21bc"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a14be0364a6fc0975d45e84737dfe21bc">Strip</a> (const std::string &amp;originalString, const std::string &amp;characterSet=&quot; &quot;)</td></tr>
242<tr class="memdesc:a14be0364a6fc0975d45e84737dfe21bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove any preceding and trailing character specified in the characterSet. <a href="namespacearmnn_utils.html#a14be0364a6fc0975d45e84737dfe21bc">More...</a><br /></td></tr>
243<tr class="separator:a14be0364a6fc0975d45e84737dfe21bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
244<tr class="memitem:a523deabeb7d0a884028b35eebfd1cb6c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a523deabeb7d0a884028b35eebfd1cb6c">ProcessConcatInputTensorInfo</a> (<a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;inputTensorInfo, <a class="el" href="structarmnn_1_1_origins_descriptor.html">armnn::OriginsDescriptor</a> &amp;concatDescriptor, const unsigned int &amp;concatAxis, unsigned int inputIndex, unsigned int &amp;mergeDimOrigin)</td></tr>
245<tr class="separator:a523deabeb7d0a884028b35eebfd1cb6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
246<tr class="memitem:aac34adc5b96d744ae53eac580213f855"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#aac34adc5b96d744ae53eac580213f855">CalculateReducedOutputTensoInfo</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;inputTensorInfo, const std::set&lt; unsigned int &gt; &amp;axisSet, bool keepDims, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;outputTensorInfo)</td></tr>
247<tr class="memdesc:aac34adc5b96d744ae53eac580213f855"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a tensor info after reducing the dimensions mentioned in axisData. <a href="namespacearmnn_utils.html#aac34adc5b96d744ae53eac580213f855">More...</a><br /></td></tr>
248<tr class="separator:aac34adc5b96d744ae53eac580213f855"><td class="memSeparator" colspan="2">&#160;</td></tr>
249<tr class="memitem:a9300450bab29bb951d6f8755b7d9d3a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a9300450bab29bb951d6f8755b7d9d3a8">CalculateStridedSliceOutputTensorInfo</a> (const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;inputTensorInfo, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">armnn::StridedSliceDescriptor</a> &amp;desc, <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;outputTensorInfo)</td></tr>
250<tr class="memdesc:a9300450bab29bb951d6f8755b7d9d3a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create output tensor info for a StridedSlice operator. <a href="namespacearmnn_utils.html#a9300450bab29bb951d6f8755b7d9d3a8">More...</a><br /></td></tr>
251<tr class="separator:a9300450bab29bb951d6f8755b7d9d3a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
252<tr class="memitem:ab4a89c3d0ff243bdabae3e404248d04a"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ab4a89c3d0ff243bdabae3e404248d04a">ConvertInt32ToOctalString</a> (int value)</td></tr>
253<tr class="memdesc:ab4a89c3d0ff243bdabae3e404248d04a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts an int value into the Prototxt octal representation. <a href="namespacearmnn_utils.html#ab4a89c3d0ff243bdabae3e404248d04a">More...</a><br /></td></tr>
254<tr class="separator:ab4a89c3d0ff243bdabae3e404248d04a"><td class="memSeparator" colspan="2">&#160;</td></tr>
255<tr class="memitem:a78f149bb07186307e19e00015a8d151c"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a78f149bb07186307e19e00015a8d151c">ConvertTensorShapeToString</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;shape)</td></tr>
256<tr class="memdesc:a78f149bb07186307e19e00015a8d151c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts an TensorShape into Prototxt representation. <a href="namespacearmnn_utils.html#a78f149bb07186307e19e00015a8d151c">More...</a><br /></td></tr>
257<tr class="separator:a78f149bb07186307e19e00015a8d151c"><td class="memSeparator" colspan="2">&#160;</td></tr>
258<tr class="memitem:ad5310a199d4969927169ed084b1f6c28"><td class="memTemplParams" colspan="2">template&lt;typename TContainer &gt; </td></tr>
259<tr class="memitem:ad5310a199d4969927169ed084b1f6c28"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ad5310a199d4969927169ed084b1f6c28">MakeInputTensors</a> (const std::vector&lt; <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &gt; &amp;inputBindings, const std::vector&lt; <a class="el" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a> &gt; &amp;inputDataContainers)</td></tr>
260<tr class="separator:ad5310a199d4969927169ed084b1f6c28"><td class="memSeparator" colspan="2">&#160;</td></tr>
261<tr class="memitem:ad4efd5a7fa660df5246466d83517220d"><td class="memTemplParams" colspan="2">template&lt;typename TContainer &gt; </td></tr>
262<tr class="memitem:ad4efd5a7fa660df5246466d83517220d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ad4efd5a7fa660df5246466d83517220d">MakeOutputTensors</a> (const std::vector&lt; <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &gt; &amp;outputBindings, std::vector&lt; <a class="el" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a> &gt; &amp;outputDataContainers)</td></tr>
263<tr class="separator:ad4efd5a7fa660df5246466d83517220d"><td class="memSeparator" colspan="2">&#160;</td></tr>
264<tr class="memitem:a7e3caf713986e36cff3ba9d9e442366c"><td class="memTemplParams" colspan="2">template&lt;typename PrimitiveType &gt; </td></tr>
265<tr class="memitem:a7e3caf713986e36cff3ba9d9e442366c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a7e3caf713986e36cff3ba9d9e442366c">CheckSizes</a> (const std::vector&lt; PrimitiveType &gt; &amp;data, const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;tensorInfo, unsigned int size=1)</td></tr>
266<tr class="separator:a7e3caf713986e36cff3ba9d9e442366c"><td class="memSeparator" colspan="2">&#160;</td></tr>
267<tr class="memitem:a97dc68ae76f04b81c833184724836c9a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a97dc68ae76f04b81c833184724836c9a">CheckValidSize</a> (std::initializer_list&lt; size_t &gt; validInputCounts, size_t actualValue, const char *validExpr, const char *actualExpr, const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;location)</td></tr>
268<tr class="separator:a97dc68ae76f04b81c833184724836c9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
269<tr class="memitem:ab075020544612cd151ebdd08db537396"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#ab075020544612cd151ebdd08db537396">NonNegative</a> (const char *expr, int32_t value, const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;location)</td></tr>
270<tr class="separator:ab075020544612cd151ebdd08db537396"><td class="memSeparator" colspan="2">&#160;</td></tr>
271<tr class="memitem:a2e0aa273755368a1bf5fc65102df4a92"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a2e0aa273755368a1bf5fc65102df4a92">VerifyInt32</a> (const char *expr, int64_t value, const <a class="el" href="structarmnn_1_1_check_location.html">armnn::CheckLocation</a> &amp;location)</td></tr>
272<tr class="separator:a2e0aa273755368a1bf5fc65102df4a92"><td class="memSeparator" colspan="2">&#160;</td></tr>
273</table><table class="memberdecls">
274<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
275Variables</h2></td></tr>
276<tr class="memitem:a12124184ac6aec018beb98b9715330c7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a12124184ac6aec018beb98b9715330c7">NHWCToArmNN</a> = { 0, 2, 3, 1 }</td></tr>
277<tr class="separator:a12124184ac6aec018beb98b9715330c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
278<tr class="memitem:a59cbccbfbae7633020d200f8c23fe69e"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_utils.html#a59cbccbfbae7633020d200f8c23fe69e">ArmNNToNHWC</a> = { 0, 3, 1, 2 }</td></tr>
279<tr class="separator:a59cbccbfbae7633020d200f8c23fe69e"><td class="memSeparator" colspan="2">&#160;</td></tr>
280</table>
281<h2 class="groupheader">Typedef Documentation</h2>
282<a id="ab175d8bf2482d5a39c2331d1f0ddcece"></a>
283<h2 class="memtitle"><span class="permalink"><a href="#ab175d8bf2482d5a39c2331d1f0ddcece">&#9670;&nbsp;</a></span>LabelCategoryNames</h2>
284
285<div class="memitem">
286<div class="memproto">
287 <table class="memname">
288 <tr>
289 <td class="memname">using <a class="el" href="namespacearmnn_utils.html#ab175d8bf2482d5a39c2331d1f0ddcece">LabelCategoryNames</a> = std::vector&lt;std::string&gt;</td>
290 </tr>
291 </table>
292</div><div class="memdoc">
293
294<p class="definition">Definition at line <a class="el" href="_model_accuracy_checker_8hpp_source.html#l00025">25</a> of file <a class="el" href="_model_accuracy_checker_8hpp_source.html">ModelAccuracyChecker.hpp</a>.</p>
295
296</div>
297</div>
298<a id="ac7bd4ea667375c07718086368507ed44"></a>
299<h2 class="memtitle"><span class="permalink"><a href="#ac7bd4ea667375c07718086368507ed44">&#9670;&nbsp;</a></span>TContainer</h2>
300
301<div class="memitem">
302<div class="memproto">
303 <table class="memname">
304 <tr>
305 <td class="memname">using <a class="el" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a> = mapbox::util::variant&lt;std::vector&lt;float&gt;, std::vector&lt;int&gt;, std::vector&lt;unsigned char&gt;, std::vector&lt;int8_t&gt; &gt;</td>
306 </tr>
307 </table>
308</div><div class="memdoc">
309
310<p class="definition">Definition at line <a class="el" href="_t_container_8hpp_source.html#l00018">18</a> of file <a class="el" href="_t_container_8hpp_source.html">TContainer.hpp</a>.</p>
311
312</div>
313</div>
314<h2 class="groupheader">Function Documentation</h2>
315<a id="aac34adc5b96d744ae53eac580213f855"></a>
316<h2 class="memtitle"><span class="permalink"><a href="#aac34adc5b96d744ae53eac580213f855">&#9670;&nbsp;</a></span>CalculateReducedOutputTensoInfo()</h2>
317
318<div class="memitem">
319<div class="memproto">
320 <table class="memname">
321 <tr>
322 <td class="memname">void CalculateReducedOutputTensoInfo </td>
323 <td>(</td>
324 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
325 <td class="paramname"><em>inputTensorInfo</em>, </td>
326 </tr>
327 <tr>
328 <td class="paramkey"></td>
329 <td></td>
330 <td class="paramtype">const std::set&lt; unsigned int &gt; &amp;&#160;</td>
331 <td class="paramname"><em>axisSet</em>, </td>
332 </tr>
333 <tr>
334 <td class="paramkey"></td>
335 <td></td>
336 <td class="paramtype">bool&#160;</td>
337 <td class="paramname"><em>keepDims</em>, </td>
338 </tr>
339 <tr>
340 <td class="paramkey"></td>
341 <td></td>
342 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
343 <td class="paramname"><em>outputTensorInfo</em>&#160;</td>
344 </tr>
345 <tr>
346 <td></td>
347 <td>)</td>
348 <td></td><td></td>
349 </tr>
350 </table>
351</div><div class="memdoc">
352
353<p>Creates a tensor info after reducing the dimensions mentioned in axisData. </p>
354
355<p class="definition">Definition at line <a class="el" href="_parser_helper_8cpp_source.html#l00052">52</a> of file <a class="el" href="_parser_helper_8cpp_source.html">ParserHelper.cpp</a>.</p>
356<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div>
357<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::vector&lt;unsigned int&gt; outputShapeVector;</div>
358<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">bool</span> dimensionFound = <span class="keyword">false</span>;</div>
359<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size = 1;</div>
360<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
361<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> i = 0; i &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</div>
362<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div>
363<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; dimensionFound = <span class="keyword">false</span>;</div>
364<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> axis: axisSet)</div>
365<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div>
366<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (axis == i)</div>
367<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div>
368<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; dimensionFound = <span class="keyword">true</span>;</div>
369<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">break</span>;</div>
370<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div>
371<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
372<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
373<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (!dimensionFound)</div>
374<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div>
375<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; size *= inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[i];</div>
376<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
377<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (keepDims)</div>
378<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
379<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; outputShapeVector.push_back(inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[i]);</div>
380<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
381<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
382<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span></div>
383<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div>
384<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (keepDims)</div>
385<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
386<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outputShapeVector.push_back(1);</div>
387<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
388<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
389<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
390<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
391<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (keepDims)</div>
392<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
393<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> outputTensorShape(inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(), &amp;outputShapeVector[0]);</div>
394<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; outputTensorInfo = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(outputTensorShape, inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>());</div>
395<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
396<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">else</span></div>
397<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div>
398<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; outputTensorInfo = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>({size}, inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>());</div>
399<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
400<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div>
401</div><!-- fragment -->
402<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00200">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.html#l00197">TensorInfo::GetNumDimensions()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>.</p>
403
404</div>
405</div>
406<a id="a9300450bab29bb951d6f8755b7d9d3a8"></a>
407<h2 class="memtitle"><span class="permalink"><a href="#a9300450bab29bb951d6f8755b7d9d3a8">&#9670;&nbsp;</a></span>CalculateStridedSliceOutputTensorInfo()</h2>
408
409<div class="memitem">
410<div class="memproto">
411 <table class="memname">
412 <tr>
413 <td class="memname">void CalculateStridedSliceOutputTensorInfo </td>
414 <td>(</td>
415 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
416 <td class="paramname"><em>inputTensorInfo</em>, </td>
417 </tr>
418 <tr>
419 <td class="paramkey"></td>
420 <td></td>
421 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.html">armnn::StridedSliceDescriptor</a> &amp;&#160;</td>
422 <td class="paramname"><em>desc</em>, </td>
423 </tr>
424 <tr>
425 <td class="paramkey"></td>
426 <td></td>
427 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
428 <td class="paramname"><em>outputTensorInfo</em>&#160;</td>
429 </tr>
430 <tr>
431 <td></td>
432 <td>)</td>
433 <td></td><td></td>
434 </tr>
435 </table>
436</div><div class="memdoc">
437
438<p>Create output tensor info for a StridedSlice operator. </p>
439
440<p class="definition">Definition at line <a class="el" href="_parser_helper_8cpp_source.html#l00103">103</a> of file <a class="el" href="_parser_helper_8cpp_source.html">ParserHelper.cpp</a>.</p>
441<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{</div>
442<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>&amp; inputShape = inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div>
443<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
444<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; std::vector&lt;unsigned int&gt; outputShapeVector;</div>
445<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); i++)</div>
446<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
447<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> (desc.<a class="code" href="structarmnn_1_1_strided_slice_descriptor.html#a6d0384878432cfc9652b7ae8bc59506f">m_ShrinkAxisMask</a> &amp; (1 &lt;&lt; i))</div>
448<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
449<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">continue</span>;</div>
450<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
451<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
452<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">int</span> stride = desc.<a class="code" href="structarmnn_1_1_strided_slice_descriptor.html#a0d53caff836b84204adbd1c28752a201">m_Stride</a>[i];</div>
453<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">int</span> start = desc.<a class="code" href="structarmnn_1_1_strided_slice_descriptor.html#add849c1188ee7ff60774755b746aa526">GetStartForAxis</a>(inputShape, i);</div>
454<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> stop = desc.<a class="code" href="structarmnn_1_1_strided_slice_descriptor.html#afc4731b55776f71af1e14c799c6e6e2c">GetStopForAxis</a>(inputShape, i, start);</div>
455<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
456<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">int</span> newSize = stride &gt; 0 ? ((stop - start) + stride - 1) / stride :</div>
457<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; ((start - stop) - stride - 1) / -stride;</div>
458<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
459<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; newSize = std::max(0, newSize);</div>
460<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
461<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; outputShapeVector.push_back(<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(newSize));</div>
462<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
463<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
464<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> outputTensorShape(inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(), &amp;outputShapeVector[0]);</div>
465<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; outputTensorInfo = <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a>(<a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a>(outputTensorShape), inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>());</div>
466<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div>
467</div><!-- fragment -->
468<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00200">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.html#l00197">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8cpp_source.html#l00393">StridedSliceDescriptor::GetStartForAxis()</a>, <a class="el" href="_descriptors_8cpp_source.html#l00420">StridedSliceDescriptor::GetStopForAxis()</a>, <a class="el" href="_descriptors_8hpp_source.html#l01355">StridedSliceDescriptor::m_ShrinkAxisMask</a>, and <a class="el" href="_descriptors_8hpp_source.html#l01346">StridedSliceDescriptor::m_Stride</a>.</p>
469
470</div>
471</div>
472<a id="a7e3caf713986e36cff3ba9d9e442366c"></a>
473<h2 class="memtitle"><span class="permalink"><a href="#a7e3caf713986e36cff3ba9d9e442366c">&#9670;&nbsp;</a></span>CheckSizes()</h2>
474
475<div class="memitem">
476<div class="memproto">
477 <table class="memname">
478 <tr>
479 <td class="memname">void armnnUtils::CheckSizes </td>
480 <td>(</td>
481 <td class="paramtype">const std::vector&lt; PrimitiveType &gt; &amp;&#160;</td>
482 <td class="paramname"><em>data</em>, </td>
483 </tr>
484 <tr>
485 <td class="paramkey"></td>
486 <td></td>
487 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
488 <td class="paramname"><em>tensorInfo</em>, </td>
489 </tr>
490 <tr>
491 <td class="paramkey"></td>
492 <td></td>
493 <td class="paramtype">unsigned int&#160;</td>
494 <td class="paramname"><em>size</em> = <code>1</code>&#160;</td>
495 </tr>
496 <tr>
497 <td></td>
498 <td>)</td>
499 <td></td><td></td>
500 </tr>
501 </table>
502</div><div class="memdoc">
503
504<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00296">296</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
505<div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div>
506<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (data.size() / size != tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>())</div>
507<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div>
508<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_invalid_argument_exception.html">InvalidArgumentException</a>(</div>
509<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; fmt::format(<span class="stringliteral">&quot;The data does not contain the expected number of elements {} != {}. {}&quot;</span>,</div>
510<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; data.size(), tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(), <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>().AsString()));</div>
511<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div>
512<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div>
513</div><!-- fragment -->
514<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, and <a class="el" href="_tensor_8hpp_source.html#l00198">TensorInfo::GetNumElements()</a>.</p>
515
516<p class="reference">Referenced by <a class="el" href="_tensor_utils_8cpp_source.html#l00307">ToFloatArray()</a>.</p>
517
518</div>
519</div>
520<a id="a97dc68ae76f04b81c833184724836c9a"></a>
521<h2 class="memtitle"><span class="permalink"><a href="#a97dc68ae76f04b81c833184724836c9a">&#9670;&nbsp;</a></span>CheckValidSize()</h2>
522
523<div class="memitem">
524<div class="memproto">
525 <table class="memname">
526 <tr>
527 <td class="memname">void CheckValidSize </td>
528 <td>(</td>
529 <td class="paramtype">std::initializer_list&lt; size_t &gt;&#160;</td>
530 <td class="paramname"><em>validInputCounts</em>, </td>
531 </tr>
532 <tr>
533 <td class="paramkey"></td>
534 <td></td>
535 <td class="paramtype">size_t&#160;</td>
536 <td class="paramname"><em>actualValue</em>, </td>
537 </tr>
538 <tr>
539 <td class="paramkey"></td>
540 <td></td>
541 <td class="paramtype">const char *&#160;</td>
542 <td class="paramname"><em>validExpr</em>, </td>
543 </tr>
544 <tr>
545 <td class="paramkey"></td>
546 <td></td>
547 <td class="paramtype">const char *&#160;</td>
548 <td class="paramname"><em>actualExpr</em>, </td>
549 </tr>
550 <tr>
551 <td class="paramkey"></td>
552 <td></td>
553 <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;&#160;</td>
554 <td class="paramname"><em>location</em>&#160;</td>
555 </tr>
556 <tr>
557 <td></td>
558 <td>)</td>
559 <td></td><td></td>
560 </tr>
561 </table>
562</div><div class="memdoc">
563
564<p class="definition">Definition at line <a class="el" href="_verification_helpers_8cpp_source.html#l00016">16</a> of file <a class="el" href="_verification_helpers_8cpp_source.html">VerificationHelpers.cpp</a>.</p>
565<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div>
566<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordtype">bool</span> isValid = std::any_of(validInputCounts.begin(),</div>
567<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; validInputCounts.end(),</div>
568<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; [&amp;actualValue](<span class="keywordtype">size_t</span> x) { return x == actualValue; } );</div>
569<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (!isValid)</div>
570<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div>
571<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_parse_exception.html">ParseException</a>(fmt::format(<span class="stringliteral">&quot;{} = {} is not valid, not in {{}}. {}&quot;</span>,</div>
572<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; actualExpr,</div>
573<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; actualValue,</div>
574<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; validExpr,</div>
575<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; location.<a class="code" href="structarmnn_1_1_check_location.html#a5e3562cda960da001597e7dd5679b140">AsString</a>()));</div>
576<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div>
577<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div>
578</div><!-- fragment -->
579<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00029">CheckLocation::AsString()</a>.</p>
580
581</div>
582</div>
583<a id="afb0302d3269537af9680c698599deac5"></a>
584<h2 class="memtitle"><span class="permalink"><a href="#afb0302d3269537af9680c698599deac5">&#9670;&nbsp;</a></span>CompatibleTypes()</h2>
585
586<div class="memitem">
587<div class="memproto">
588 <table class="memname">
589 <tr>
590 <td class="memname">bool CompatibleTypes </td>
591 <td>(</td>
592 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&#160;</td>
593 <td class="paramname"></td><td>)</td>
594 <td></td>
595 </tr>
596 </table>
597</div><div class="memdoc">
598
599<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00017">17</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
600<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div>
601<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
602<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;}</div>
603</div><!-- fragment -->
604</div>
605</div>
606<a id="a6bb19e0cf0c632e27058a609f05a5d02"></a>
607<h2 class="memtitle"><span class="permalink"><a href="#a6bb19e0cf0c632e27058a609f05a5d02">&#9670;&nbsp;</a></span>CompatibleTypes&lt; BFloat16 &gt;()</h2>
608
609<div class="memitem">
610<div class="memproto">
611 <table class="memname">
612 <tr>
613 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; <a class="el" href="classarmnn_1_1_b_float16.html">BFloat16</a> &gt; </td>
614 <td>(</td>
615 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
616 <td class="paramname"><em>dataType</em></td><td>)</td>
617 <td></td>
618 </tr>
619 </table>
620</div><div class="memdoc">
621
622<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00035">35</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
623<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
624<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> dataType == DataType::BFloat16;</div>
625<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
626</div><!-- fragment -->
627<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::BFloat16</a>.</p>
628
629</div>
630</div>
631<a id="af75354033a8fe40804ef8c0fda1663a4"></a>
632<h2 class="memtitle"><span class="permalink"><a href="#af75354033a8fe40804ef8c0fda1663a4">&#9670;&nbsp;</a></span>CompatibleTypes&lt; float &gt;()</h2>
633
634<div class="memitem">
635<div class="memproto">
636 <table class="memname">
637 <tr>
638 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; float &gt; </td>
639 <td>(</td>
640 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
641 <td class="paramname"><em>dataType</em></td><td>)</td>
642 <td></td>
643 </tr>
644 </table>
645</div><div class="memdoc">
646
647<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00023">23</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
648<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
649<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Float32;</div>
650<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div>
651</div><!-- fragment -->
652<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>.</p>
653
654</div>
655</div>
656<a id="acabe92532fe8b1e897a8f57045ee4708"></a>
657<h2 class="memtitle"><span class="permalink"><a href="#acabe92532fe8b1e897a8f57045ee4708">&#9670;&nbsp;</a></span>CompatibleTypes&lt; Half &gt;()</h2>
658
659<div class="memitem">
660<div class="memproto">
661 <table class="memname">
662 <tr>
663 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; <a class="el" href="namespacearmnn.html#a0b49aa352b84d572942185ce72cef751">Half</a> &gt; </td>
664 <td>(</td>
665 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
666 <td class="paramname"><em>dataType</em></td><td>)</td>
667 <td></td>
668 </tr>
669 </table>
670</div><div class="memdoc">
671
672<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00029">29</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
673<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
674<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Float16;</div>
675<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div>
676</div><!-- fragment -->
677<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::Float16</a>.</p>
678
679</div>
680</div>
681<a id="a787be51827fb835b5c60be66e00ceaac"></a>
682<h2 class="memtitle"><span class="permalink"><a href="#a787be51827fb835b5c60be66e00ceaac">&#9670;&nbsp;</a></span>CompatibleTypes&lt; int16_t &gt;()</h2>
683
684<div class="memitem">
685<div class="memproto">
686 <table class="memname">
687 <tr>
688 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; int16_t &gt; </td>
689 <td>(</td>
690 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
691 <td class="paramname"><em>dataType</em></td><td>)</td>
692 <td></td>
693 </tr>
694 </table>
695</div><div class="memdoc">
696
697<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00054">54</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
698<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div>
699<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS16;</div>
700<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div>
701</div><!-- fragment -->
702<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>.</p>
703
704</div>
705</div>
706<a id="a0324d8bcec2695e460417fdd5823f914"></a>
707<h2 class="memtitle"><span class="permalink"><a href="#a0324d8bcec2695e460417fdd5823f914">&#9670;&nbsp;</a></span>CompatibleTypes&lt; int32_t &gt;()</h2>
708
709<div class="memitem">
710<div class="memproto">
711 <table class="memname">
712 <tr>
713 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; int32_t &gt; </td>
714 <td>(</td>
715 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
716 <td class="paramname"><em>dataType</em></td><td>)</td>
717 <td></td>
718 </tr>
719 </table>
720</div><div class="memdoc">
721
722<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00060">60</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
723<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div>
724<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Signed32;</div>
725<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
726</div><!-- fragment -->
727<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>.</p>
728
729</div>
730</div>
731<a id="af792b8829217dbca5ec7bda667ee0dfb"></a>
732<h2 class="memtitle"><span class="permalink"><a href="#af792b8829217dbca5ec7bda667ee0dfb">&#9670;&nbsp;</a></span>CompatibleTypes&lt; int64_t &gt;()</h2>
733
734<div class="memitem">
735<div class="memproto">
736 <table class="memname">
737 <tr>
738 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; int64_t &gt; </td>
739 <td>(</td>
740 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
741 <td class="paramname"><em>dataType</em></td><td>)</td>
742 <td></td>
743 </tr>
744 </table>
745</div><div class="memdoc">
746
747<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00066">66</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
748<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div>
749<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Signed64;</div>
750<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div>
751</div><!-- fragment -->
752<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6ae1b3c9c6087a93b07c83e0b04f377a8d">armnn::Signed64</a>.</p>
753
754</div>
755</div>
756<a id="ae6c6b22d4ce4b9aa733236f9cb92608e"></a>
757<h2 class="memtitle"><span class="permalink"><a href="#ae6c6b22d4ce4b9aa733236f9cb92608e">&#9670;&nbsp;</a></span>CompatibleTypes&lt; int8_t &gt;()</h2>
758
759<div class="memitem">
760<div class="memproto">
761 <table class="memname">
762 <tr>
763 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; int8_t &gt; </td>
764 <td>(</td>
765 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
766 <td class="paramname"><em>dataType</em></td><td>)</td>
767 <td></td>
768 </tr>
769 </table>
770</div><div class="memdoc">
771
772<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00047">47</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
773<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div>
774<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS8</div>
775<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; || dataType == DataType::QAsymmS8;</div>
776<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div>
777</div><!-- fragment -->
778<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>.</p>
779
780</div>
781</div>
782<a id="a438e61647ca0873180d75c9f035b1611"></a>
783<h2 class="memtitle"><span class="permalink"><a href="#a438e61647ca0873180d75c9f035b1611">&#9670;&nbsp;</a></span>CompatibleTypes&lt; uint8_t &gt;()</h2>
784
785<div class="memitem">
786<div class="memproto">
787 <table class="memname">
788 <tr>
789 <td class="memname">bool <a class="el" href="namespacearmnn_utils.html#afb0302d3269537af9680c698599deac5">armnnUtils::CompatibleTypes</a>&lt; uint8_t &gt; </td>
790 <td>(</td>
791 <td class="paramtype"><a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
792 <td class="paramname"><em>dataType</em></td><td>)</td>
793 <td></td>
794 </tr>
795 </table>
796</div><div class="memdoc">
797
798<p class="definition">Definition at line <a class="el" href="_compatible_types_8cpp_source.html#l00041">41</a> of file <a class="el" href="_compatible_types_8cpp_source.html">CompatibleTypes.cpp</a>.</p>
799<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div>
800<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Boolean || dataType == DataType::QAsymmU8;</div>
801<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div>
802</div><!-- fragment -->
803<p class="reference">References <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::Boolean</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::QAsymmU8</a>.</p>
804
805</div>
806</div>
807<a id="ab4a89c3d0ff243bdabae3e404248d04a"></a>
808<h2 class="memtitle"><span class="permalink"><a href="#ab4a89c3d0ff243bdabae3e404248d04a">&#9670;&nbsp;</a></span>ConvertInt32ToOctalString()</h2>
809
810<div class="memitem">
811<div class="memproto">
812 <table class="memname">
813 <tr>
814 <td class="memname">std::string ConvertInt32ToOctalString </td>
815 <td>(</td>
816 <td class="paramtype">int&#160;</td>
817 <td class="paramname"><em>value</em></td><td>)</td>
818 <td></td>
819 </tr>
820 </table>
821</div><div class="memdoc">
822
823<p>Converts an int value into the Prototxt octal representation. </p>
824
825<p class="definition">Definition at line <a class="el" href="_prototxt_conversions_8cpp_source.html#l00017">17</a> of file <a class="el" href="_prototxt_conversions_8cpp_source.html">PrototxtConversions.cpp</a>.</p>
826<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div>
827<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; std::stringstream ss;</div>
828<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::string returnString;</div>
829<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; ++i)</div>
830<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div>
831<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;\\&quot;</span>;</div>
832<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; ss &lt;&lt; std::setw(3) &lt;&lt; std::setfill(<span class="charliteral">&#39;0&#39;</span>) &lt;&lt; std::oct &lt;&lt; ((value &gt;&gt; (i * 8)) &amp; 0xFF);</div>
833<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; }</div>
834<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
835<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; ss &gt;&gt; returnString;</div>
836<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> returnString;</div>
837<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div>
838</div><!-- fragment -->
839</div>
840</div>
841<a id="a78f149bb07186307e19e00015a8d151c"></a>
842<h2 class="memtitle"><span class="permalink"><a href="#a78f149bb07186307e19e00015a8d151c">&#9670;&nbsp;</a></span>ConvertTensorShapeToString()</h2>
843
844<div class="memitem">
845<div class="memproto">
846 <table class="memname">
847 <tr>
848 <td class="memname">std::string ConvertTensorShapeToString </td>
849 <td>(</td>
850 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
851 <td class="paramname"><em>shape</em></td><td>)</td>
852 <td></td>
853 </tr>
854 </table>
855</div><div class="memdoc">
856
857<p>Converts an TensorShape into Prototxt representation. </p>
858
859<p class="definition">Definition at line <a class="el" href="_prototxt_conversions_8cpp_source.html#l00032">32</a> of file <a class="el" href="_prototxt_conversions_8cpp_source.html">PrototxtConversions.cpp</a>.</p>
860<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div>
861<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; std::stringstream ss;</div>
862<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; shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() ; i++)</div>
863<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div>
864<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;dim {\n&quot;</span>;</div>
865<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;size: &quot;</span> &lt;&lt; std::to_string(shape[i]) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
866<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div>
867<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div>
868<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> ss.str();</div>
869<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
870<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div>
871</div><!-- fragment -->
872<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>.</p>
873
874</div>
875</div>
876<a id="a0d3b1be320610515e0cac8d745d9f8c2"></a>
877<h2 class="memtitle"><span class="permalink"><a href="#a0d3b1be320610515e0cac8d745d9f8c2">&#9670;&nbsp;</a></span>ExpandDims()</h2>
878
879<div class="memitem">
880<div class="memproto">
881 <table class="memname">
882 <tr>
883 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> ExpandDims </td>
884 <td>(</td>
885 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
886 <td class="paramname"><em>tensorShape</em>, </td>
887 </tr>
888 <tr>
889 <td class="paramkey"></td>
890 <td></td>
891 <td class="paramtype">int&#160;</td>
892 <td class="paramname"><em>axis</em>&#160;</td>
893 </tr>
894 <tr>
895 <td></td>
896 <td>)</td>
897 <td></td><td></td>
898 </tr>
899 </table>
900</div><div class="memdoc">
901
902<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00142">142</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
903<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
904<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputDim = tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() + 1;</div>
905<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
906<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (axis &lt; -armnn::numeric_cast&lt;int&gt;(outputDim) || axis &gt; armnn::numeric_cast&lt;int&gt;(tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>()))</div>
907<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
908<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(fmt::format(<span class="stringliteral">&quot;Invalid expansion axis {} for {}D input tensor. {}&quot;</span>,</div>
909<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; axis,</div>
910<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(),</div>
911<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>().AsString()));</div>
912<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
913<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
914<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (axis &lt; 0)</div>
915<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
916<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; axis = armnn::numeric_cast&lt;int&gt;(outputDim) + axis;</div>
917<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div>
918<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
919<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; std::vector&lt;unsigned int&gt; outputShape;</div>
920<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; outputShape.reserve(tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>());</div>
921<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> i = 0; i &lt; tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</div>
922<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
923<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; outputShape.push_back(tensorShape[i]);</div>
924<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
925<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; outputShape.insert(outputShape.begin() + axis, 1);</div>
926<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
927<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> { outputDim, outputShape.data() };</div>
928<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div>
929</div><!-- fragment -->
930<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, and <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>.</p>
931
932</div>
933</div>
934<a id="a9ef6d3649c5d3aa16a9839e3e2ad659b"></a>
935<h2 class="memtitle"><span class="permalink"><a href="#a9ef6d3649c5d3aa16a9839e3e2ad659b">&#9670;&nbsp;</a></span>ExpandDimsToRank()</h2>
936
937<div class="memitem">
938<div class="memproto">
939 <table class="memname">
940 <tr>
941 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> ExpandDimsToRank </td>
942 <td>(</td>
943 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
944 <td class="paramname"><em>tensorShape</em>, </td>
945 </tr>
946 <tr>
947 <td class="paramkey"></td>
948 <td></td>
949 <td class="paramtype">unsigned int&#160;</td>
950 <td class="paramname"><em>rank</em>&#160;</td>
951 </tr>
952 <tr>
953 <td></td>
954 <td>)</td>
955 <td></td><td></td>
956 </tr>
957 </table>
958</div><div class="memdoc">
959
960<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00170">170</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
961<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div>
962<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// Can&#39;t expand if rank is smaller than current shape</span></div>
963<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span> (tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &gt;= rank)</div>
964<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
965<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> tensorShape;</div>
966<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
967<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div>
968<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; std::vector&lt;unsigned int&gt; newShape;</div>
969<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
970<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// First add 1s to the beginning of the tensorInfo to fill in the space</span></div>
971<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; rank - tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</div>
972<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
973<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; newShape.push_back(1);</div>
974<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div>
975<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; </div>
976<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// Then iterate through the original shape and append it to the new shape with the added 1s</span></div>
977<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</div>
978<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div>
979<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; newShape.push_back(tensorShape[i]);</div>
980<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
981<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
982<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(newShape.size()), newShape.data());</div>
983<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;}</div>
984</div><!-- fragment -->
985<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>.</p>
986
987</div>
988</div>
989<a id="a1c9097ab13afc54b48c503c6487aaee1"></a>
990<h2 class="memtitle"><span class="permalink"><a href="#a1c9097ab13afc54b48c503c6487aaee1">&#9670;&nbsp;</a></span>FindMinMax()</h2>
991
992<div class="memitem">
993<div class="memproto">
994 <table class="memname">
995 <tr>
996 <td class="memname">std::pair&lt; float, float &gt; FindMinMax </td>
997 <td>(</td>
998 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle.html">armnn::ITensorHandle</a> *&#160;</td>
999 <td class="paramname"><em>tensorHandle</em></td><td>)</td>
1000 <td></td>
1001 </tr>
1002 </table>
1003</div><div class="memdoc">
1004
1005<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00081">81</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1006<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;{</div>
1007<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">auto</span> tensor_data = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span> *<span class="keyword">&gt;</span>(tensorHandle-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">Map</a>(<span class="keyword">true</span>));</div>
1008<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">auto</span> tensor_size = tensorHandle-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle.html#affd5aae75cad90f472f96cfd25a13f29">GetShape</a>().<a class="code" href="classarmnn_1_1_tensor_shape.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>();</div>
1009<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
1010<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Set min/max initially to first value in tensor</span></div>
1011<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">float</span> min = tensor_data[0];</div>
1012<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">float</span> max = tensor_data[0];</div>
1013<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
1014<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// Loop over rest of tensor and update min/max if necessary</span></div>
1015<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> val = 1; val &lt; tensor_size; val++)</div>
1016<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
1017<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (tensor_data[val] &lt; min)</div>
1018<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div>
1019<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; min = tensor_data[val];</div>
1020<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
1021<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tensor_data[val] &gt; max)</div>
1022<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div>
1023<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; max = tensor_data[val];</div>
1024<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
1025<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
1026<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
1027<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; tensorHandle-&gt;<a class="code" href="classarmnn_1_1_i_tensor_handle.html#a563609828050f1b3a7868c23f3365923">Unmap</a>();</div>
1028<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
1029<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> std::make_pair(min, max);</div>
1030<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div>
1031</div><!-- fragment -->
1032<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00181">TensorShape::GetNumElements()</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#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.html#a563609828050f1b3a7868c23f3365923">ITensorHandle::Unmap()</a>.</p>
1033
1034</div>
1035</div>
1036<a id="a276aac5f7a8bdc3db4f62203870ca13b"></a>
1037<h2 class="memtitle"><span class="permalink"><a href="#a276aac5f7a8bdc3db4f62203870ca13b">&#9670;&nbsp;</a></span>GetNumElementsAfter()</h2>
1038
1039<div class="memitem">
1040<div class="memproto">
1041 <table class="memname">
1042 <tr>
1043 <td class="memname">unsigned int GetNumElementsAfter </td>
1044 <td>(</td>
1045 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
1046 <td class="paramname"><em>shape</em>, </td>
1047 </tr>
1048 <tr>
1049 <td class="paramkey"></td>
1050 <td></td>
1051 <td class="paramtype">unsigned int&#160;</td>
1052 <td class="paramname"><em>axis</em>&#160;</td>
1053 </tr>
1054 <tr>
1055 <td></td>
1056 <td>)</td>
1057 <td></td><td></td>
1058 </tr>
1059 </table>
1060</div><div class="memdoc">
1061
1062<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00261">261</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1063<div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div>
1064<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDim = shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div>
1065<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (axis &gt;= numDim)</div>
1066<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div>
1067<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(fmt::format(</div>
1068<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="stringliteral">&quot;{}: axis index [{}D] indexes beyond the number of dimesions of the tensor shape [{}D]&quot;</span>,</div>
1069<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="stringliteral">&quot;GetNumElementsAfter&quot;</span>,</div>
1070<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; axis,</div>
1071<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; numDim));</div>
1072<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
1073<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count = 1;</div>
1074<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = axis+1; i &lt; numDim; i++)</div>
1075<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
1076<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; count *= shape[i];</div>
1077<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div>
1078<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> count;</div>
1079<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div>
1080</div><!-- fragment -->
1081<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>.</p>
1082
1083<p class="reference">Referenced by <a class="el" href="_tensor_utils_8cpp_source.html#l00280">GetPerAxisParams()</a>, <a class="el" href="_base_iterator_8hpp_source.html#l00721">PerAxisIterator&lt; const int8_t, Decoder&lt; float &gt; &gt;::PerAxisIterator()</a>, and <a class="el" href="_tensor_utils_8cpp_source.html#l00307">ToFloatArray()</a>.</p>
1084
1085</div>
1086</div>
1087<a id="af57864f5e03358d14c2988edae912b8b"></a>
1088<h2 class="memtitle"><span class="permalink"><a href="#af57864f5e03358d14c2988edae912b8b">&#9670;&nbsp;</a></span>GetNumElementsBetween()</h2>
1089
1090<div class="memitem">
1091<div class="memproto">
1092 <table class="memname">
1093 <tr>
1094 <td class="memname">unsigned int GetNumElementsBetween </td>
1095 <td>(</td>
1096 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
1097 <td class="paramname"><em>shape</em>, </td>
1098 </tr>
1099 <tr>
1100 <td class="paramkey"></td>
1101 <td></td>
1102 <td class="paramtype">unsigned int&#160;</td>
1103 <td class="paramname"><em>firstAxisInclusive</em>, </td>
1104 </tr>
1105 <tr>
1106 <td class="paramkey"></td>
1107 <td></td>
1108 <td class="paramtype">unsigned int&#160;</td>
1109 <td class="paramname"><em>lastAxisExclusive</em>&#160;</td>
1110 </tr>
1111 <tr>
1112 <td></td>
1113 <td>)</td>
1114 <td></td><td></td>
1115 </tr>
1116 </table>
1117</div><div class="memdoc">
1118
1119<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00209">209</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1120<div class="fragment"><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;{</div>
1121<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (firstAxisInclusive &gt; lastAxisExclusive)</div>
1122<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div>
1123<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(fmt::format(</div>
1124<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="stringliteral">&quot;GetNumElementsBetween: firstAxisInclusive [{}D] is greater than lastAxisExclusive [{}D]&quot;</span>,</div>
1125<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; firstAxisInclusive,</div>
1126<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; lastAxisExclusive));</div>
1127<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
1128<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (lastAxisExclusive &gt; shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>())</div>
1129<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div>
1130<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(fmt::format(</div>
1131<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="stringliteral">&quot;{}: lastAxisExclusive [{}D] is greater than the number of dimensions of the tensor shape [{}D]&quot;</span></div>
1132<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="stringliteral">&quot;GetNumElementsBetween&quot;</span>,</div>
1133<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; lastAxisExclusive,</div>
1134<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; shape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>()));</div>
1135<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
1136<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count = 1;</div>
1137<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = firstAxisInclusive; i &lt; lastAxisExclusive; i++)</div>
1138<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
1139<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; count *= shape[i];</div>
1140<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
1141<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> count;</div>
1142<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;}</div>
1143</div><!-- fragment -->
1144<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>.</p>
1145
1146<p class="reference">Referenced by <a class="el" href="_arg_min_max_8cpp_source.html#l00017">armnn::ArgMinMax()</a>, <a class="el" href="_log_softmax_8cpp_source.html#l00027">armnn::LogSoftmax()</a>, and <a class="el" href="_softmax_8cpp_source.html#l00017">armnn::Softmax()</a>.</p>
1147
1148</div>
1149</div>
1150<a id="a1826e433f7e6817976a8175b4ef8296c"></a>
1151<h2 class="memtitle"><span class="permalink"><a href="#a1826e433f7e6817976a8175b4ef8296c">&#9670;&nbsp;</a></span>GetPerAxisParams()</h2>
1152
1153<div class="memitem">
1154<div class="memproto">
1155 <table class="memname">
1156 <tr>
1157 <td class="memname">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams </td>
1158 <td>(</td>
1159 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1160 <td class="paramname"><em>info</em></td><td>)</td>
1161 <td></td>
1162 </tr>
1163 </table>
1164</div><div class="memdoc">
1165
1166<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00280">280</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1167<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div>
1168<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt;&amp; scales = <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScales();</div>
1169<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classarmnn_1_1_optional.html">armnn::Optional&lt;unsigned int&gt;</a> quantizationDim = <a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationDim();</div>
1170<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div>
1171<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div>
1172<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(</div>
1173<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; std::string(<span class="stringliteral">&quot;Per-axis quantization params not set for tensor of type &quot;</span>) +</div>
1174<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType()), <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div>
1175<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
1176<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisFactor = <a class="code" href="namespacearmnn_utils.html#a276aac5f7a8bdc3db4f62203870ca13b">GetNumElementsAfter</a>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetShape(), quantizationDim.<a class="code" href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">value</a>()) ;</div>
1177<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; </div>
1178<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> { axisFactor, scales };</div>
1179<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;}</div>
1180</div><!-- fragment -->
1181<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="_types_utils_8hpp_source.html#l00233">armnn::GetDataTypeName()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00261">GetNumElementsAfter()</a>, <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, and <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; IsReference, T &gt;::value()</a>.</p>
1182
1183<p class="reference">Referenced by <a class="el" href="_decoders_8hpp_source.html#l00064">armnn::MakeDecoder()</a>, and <a class="el" href="_encoders_8hpp_source.html#l00019">armnn::MakeEncoder()</a>.</p>
1184
1185</div>
1186</div>
1187<a id="aee5883b056e03a22db41b7b471fb598e"></a>
1188<h2 class="memtitle"><span class="permalink"><a href="#aee5883b056e03a22db41b7b471fb598e">&#9670;&nbsp;</a></span>GetTensorInfo() <span class="overload">[1/2]</span></h2>
1189
1190<div class="memitem">
1191<div class="memproto">
1192 <table class="memname">
1193 <tr>
1194 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> GetTensorInfo </td>
1195 <td>(</td>
1196 <td class="paramtype">unsigned int&#160;</td>
1197 <td class="paramname"><em>numberOfBatches</em>, </td>
1198 </tr>
1199 <tr>
1200 <td class="paramkey"></td>
1201 <td></td>
1202 <td class="paramtype">unsigned int&#160;</td>
1203 <td class="paramname"><em>numberOfChannels</em>, </td>
1204 </tr>
1205 <tr>
1206 <td class="paramkey"></td>
1207 <td></td>
1208 <td class="paramtype">unsigned int&#160;</td>
1209 <td class="paramname"><em>depth</em>, </td>
1210 </tr>
1211 <tr>
1212 <td class="paramkey"></td>
1213 <td></td>
1214 <td class="paramtype">unsigned int&#160;</td>
1215 <td class="paramname"><em>height</em>, </td>
1216 </tr>
1217 <tr>
1218 <td class="paramkey"></td>
1219 <td></td>
1220 <td class="paramtype">unsigned int&#160;</td>
1221 <td class="paramname"><em>width</em>, </td>
1222 </tr>
1223 <tr>
1224 <td class="paramkey"></td>
1225 <td></td>
1226 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1227 <td class="paramname"><em>dataLayout</em>, </td>
1228 </tr>
1229 <tr>
1230 <td class="paramkey"></td>
1231 <td></td>
1232 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&#160;</td>
1233 <td class="paramname"><em>dataType</em>&#160;</td>
1234 </tr>
1235 <tr>
1236 <td></td>
1237 <td>)</td>
1238 <td></td><td></td>
1239 </tr>
1240 </table>
1241</div><div class="memdoc">
1242
1243<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00060">60</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1244<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div>
1245<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div>
1246<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
1247<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">case</span> DataLayout::NDHWC:</div>
1248<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>({numberOfBatches, depth, height, width, numberOfChannels}, dataType);</div>
1249<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> DataLayout::NCDHW:</div>
1250<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>({numberOfBatches, numberOfChannels, depth, height, width}, dataType);</div>
1251<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">default</span>:</div>
1252<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(<span class="stringliteral">&quot;Unknown data layout [&quot;</span></div>
1253<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; + std::to_string(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dataLayout)) +</div>
1254<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="stringliteral">&quot;]&quot;</span>, <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div>
1255<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
1256<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div>
1257</div><!-- fragment -->
1258<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a884e0167ebf9bbe6cfd6ca5ab97ab015">armnn::NCDHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a4dd0194b114cbf51da5b3a72569863ef">armnn::NDHWC</a>.</p>
1259
1260</div>
1261</div>
1262<a id="acee63cd08da47910fc166a1990988fa8"></a>
1263<h2 class="memtitle"><span class="permalink"><a href="#acee63cd08da47910fc166a1990988fa8">&#9670;&nbsp;</a></span>GetTensorInfo() <span class="overload">[2/2]</span></h2>
1264
1265<div class="memitem">
1266<div class="memproto">
1267 <table class="memname">
1268 <tr>
1269 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> GetTensorInfo </td>
1270 <td>(</td>
1271 <td class="paramtype">unsigned int&#160;</td>
1272 <td class="paramname"><em>numberOfBatches</em>, </td>
1273 </tr>
1274 <tr>
1275 <td class="paramkey"></td>
1276 <td></td>
1277 <td class="paramtype">unsigned int&#160;</td>
1278 <td class="paramname"><em>numberOfChannels</em>, </td>
1279 </tr>
1280 <tr>
1281 <td class="paramkey"></td>
1282 <td></td>
1283 <td class="paramtype">unsigned int&#160;</td>
1284 <td class="paramname"><em>height</em>, </td>
1285 </tr>
1286 <tr>
1287 <td class="paramkey"></td>
1288 <td></td>
1289 <td class="paramtype">unsigned int&#160;</td>
1290 <td class="paramname"><em>width</em>, </td>
1291 </tr>
1292 <tr>
1293 <td class="paramkey"></td>
1294 <td></td>
1295 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1296 <td class="paramname"><em>dataLayout</em>, </td>
1297 </tr>
1298 <tr>
1299 <td class="paramkey"></td>
1300 <td></td>
1301 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&#160;</td>
1302 <td class="paramname"><em>dataType</em>&#160;</td>
1303 </tr>
1304 <tr>
1305 <td></td>
1306 <td>)</td>
1307 <td></td><td></td>
1308 </tr>
1309 </table>
1310</div><div class="memdoc">
1311
1312<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00040">40</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1313<div class="fragment"><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div>
1314<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div>
1315<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div>
1316<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW:</div>
1317<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>({numberOfBatches, numberOfChannels, height, width}, dataType);</div>
1318<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC:</div>
1319<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a>({numberOfBatches, height, width, numberOfChannels}, dataType);</div>
1320<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">default</span>:</div>
1321<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(<span class="stringliteral">&quot;Unknown data layout [&quot;</span></div>
1322<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; + std::to_string(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dataLayout)) +</div>
1323<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="stringliteral">&quot;]&quot;</span>, <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div>
1324<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
1325<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
1326</div><!-- fragment -->
1327<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>.</p>
1328
1329</div>
1330</div>
1331<a id="ab53d94ea22b51c6bcdf9584644bd67bb"></a>
1332<h2 class="memtitle"><span class="permalink"><a href="#ab53d94ea22b51c6bcdf9584644bd67bb">&#9670;&nbsp;</a></span>GetTensorShape()</h2>
1333
1334<div class="memitem">
1335<div class="memproto">
1336 <table class="memname">
1337 <tr>
1338 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> GetTensorShape </td>
1339 <td>(</td>
1340 <td class="paramtype">unsigned int&#160;</td>
1341 <td class="paramname"><em>numberOfBatches</em>, </td>
1342 </tr>
1343 <tr>
1344 <td class="paramkey"></td>
1345 <td></td>
1346 <td class="paramtype">unsigned int&#160;</td>
1347 <td class="paramname"><em>numberOfChannels</em>, </td>
1348 </tr>
1349 <tr>
1350 <td class="paramkey"></td>
1351 <td></td>
1352 <td class="paramtype">unsigned int&#160;</td>
1353 <td class="paramname"><em>height</em>, </td>
1354 </tr>
1355 <tr>
1356 <td class="paramkey"></td>
1357 <td></td>
1358 <td class="paramtype">unsigned int&#160;</td>
1359 <td class="paramname"><em>width</em>, </td>
1360 </tr>
1361 <tr>
1362 <td class="paramkey"></td>
1363 <td></td>
1364 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
1365 <td class="paramname"><em>dataLayout</em>&#160;</td>
1366 </tr>
1367 <tr>
1368 <td></td>
1369 <td>)</td>
1370 <td></td><td></td>
1371 </tr>
1372 </table>
1373</div><div class="memdoc">
1374
1375<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00021">21</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1376<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div>
1377<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div>
1378<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div>
1379<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW:</div>
1380<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>({numberOfBatches, numberOfChannels, height, width});</div>
1381<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC:</div>
1382<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>({numberOfBatches, height, width, numberOfChannels});</div>
1383<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">default</span>:</div>
1384<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(<span class="stringliteral">&quot;Unknown data layout [&quot;</span></div>
1385<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; + std::to_string(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dataLayout)) +</div>
1386<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="stringliteral">&quot;]&quot;</span>, <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div>
1387<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; }</div>
1388<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
1389</div><!-- fragment -->
1390<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, and <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::NHWC</a>.</p>
1391
1392</div>
1393</div>
1394<a id="ac93cb1365b4bcb67df2a3164606096c5"></a>
1395<h2 class="memtitle"><span class="permalink"><a href="#ac93cb1365b4bcb67df2a3164606096c5">&#9670;&nbsp;</a></span>GetUnsignedAxis()</h2>
1396
1397<div class="memitem">
1398<div class="memproto">
1399 <table class="memname">
1400 <tr>
1401 <td class="memname">unsigned int GetUnsignedAxis </td>
1402 <td>(</td>
1403 <td class="paramtype">const unsigned int&#160;</td>
1404 <td class="paramname"><em>inputDimension</em>, </td>
1405 </tr>
1406 <tr>
1407 <td class="paramkey"></td>
1408 <td></td>
1409 <td class="paramtype">const int&#160;</td>
1410 <td class="paramname"><em>axis</em>&#160;</td>
1411 </tr>
1412 <tr>
1413 <td></td>
1414 <td>)</td>
1415 <td></td><td></td>
1416 </tr>
1417 </table>
1418</div><div class="memdoc">
1419
1420<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00236">236</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
1421<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div>
1422<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (axis &gt;= armnn::numeric_cast&lt;int&gt;(inputDimension))</div>
1423<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
1424<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(fmt::format(</div>
1425<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="stringliteral">&quot;{}: axis index [{}] is not less than the number of dimensions [{}D]&quot;</span>,</div>
1426<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="stringliteral">&quot;GetUnsignedAxis&quot;</span>,</div>
1427<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; axis,</div>
1428<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; inputDimension));</div>
1429<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
1430<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (axis &lt; -armnn::numeric_cast&lt;int&gt;(inputDimension))</div>
1431<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div>
1432<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(fmt::format(</div>
1433<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="stringliteral">&quot;{}: axis index [{}] lower than the negative of the number of dimensions [{}]&quot;</span>,</div>
1434<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="stringliteral">&quot;GetUnsignedAxis&quot;</span>,</div>
1435<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; axis,</div>
1436<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; -armnn::numeric_cast&lt;int&gt;(inputDimension)));</div>
1437<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
1438<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; </div>
1439<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = axis &lt; 0 ?</div>
1440<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; inputDimension - armnn::numeric_cast&lt;unsigned int&gt;(<a class="code" href="structarmnn_1_1abs.html">abs</a>(axis))</div>
1441<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; : <a class="code" href="namespacearmnn.html">armnn</a>::<a class="code" href="namespacearmnn.html#a375ca3cff9f1b005d1412dc5f3cf5b6e">numeric_cast</a>&lt;unsigned int&gt;(axis);</div>
1442<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> uAxis;</div>
1443<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div>
1444</div><!-- fragment -->
1445<p class="reference">Referenced by <a class="el" href="_arg_min_max_8cpp_source.html#l00017">armnn::ArgMinMax()</a>, <a class="el" href="_cl_arg_min_max_workload_8cpp_source.html#l00055">ClArgMinMaxWorkload::ClArgMinMaxWorkload()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00377">armnn::ComputeSplitAxis()</a>, <a class="el" href="_arg_min_max_layer_8cpp_source.html#l00037">ArgMinMaxLayer::InferOutputShapes()</a>, <a class="el" href="_neon_arg_min_max_workload_8cpp_source.html#l00055">NeonArgMinMaxWorkload::NeonArgMinMaxWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l00629">ArgMinMaxQueueDescriptor::Validate()</a>.</p>
1446
1447</div>
1448</div>
1449<a id="a662b45b5a4d48a01e967c0b28b6a552b"></a>
1450<h2 class="memtitle"><span class="permalink"><a href="#a662b45b5a4d48a01e967c0b28b6a552b">&#9670;&nbsp;</a></span>GraphTopologicalSort()</h2>
1451
1452<div class="memitem">
1453<div class="memproto">
1454 <table class="memname">
1455 <tr>
1456 <td class="memname">bool armnnUtils::GraphTopologicalSort </td>
1457 <td>(</td>
1458 <td class="paramtype">const TTargetNodes &amp;&#160;</td>
1459 <td class="paramname"><em>targetNodes</em>, </td>
1460 </tr>
1461 <tr>
1462 <td class="paramkey"></td>
1463 <td></td>
1464 <td class="paramtype">std::function&lt; std::vector&lt; TNodeId &gt;(TNodeId)&gt;&#160;</td>
1465 <td class="paramname"><em>getIncomingEdges</em>, </td>
1466 </tr>
1467 <tr>
1468 <td class="paramkey"></td>
1469 <td></td>
1470 <td class="paramtype">std::vector&lt; TNodeId &gt; &amp;&#160;</td>
1471 <td class="paramname"><em>outSorted</em>&#160;</td>
1472 </tr>
1473 <tr>
1474 <td></td>
1475 <td>)</td>
1476 <td></td><td></td>
1477 </tr>
1478 </table>
1479</div><div class="memdoc">
1480
1481<p class="definition">Definition at line <a class="el" href="_graph_topological_sort_8hpp_source.html#l00110">110</a> of file <a class="el" href="_graph_topological_sort_8hpp_source.html">GraphTopologicalSort.hpp</a>.</p>
1482<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div>
1483<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; outSorted.clear();</div>
1484<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; std::map&lt;TNodeId, NodeState&gt; nodeStates;</div>
1485<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
1486<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (TNodeId targetNode : targetNodes)</div>
1487<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div>
1488<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (!TopologicallySort(targetNode, getIncomingEdges, outSorted, nodeStates))</div>
1489<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div>
1490<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1491<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
1492<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
1493<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
1494<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1495<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;}</div>
1496</div><!-- fragment -->
1497</div>
1498</div>
1499<a id="ad5310a199d4969927169ed084b1f6c28"></a>
1500<h2 class="memtitle"><span class="permalink"><a href="#ad5310a199d4969927169ed084b1f6c28">&#9670;&nbsp;</a></span>MakeInputTensors()</h2>
1501
1502<div class="memitem">
1503<div class="memproto">
1504<table class="mlabels">
1505 <tr>
1506 <td class="mlabels-left">
1507 <table class="memname">
1508 <tr>
1509 <td class="memname"><a class="el" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a> armnnUtils::MakeInputTensors </td>
1510 <td>(</td>
1511 <td class="paramtype">const std::vector&lt; <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &gt; &amp;&#160;</td>
1512 <td class="paramname"><em>inputBindings</em>, </td>
1513 </tr>
1514 <tr>
1515 <td class="paramkey"></td>
1516 <td></td>
1517 <td class="paramtype">const std::vector&lt; <a class="el" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a> &gt; &amp;&#160;</td>
1518 <td class="paramname"><em>inputDataContainers</em>&#160;</td>
1519 </tr>
1520 <tr>
1521 <td></td>
1522 <td>)</td>
1523 <td></td><td></td>
1524 </tr>
1525 </table>
1526 </td>
1527 <td class="mlabels-right">
1528<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1529 </tr>
1530</table>
1531</div><div class="memdoc">
1532
1533<p class="definition">Definition at line <a class="el" href="_tensor_i_o_utils_8hpp_source.html#l00017">17</a> of file <a class="el" href="_tensor_i_o_utils_8hpp_source.html">TensorIOUtils.hpp</a>.</p>
1534<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div>
1535<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="namespacearmnn.html#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a> inputTensors;</div>
1536<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
1537<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> numInputs = inputBindings.size();</div>
1538<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">if</span> (numInputs != inputDataContainers.size())</div>
1539<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div>
1540<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(fmt::format(<span class="stringliteral">&quot;The number of inputs does not match number of &quot;</span></div>
1541<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="stringliteral">&quot;tensor data containers: {0} != {1}&quot;</span>,</div>
1542<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; numInputs,</div>
1543<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; inputDataContainers.size()));</div>
1544<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; }</div>
1545<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
1546<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numInputs; i++)</div>
1547<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div>
1548<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a>&amp; inputBinding = inputBindings[i];</div>
1549<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a>&amp; inputData = inputDataContainers[i];</div>
1550<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
1551<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; mapbox::util::apply_visitor([&amp;](<span class="keyword">auto</span>&amp;&amp; value)</div>
1552<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div>
1553<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (value.size() != inputBinding.second.GetNumElements())</div>
1554<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div>
1555<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; throw armnn::Exception(fmt::format(<span class="stringliteral">&quot;The input tensor has incorrect size (expected {0} got {1})&quot;</span>,</div>
1556<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; inputBinding.second.GetNumElements(),</div>
1557<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; value.size()));</div>
1558<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div>
1559<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> inputTensorInfo = inputBinding.second;</div>
1560<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8ffca1e21bdfa7f945617acd606aac91">SetConstant</a>(<span class="keyword">true</span>);</div>
1561<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.html">armnn::ConstTensor</a> inputTensor(inputTensorInfo, value.data());</div>
1562<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; inputTensors.push_back(std::make_pair(inputBinding.first, inputTensor));</div>
1563<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; },</div>
1564<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; inputData);</div>
1565<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div>
1566<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
1567<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> inputTensors;</div>
1568<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div>
1569</div><!-- fragment -->
1570<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00518">TensorInfo::SetConstant()</a>.</p>
1571
1572</div>
1573</div>
1574<a id="ad4efd5a7fa660df5246466d83517220d"></a>
1575<h2 class="memtitle"><span class="permalink"><a href="#ad4efd5a7fa660df5246466d83517220d">&#9670;&nbsp;</a></span>MakeOutputTensors()</h2>
1576
1577<div class="memitem">
1578<div class="memproto">
1579<table class="mlabels">
1580 <tr>
1581 <td class="mlabels-left">
1582 <table class="memname">
1583 <tr>
1584 <td class="memname"><a class="el" href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a> armnnUtils::MakeOutputTensors </td>
1585 <td>(</td>
1586 <td class="paramtype">const std::vector&lt; <a class="el" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a> &gt; &amp;&#160;</td>
1587 <td class="paramname"><em>outputBindings</em>, </td>
1588 </tr>
1589 <tr>
1590 <td class="paramkey"></td>
1591 <td></td>
1592 <td class="paramtype">std::vector&lt; <a class="el" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a> &gt; &amp;&#160;</td>
1593 <td class="paramname"><em>outputDataContainers</em>&#160;</td>
1594 </tr>
1595 <tr>
1596 <td></td>
1597 <td>)</td>
1598 <td></td><td></td>
1599 </tr>
1600 </table>
1601 </td>
1602 <td class="mlabels-right">
1603<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1604 </tr>
1605</table>
1606</div><div class="memdoc">
1607
1608<p class="definition">Definition at line <a class="el" href="_tensor_i_o_utils_8hpp_source.html#l00056">56</a> of file <a class="el" href="_tensor_i_o_utils_8hpp_source.html">TensorIOUtils.hpp</a>.</p>
1609<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div>
1610<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a> outputTensors;</div>
1611<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
1612<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> numOutputs = outputBindings.size();</div>
1613<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (numOutputs != outputDataContainers.size())</div>
1614<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div>
1615<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(fmt::format(<span class="stringliteral">&quot;Number of outputs does not match number&quot;</span></div>
1616<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="stringliteral">&quot;of tensor data containers: {0} != {1}&quot;</span>,</div>
1617<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; numOutputs,</div>
1618<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; outputDataContainers.size()));</div>
1619<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
1620<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
1621<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numOutputs; i++)</div>
1622<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
1623<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a>&amp; outputBinding = outputBindings[i];</div>
1624<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">TContainer</a>&amp; outputData = outputDataContainers[i];</div>
1625<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
1626<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; mapbox::util::apply_visitor([&amp;](<span class="keyword">auto</span>&amp;&amp; value)</div>
1627<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
1628<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (value.size() != outputBinding.second.GetNumElements())</div>
1629<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
1630<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; throw armnn::Exception(<span class="stringliteral">&quot;Output tensor has incorrect size&quot;</span>);</div>
1631<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
1632<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
1633<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classarmnn_1_1_tensor.html">armnn::Tensor</a> outputTensor(outputBinding.second, value.data());</div>
1634<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; outputTensors.push_back(std::make_pair(outputBinding.first, outputTensor));</div>
1635<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; },</div>
1636<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; outputData);</div>
1637<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
1638<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
1639<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> outputTensors;</div>
1640<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div>
1641</div><!-- fragment -->
1642</div>
1643</div>
1644<a id="ab075020544612cd151ebdd08db537396"></a>
1645<h2 class="memtitle"><span class="permalink"><a href="#ab075020544612cd151ebdd08db537396">&#9670;&nbsp;</a></span>NonNegative()</h2>
1646
1647<div class="memitem">
1648<div class="memproto">
1649 <table class="memname">
1650 <tr>
1651 <td class="memname">uint32_t NonNegative </td>
1652 <td>(</td>
1653 <td class="paramtype">const char *&#160;</td>
1654 <td class="paramname"><em>expr</em>, </td>
1655 </tr>
1656 <tr>
1657 <td class="paramkey"></td>
1658 <td></td>
1659 <td class="paramtype">int32_t&#160;</td>
1660 <td class="paramname"><em>value</em>, </td>
1661 </tr>
1662 <tr>
1663 <td class="paramkey"></td>
1664 <td></td>
1665 <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.html">CheckLocation</a> &amp;&#160;</td>
1666 <td class="paramname"><em>location</em>&#160;</td>
1667 </tr>
1668 <tr>
1669 <td></td>
1670 <td>)</td>
1671 <td></td><td></td>
1672 </tr>
1673 </table>
1674</div><div class="memdoc">
1675
1676<p class="definition">Definition at line <a class="el" href="_verification_helpers_8cpp_source.html#l00035">35</a> of file <a class="el" href="_verification_helpers_8cpp_source.html">VerificationHelpers.cpp</a>.</p>
1677<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
1678<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (value &lt; 0)</div>
1679<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div>
1680<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_parse_exception.html">ParseException</a>(fmt::format(<span class="stringliteral">&quot;&#39;{}&#39; must be non-negative, received: {} at {}&quot;</span>,</div>
1681<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; expr,</div>
1682<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; value,</div>
1683<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; location.<a class="code" href="structarmnn_1_1_check_location.html#a5e3562cda960da001597e7dd5679b140">AsString</a>()));</div>
1684<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
1685<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">else</span></div>
1686<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div>
1687<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value);</div>
1688<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
1689<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
1690</div><!-- fragment -->
1691<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00029">CheckLocation::AsString()</a>.</p>
1692
1693</div>
1694</div>
1695<a id="a49ba5984d8cde4299d8ef15c9e556587"></a>
1696<h2 class="memtitle"><span class="permalink"><a href="#a49ba5984d8cde4299d8ef15c9e556587">&#9670;&nbsp;</a></span>operator==() <span class="overload">[1/2]</span></h2>
1697
1698<div class="memitem">
1699<div class="memproto">
1700 <table class="memname">
1701 <tr>
1702 <td class="memname">bool operator== </td>
1703 <td>(</td>
1704 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> &amp;&#160;</td>
1705 <td class="paramname"><em>dataLayout</em>, </td>
1706 </tr>
1707 <tr>
1708 <td class="paramkey"></td>
1709 <td></td>
1710 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
1711 <td class="paramname"><em>indexed</em>&#160;</td>
1712 </tr>
1713 <tr>
1714 <td></td>
1715 <td>)</td>
1716 <td></td><td></td>
1717 </tr>
1718 </table>
1719</div><div class="memdoc">
1720
1721<p>Equality methods. </p>
1722
1723<p class="definition">Definition at line <a class="el" href="_data_layout_indexed_8cpp_source.html#l00046">46</a> of file <a class="el" href="_data_layout_indexed_8cpp_source.html">DataLayoutIndexed.cpp</a>.</p>
1724<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div>
1725<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> dataLayout == indexed.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>();</div>
1726<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
1727</div><!-- fragment -->
1728<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed::GetDataLayout()</a>.</p>
1729
1730</div>
1731</div>
1732<a id="a0448088ed94f810bd2464f3afd1859f0"></a>
1733<h2 class="memtitle"><span class="permalink"><a href="#a0448088ed94f810bd2464f3afd1859f0">&#9670;&nbsp;</a></span>operator==() <span class="overload">[2/2]</span></h2>
1734
1735<div class="memitem">
1736<div class="memproto">
1737 <table class="memname">
1738 <tr>
1739 <td class="memname">bool operator== </td>
1740 <td>(</td>
1741 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.html">DataLayoutIndexed</a> &amp;&#160;</td>
1742 <td class="paramname"><em>indexed</em>, </td>
1743 </tr>
1744 <tr>
1745 <td class="paramkey"></td>
1746 <td></td>
1747 <td class="paramtype">const <a class="el" href="namespacearmnn.html#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> &amp;&#160;</td>
1748 <td class="paramname"><em>dataLayout</em>&#160;</td>
1749 </tr>
1750 <tr>
1751 <td></td>
1752 <td>)</td>
1753 <td></td><td></td>
1754 </tr>
1755 </table>
1756</div><div class="memdoc">
1757
1758<p class="definition">Definition at line <a class="el" href="_data_layout_indexed_8cpp_source.html#l00051">51</a> of file <a class="el" href="_data_layout_indexed_8cpp_source.html">DataLayoutIndexed.cpp</a>.</p>
1759<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
1760<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> indexed.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.html#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>() == dataLayout;</div>
1761<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div>
1762</div><!-- fragment -->
1763<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.html#l00022">DataLayoutIndexed::GetDataLayout()</a>.</p>
1764
1765</div>
1766</div>
1767<a id="af3c74017185773dd61d8ca6662d65d43"></a>
1768<h2 class="memtitle"><span class="permalink"><a href="#af3c74017185773dd61d8ca6662d65d43">&#9670;&nbsp;</a></span>Permute()</h2>
1769
1770<div class="memitem">
1771<div class="memproto">
1772 <table class="memname">
1773 <tr>
1774 <td class="memname">void Permute </td>
1775 <td>(</td>
1776 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
1777 <td class="paramname"><em>dstShape</em>, </td>
1778 </tr>
1779 <tr>
1780 <td class="paramkey"></td>
1781 <td></td>
1782 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;&#160;</td>
1783 <td class="paramname"><em>mappings</em>, </td>
1784 </tr>
1785 <tr>
1786 <td class="paramkey"></td>
1787 <td></td>
1788 <td class="paramtype">const void *&#160;</td>
1789 <td class="paramname"><em>src</em>, </td>
1790 </tr>
1791 <tr>
1792 <td class="paramkey"></td>
1793 <td></td>
1794 <td class="paramtype">void *&#160;</td>
1795 <td class="paramname"><em>dst</em>, </td>
1796 </tr>
1797 <tr>
1798 <td class="paramkey"></td>
1799 <td></td>
1800 <td class="paramtype">size_t&#160;</td>
1801 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
1802 </tr>
1803 <tr>
1804 <td></td>
1805 <td>)</td>
1806 <td></td><td></td>
1807 </tr>
1808 </table>
1809</div><div class="memdoc">
1810
1811<p class="definition">Definition at line <a class="el" href="_permute_8cpp_source.html#l00164">164</a> of file <a class="el" href="_permute_8cpp_source.html">Permute.cpp</a>.</p>
1812<div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div>
1813<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; PermuteLoop(dstShape, mappings).Unroll(src, dst, dataTypeSize);</div>
1814<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div>
1815</div><!-- fragment -->
1816<p class="reference">Referenced by <a class="el" href="_onnx_parser_8cpp_source.html#l00604">armnnOnnxParser::CreateConstTensorImpl()</a>, <a class="el" href="_depth_to_space_8cpp_source.html#l00016">armnn::DepthToSpace()</a>, <a class="el" href="_permute_layer_8cpp_source.html#l00020">PermuteLayer::PermuteLayer()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00019">armnn::PermuteTensor()</a>, and <a class="el" href="_canonical_utils_8cpp_source.html#l00040">armnn_driver::SwizzleAndroidNn4dTensorToArmNn()</a>.</p>
1817
1818</div>
1819</div>
1820<a id="a2ba6f6f40c7382b61b00ac02f961ba22"></a>
1821<h2 class="memtitle"><span class="permalink"><a href="#a2ba6f6f40c7382b61b00ac02f961ba22">&#9670;&nbsp;</a></span>Permuted() <span class="overload">[1/2]</span></h2>
1822
1823<div class="memitem">
1824<div class="memproto">
1825 <table class="memname">
1826 <tr>
1827 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> Permuted </td>
1828 <td>(</td>
1829 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1830 <td class="paramname"><em>info</em>, </td>
1831 </tr>
1832 <tr>
1833 <td class="paramkey"></td>
1834 <td></td>
1835 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;&#160;</td>
1836 <td class="paramname"><em>mappings</em>&#160;</td>
1837 </tr>
1838 <tr>
1839 <td></td>
1840 <td>)</td>
1841 <td></td><td></td>
1842 </tr>
1843 </table>
1844</div><div class="memdoc">
1845
1846<p class="definition">Definition at line <a class="el" href="_permute_8cpp_source.html#l00148">148</a> of file <a class="el" href="_permute_8cpp_source.html">Permute.cpp</a>.</p>
1847<div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div>
1848<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outInfo(info);</div>
1849<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; outInfo.SetShape(<a class="code" href="namespacearmnn_utils.html#abeaf4f6785039866fd075f4569ba8e84">Permuted</a>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetShape(), mappings));</div>
1850<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
1851<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// If TensorInfo has Per-Axis Quantization then it also has a QuantizationDim which needs to</span></div>
1852<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// be permuted according to the mapping</span></div>
1853<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationDim().has_value())</div>
1854<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
1855<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; outInfo.SetQuantizationDim(mappings[<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationDim().value()]);</div>
1856<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
1857<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
1858<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> outInfo;</div>
1859<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div>
1860</div><!-- fragment -->
1861<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_permute_8cpp_source.html#l00125">Permuted()</a>, <a class="el" href="_tensor_8cpp_source.html#l00503">TensorInfo::SetQuantizationDim()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00195">TensorInfo::SetShape()</a>.</p>
1862
1863</div>
1864</div>
1865<a id="abeaf4f6785039866fd075f4569ba8e84"></a>
1866<h2 class="memtitle"><span class="permalink"><a href="#abeaf4f6785039866fd075f4569ba8e84">&#9670;&nbsp;</a></span>Permuted() <span class="overload">[2/2]</span></h2>
1867
1868<div class="memitem">
1869<div class="memproto">
1870 <table class="memname">
1871 <tr>
1872 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> Permuted </td>
1873 <td>(</td>
1874 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
1875 <td class="paramname"><em>srcShape</em>, </td>
1876 </tr>
1877 <tr>
1878 <td class="paramkey"></td>
1879 <td></td>
1880 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;&#160;</td>
1881 <td class="paramname"><em>mappings</em>&#160;</td>
1882 </tr>
1883 <tr>
1884 <td></td>
1885 <td>)</td>
1886 <td></td><td></td>
1887 </tr>
1888 </table>
1889</div><div class="memdoc">
1890
1891<p class="definition">Definition at line <a class="el" href="_permute_8cpp_source.html#l00125">125</a> of file <a class="el" href="_permute_8cpp_source.html">Permute.cpp</a>.</p>
1892<div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div>
1893<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (srcShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() != mappings.<a class="code" href="classarmnn_1_1_permutation_vector.html#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>())</div>
1894<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div>
1895<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; std::stringstream msg;</div>
1896<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; msg &lt;&lt; <span class="stringliteral">&quot;Permute: Number of shape dimensions (&quot;</span> &lt;&lt; srcShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt;</div>
1897<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="stringliteral">&quot;) does not match the size of the mappings (&quot;</span> &lt;&lt; mappings.<a class="code" href="classarmnn_1_1_permutation_vector.html#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>() &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
1898<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(msg.str());</div>
1899<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
1900<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
1901<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = mappings.<a class="code" href="classarmnn_1_1_permutation_vector.html#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>();</div>
1902<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outDims[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a>];</div>
1903<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
1904<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0U; i &lt; numDims; ++i)</div>
1905<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
1906<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; outDims[mappings[i]] = srcShape[i];</div>
1907<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
1908<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
1909<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> permutedShape(numDims, outDims);</div>
1910<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> permutedShape;</div>
1911<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div>
1912</div><!-- fragment -->
1913<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>, <a class="el" href="_types_8hpp_source.html#l00357">PermutationVector::GetSize()</a>, and <a class="el" href="_types_8hpp_source.html#l00031">armnn::MaxNumOfTensorDimensions</a>.</p>
1914
1915<p class="reference">Referenced by <a class="el" href="_workload_utils_8cpp_source.html#l00177">armnn::Convert1HWOTensorInfoToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00122">armnn::ConvertWeightTensorInfoFromArmnnToAcl()</a>, <a class="el" href="_onnx_parser_8cpp_source.html#l00604">armnnOnnxParser::CreateConstTensorImpl()</a>, <a class="el" href="_batch_mat_mul_layer_8cpp_source.html#l00033">BatchMatMulLayer::InferOutputShapes()</a>, <a class="el" href="_permute_layer_8cpp_source.html#l00038">PermuteLayer::InferOutputShapes()</a>, <a class="el" href="_permute_8cpp_source.html#l00148">Permuted()</a>, <a class="el" href="_workload_utils_8cpp_source.html#l00019">armnn::PermuteTensor()</a>, <a class="el" href="_move_permute_up_8hpp_source.html#l00023">MovePermuteUpImpl::Run()</a>, <a class="el" href="_canonical_utils_8cpp_source.html#l00040">armnn_driver::SwizzleAndroidNn4dTensorToArmNn()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l04175">BatchMatMulQueueDescriptor::Validate()</a>.</p>
1916
1917</div>
1918</div>
1919<a id="a523deabeb7d0a884028b35eebfd1cb6c"></a>
1920<h2 class="memtitle"><span class="permalink"><a href="#a523deabeb7d0a884028b35eebfd1cb6c">&#9670;&nbsp;</a></span>ProcessConcatInputTensorInfo()</h2>
1921
1922<div class="memitem">
1923<div class="memproto">
1924 <table class="memname">
1925 <tr>
1926 <td class="memname">void ProcessConcatInputTensorInfo </td>
1927 <td>(</td>
1928 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
1929 <td class="paramname"><em>inputTensorInfo</em>, </td>
1930 </tr>
1931 <tr>
1932 <td class="paramkey"></td>
1933 <td></td>
1934 <td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.html">armnn::OriginsDescriptor</a> &amp;&#160;</td>
1935 <td class="paramname"><em>concatDescriptor</em>, </td>
1936 </tr>
1937 <tr>
1938 <td class="paramkey"></td>
1939 <td></td>
1940 <td class="paramtype">const unsigned int &amp;&#160;</td>
1941 <td class="paramname"><em>concatAxis</em>, </td>
1942 </tr>
1943 <tr>
1944 <td class="paramkey"></td>
1945 <td></td>
1946 <td class="paramtype">unsigned int&#160;</td>
1947 <td class="paramname"><em>inputIndex</em>, </td>
1948 </tr>
1949 <tr>
1950 <td class="paramkey"></td>
1951 <td></td>
1952 <td class="paramtype">unsigned int &amp;&#160;</td>
1953 <td class="paramname"><em>mergeDimOrigin</em>&#160;</td>
1954 </tr>
1955 <tr>
1956 <td></td>
1957 <td>)</td>
1958 <td></td><td></td>
1959 </tr>
1960 </table>
1961</div><div class="memdoc">
1962
1963<p class="definition">Definition at line <a class="el" href="_parser_helper_8cpp_source.html#l00019">19</a> of file <a class="el" href="_parser_helper_8cpp_source.html">ParserHelper.cpp</a>.</p>
1964<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
1965<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> uint32_t inputRank = concatDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.html#a78e8266be865fdd92cadd04d6e25ae1f">GetNumDimensions</a>();</div>
1966<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
1967<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// double check dimensions of the tensors</span></div>
1968<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span> (inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() != inputRank)</div>
1969<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div>
1970<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_parse_exception.html">armnn::ParseException</a>(fmt::format(</div>
1971<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="stringliteral">&quot;The number of dimensions: {0} for input tensors of the &quot;</span></div>
1972<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="stringliteral">&quot;concatenation op should be {1} {2}&quot;</span>,</div>
1973<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(),</div>
1974<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; inputRank,</div>
1975<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>().AsString()));</div>
1976<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div>
1977<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
1978<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> j = 0; j &lt; concatAxis; ++j)</div>
1979<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div>
1980<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; concatDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.html#a2b125117aa61f9baf3a9cb8658aa61a2">SetViewOriginCoord</a>(inputIndex, j, 0);</div>
1981<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div>
1982<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
1983<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; concatDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.html#a2b125117aa61f9baf3a9cb8658aa61a2">SetViewOriginCoord</a>(inputIndex, concatAxis, mergeDimOrigin);</div>
1984<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; mergeDimOrigin += inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[concatAxis];</div>
1985<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
1986<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> j = concatAxis + 1; j &lt; inputRank; ++j)</div>
1987<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div>
1988<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; concatDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.html#a2b125117aa61f9baf3a9cb8658aa61a2">SetViewOriginCoord</a>(inputIndex, j, 0);</div>
1989<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
1990<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
1991</div><!-- fragment -->
1992<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="_tensor_8hpp_source.html#l00197">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_descriptors_8cpp_source.html#l00192">OriginsDescriptor::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, and <a class="el" href="_descriptors_8cpp_source.html#l00167">OriginsDescriptor::SetViewOriginCoord()</a>.</p>
1993
1994</div>
1995</div>
1996<a id="ad10541679f7d9740ba7a3c96b9843456"></a>
1997<h2 class="memtitle"><span class="permalink"><a href="#ad10541679f7d9740ba7a3c96b9843456">&#9670;&nbsp;</a></span>QuantizedVector() <span class="overload">[1/3]</span></h2>
1998
1999<div class="memitem">
2000<div class="memproto">
2001 <table class="memname">
2002 <tr>
2003 <td class="memname">std::vector&lt;T&gt; armnnUtils::QuantizedVector </td>
2004 <td>(</td>
2005 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
2006 <td class="paramname"><em>array</em>, </td>
2007 </tr>
2008 <tr>
2009 <td class="paramkey"></td>
2010 <td></td>
2011 <td class="paramtype">float&#160;</td>
2012 <td class="paramname"><em>qScale</em> = <code>1.f</code>, </td>
2013 </tr>
2014 <tr>
2015 <td class="paramkey"></td>
2016 <td></td>
2017 <td class="paramtype">int32_t&#160;</td>
2018 <td class="paramname"><em>qOffset</em> = <code>0</code>&#160;</td>
2019 </tr>
2020 <tr>
2021 <td></td>
2022 <td>)</td>
2023 <td></td><td></td>
2024 </tr>
2025 </table>
2026</div><div class="memdoc">
2027
2028<p class="definition">Definition at line <a class="el" href="_quantize_helper_8hpp_source.html#l00121">121</a> of file <a class="el" href="_quantize_helper_8hpp_source.html">QuantizeHelper.hpp</a>.</p>
2029<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;{</div>
2030<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> QuantizedVector&lt;T&gt;(array.begin(), array.end(), qScale, qOffset);</div>
2031<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div>
2032</div><!-- fragment -->
2033</div>
2034</div>
2035<a id="afb0aab92dc5b9bc5d7ebe2ea036f3809"></a>
2036<h2 class="memtitle"><span class="permalink"><a href="#afb0aab92dc5b9bc5d7ebe2ea036f3809">&#9670;&nbsp;</a></span>QuantizedVector() <span class="overload">[2/3]</span></h2>
2037
2038<div class="memitem">
2039<div class="memproto">
2040 <table class="memname">
2041 <tr>
2042 <td class="memname">std::vector&lt;T&gt; armnnUtils::QuantizedVector </td>
2043 <td>(</td>
2044 <td class="paramtype">FloatIt&#160;</td>
2045 <td class="paramname"><em>first</em>, </td>
2046 </tr>
2047 <tr>
2048 <td class="paramkey"></td>
2049 <td></td>
2050 <td class="paramtype">FloatIt&#160;</td>
2051 <td class="paramname"><em>last</em>, </td>
2052 </tr>
2053 <tr>
2054 <td class="paramkey"></td>
2055 <td></td>
2056 <td class="paramtype">float&#160;</td>
2057 <td class="paramname"><em>qScale</em>, </td>
2058 </tr>
2059 <tr>
2060 <td class="paramkey"></td>
2061 <td></td>
2062 <td class="paramtype">int32_t&#160;</td>
2063 <td class="paramname"><em>qOffset</em>&#160;</td>
2064 </tr>
2065 <tr>
2066 <td></td>
2067 <td>)</td>
2068 <td></td><td></td>
2069 </tr>
2070 </table>
2071</div><div class="memdoc">
2072
2073<p class="definition">Definition at line <a class="el" href="_quantize_helper_8hpp_source.html#l00105">105</a> of file <a class="el" href="_quantize_helper_8hpp_source.html">QuantizeHelper.hpp</a>.</p>
2074<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{</div>
2075<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; std::vector&lt;T&gt; quantized;</div>
2076<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; quantized.reserve(armnn::numeric_cast&lt;size_t&gt;(std::distance(first, last)));</div>
2077<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
2078<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div>
2079<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
2080<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">auto</span> f = *it;</div>
2081<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; T q = SelectiveQuantize&lt;T&gt;(f, qScale, qOffset);</div>
2082<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; quantized.push_back(q);</div>
2083<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
2084<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
2085<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> quantized;</div>
2086<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div>
2087</div><!-- fragment -->
2088</div>
2089</div>
2090<a id="af29a7b903bf7ae9639ea29bc05ccb289"></a>
2091<h2 class="memtitle"><span class="permalink"><a href="#af29a7b903bf7ae9639ea29bc05ccb289">&#9670;&nbsp;</a></span>QuantizedVector() <span class="overload">[3/3]</span></h2>
2092
2093<div class="memitem">
2094<div class="memproto">
2095 <table class="memname">
2096 <tr>
2097 <td class="memname">std::vector&lt;T&gt; armnnUtils::QuantizedVector </td>
2098 <td>(</td>
2099 <td class="paramtype">std::initializer_list&lt; float &gt;&#160;</td>
2100 <td class="paramname"><em>array</em>, </td>
2101 </tr>
2102 <tr>
2103 <td class="paramkey"></td>
2104 <td></td>
2105 <td class="paramtype">float&#160;</td>
2106 <td class="paramname"><em>qScale</em> = <code>1.f</code>, </td>
2107 </tr>
2108 <tr>
2109 <td class="paramkey"></td>
2110 <td></td>
2111 <td class="paramtype">int32_t&#160;</td>
2112 <td class="paramname"><em>qOffset</em> = <code>0</code>&#160;</td>
2113 </tr>
2114 <tr>
2115 <td></td>
2116 <td>)</td>
2117 <td></td><td></td>
2118 </tr>
2119 </table>
2120</div><div class="memdoc">
2121
2122<p class="definition">Definition at line <a class="el" href="_quantize_helper_8hpp_source.html#l00127">127</a> of file <a class="el" href="_quantize_helper_8hpp_source.html">QuantizeHelper.hpp</a>.</p>
2123<div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;{</div>
2124<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> QuantizedVector&lt;T&gt;(array.begin(), array.end(), qScale, qOffset);</div>
2125<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
2126</div><!-- fragment -->
2127</div>
2128</div>
2129<a id="a29e9952fc973569b267d87b04ce372c2"></a>
2130<h2 class="memtitle"><span class="permalink"><a href="#a29e9952fc973569b267d87b04ce372c2">&#9670;&nbsp;</a></span>ReduceDims() <span class="overload">[1/2]</span></h2>
2131
2132<div class="memitem">
2133<div class="memproto">
2134 <table class="memname">
2135 <tr>
2136 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> ReduceDims </td>
2137 <td>(</td>
2138 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
2139 <td class="paramname"><em>tensorInfo</em>, </td>
2140 </tr>
2141 <tr>
2142 <td class="paramkey"></td>
2143 <td></td>
2144 <td class="paramtype">unsigned int&#160;</td>
2145 <td class="paramname"><em>dimensions</em>&#160;</td>
2146 </tr>
2147 <tr>
2148 <td></td>
2149 <td>)</td>
2150 <td></td><td></td>
2151 </tr>
2152 </table>
2153</div><div class="memdoc">
2154
2155<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00134">134</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
2156<div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div>
2157<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">TensorInfo</a> strippedTensor(tensorInfo);</div>
2158<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> strippedShape = <a class="code" href="namespacearmnn_utils.html#a2bff2aae3ae824ff74ba550488373886">ReduceDims</a>(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), dimensions);</div>
2159<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; strippedTensor.SetShape(strippedShape);</div>
2160<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> strippedTensor;</div>
2161<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div>
2162</div><!-- fragment -->
2163<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00108">ReduceDims()</a>, and <a class="el" href="_tensor_8hpp_source.html#l00195">TensorInfo::SetShape()</a>.</p>
2164
2165</div>
2166</div>
2167<a id="a2bff2aae3ae824ff74ba550488373886"></a>
2168<h2 class="memtitle"><span class="permalink"><a href="#a2bff2aae3ae824ff74ba550488373886">&#9670;&nbsp;</a></span>ReduceDims() <span class="overload">[2/2]</span></h2>
2169
2170<div class="memitem">
2171<div class="memproto">
2172 <table class="memname">
2173 <tr>
2174 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">TensorShape</a> ReduceDims </td>
2175 <td>(</td>
2176 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
2177 <td class="paramname"><em>tensorInfo</em>, </td>
2178 </tr>
2179 <tr>
2180 <td class="paramkey"></td>
2181 <td></td>
2182 <td class="paramtype">unsigned int&#160;</td>
2183 <td class="paramname"><em>dimensions</em>&#160;</td>
2184 </tr>
2185 <tr>
2186 <td></td>
2187 <td>)</td>
2188 <td></td><td></td>
2189 </tr>
2190 </table>
2191</div><div class="memdoc">
2192
2193<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00108">108</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
2194<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div>
2195<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span> (tensorShape.GetNumDimensions() &lt;= dimensions)</div>
2196<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
2197<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> tensorShape;</div>
2198<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
2199<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; std::vector&lt;unsigned int&gt; newShape;</div>
2200<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
2201<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimsToSkip = tensorShape.GetNumDimensions() - dimensions;</div>
2202<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimsSkipped = 0;</div>
2203<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">bool</span> insertRemainder = <span class="keyword">false</span>;</div>
2204<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
2205<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tensorShape.GetNumDimensions(); ++i)</div>
2206<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div>
2207<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (tensorShape[i] == 1 &amp;&amp; dimsSkipped &lt; dimsToSkip &amp;&amp; !insertRemainder)</div>
2208<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div>
2209<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; ++dimsSkipped;</div>
2210<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">continue</span>;</div>
2211<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
2212<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; newShape.push_back(tensorShape[i]);</div>
2213<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// Once we insert the first dimension we can&#39;t skip any more</span></div>
2214<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; insertRemainder = <span class="keyword">true</span>;</div>
2215<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
2216<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_shape.html">TensorShape</a>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(newShape.size()), newShape.data());</div>
2217<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div>
2218</div><!-- fragment -->
2219<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>.</p>
2220
2221<p class="reference">Referenced by <a class="el" href="_tensor_utils_8cpp_source.html#l00134">ReduceDims()</a>.</p>
2222
2223</div>
2224</div>
2225<a id="a5135dc1ce7a8aeb97623c1a92c5a3543"></a>
2226<h2 class="memtitle"><span class="permalink"><a href="#a5135dc1ce7a8aeb97623c1a92c5a3543">&#9670;&nbsp;</a></span>SelectiveDequantize()</h2>
2227
2228<div class="memitem">
2229<div class="memproto">
2230 <table class="memname">
2231 <tr>
2232 <td class="memname">float armnnUtils::SelectiveDequantize </td>
2233 <td>(</td>
2234 <td class="paramtype">T&#160;</td>
2235 <td class="paramname"><em>value</em>, </td>
2236 </tr>
2237 <tr>
2238 <td class="paramkey"></td>
2239 <td></td>
2240 <td class="paramtype">float&#160;</td>
2241 <td class="paramname"><em>scale</em>, </td>
2242 </tr>
2243 <tr>
2244 <td class="paramkey"></td>
2245 <td></td>
2246 <td class="paramtype">int32_t&#160;</td>
2247 <td class="paramname"><em>offset</em>&#160;</td>
2248 </tr>
2249 <tr>
2250 <td></td>
2251 <td>)</td>
2252 <td></td><td></td>
2253 </tr>
2254 </table>
2255</div><div class="memdoc">
2256
2257<p class="definition">Definition at line <a class="el" href="_quantize_helper_8hpp_source.html#l00091">91</a> of file <a class="el" href="_quantize_helper_8hpp_source.html">QuantizeHelper.hpp</a>.</p>
2258<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div>
2259<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> SelectiveQuantizer&lt;T, armnn::IsQuantizedType&lt;T&gt;()&gt;<a class="code" href="namespacearmnn.html#a855293b1be0581fb61ef6a1c5b027d0f">::Dequantize</a>(value, scale, offset);</div>
2260<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;};</div>
2261</div><!-- fragment -->
2262</div>
2263</div>
2264<a id="a21b249bca87a5ad47359abd9ec7acada"></a>
2265<h2 class="memtitle"><span class="permalink"><a href="#a21b249bca87a5ad47359abd9ec7acada">&#9670;&nbsp;</a></span>SelectiveQuantize()</h2>
2266
2267<div class="memitem">
2268<div class="memproto">
2269 <table class="memname">
2270 <tr>
2271 <td class="memname">T armnnUtils::SelectiveQuantize </td>
2272 <td>(</td>
2273 <td class="paramtype">float&#160;</td>
2274 <td class="paramname"><em>value</em>, </td>
2275 </tr>
2276 <tr>
2277 <td class="paramkey"></td>
2278 <td></td>
2279 <td class="paramtype">float&#160;</td>
2280 <td class="paramname"><em>scale</em>, </td>
2281 </tr>
2282 <tr>
2283 <td class="paramkey"></td>
2284 <td></td>
2285 <td class="paramtype">int32_t&#160;</td>
2286 <td class="paramname"><em>offset</em>&#160;</td>
2287 </tr>
2288 <tr>
2289 <td></td>
2290 <td>)</td>
2291 <td></td><td></td>
2292 </tr>
2293 </table>
2294</div><div class="memdoc">
2295
2296<p class="definition">Definition at line <a class="el" href="_quantize_helper_8hpp_source.html#l00085">85</a> of file <a class="el" href="_quantize_helper_8hpp_source.html">QuantizeHelper.hpp</a>.</p>
2297<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;{</div>
2298<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> SelectiveQuantizer&lt;T, armnn::IsQuantizedType&lt;T&gt;()&gt;<a class="code" href="namespacearmnn.html#ad773a034fb9983e15f3094b4c5c7c30c">::Quantize</a>(value, scale, offset);</div>
2299<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;};</div>
2300</div><!-- fragment -->
2301</div>
2302</div>
2303<a id="a158a68b143d2564fa1ca047646cf4185"></a>
2304<h2 class="memtitle"><span class="permalink"><a href="#a158a68b143d2564fa1ca047646cf4185">&#9670;&nbsp;</a></span>SplitBy()</h2>
2305
2306<div class="memitem">
2307<div class="memproto">
2308 <table class="memname">
2309 <tr>
2310 <td class="memname">std::vector&lt; std::string &gt; SplitBy </td>
2311 <td>(</td>
2312 <td class="paramtype">const std::string &amp;&#160;</td>
2313 <td class="paramname"><em>originalString</em>, </td>
2314 </tr>
2315 <tr>
2316 <td class="paramkey"></td>
2317 <td></td>
2318 <td class="paramtype">const std::string &amp;&#160;</td>
2319 <td class="paramname"><em>delimiter</em> = <code>&quot;&#160;&quot;</code>, </td>
2320 </tr>
2321 <tr>
2322 <td class="paramkey"></td>
2323 <td></td>
2324 <td class="paramtype">bool&#160;</td>
2325 <td class="paramname"><em>includeEmptyToken</em> = <code>false</code>&#160;</td>
2326 </tr>
2327 <tr>
2328 <td></td>
2329 <td>)</td>
2330 <td></td><td></td>
2331 </tr>
2332 </table>
2333</div><div class="memdoc">
2334
2335<p>Split a string into tokens by a delimiter. </p>
2336<dl class="params"><dt>Parameters</dt><dd>
2337 <table class="params">
2338 <tr><td class="paramdir">[in]</td><td class="paramname">originalString</td><td>Original string to be split </td></tr>
2339 <tr><td class="paramdir">[in]</td><td class="paramname">delimiter</td><td>Delimiter used to split <code>originalString</code> </td></tr>
2340 <tr><td class="paramdir">[in]</td><td class="paramname">includeEmptyToekn</td><td>If true, include empty tokens in the result </td></tr>
2341 </table>
2342 </dd>
2343</dl>
2344<dl class="section return"><dt>Returns</dt><dd>A vector of tokens split from <code>originalString</code> by \delimiter </dd></dl>
2345
2346<p class="definition">Definition at line <a class="el" href="_model_accuracy_checker_8cpp_source.html#l00041">41</a> of file <a class="el" href="_model_accuracy_checker_8cpp_source.html">ModelAccuracyChecker.cpp</a>.</p>
2347<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div>
2348<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; std::vector&lt;std::string&gt; tokens;</div>
2349<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">size_t</span> cur = 0;</div>
2350<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">size_t</span> next = 0;</div>
2351<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">while</span> ((next = originalString.find(delimiter, cur)) != std::string::npos)</div>
2352<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div>
2353<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// Skip empty tokens, unless explicitly stated to include them.</span></div>
2354<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (next - cur &gt; 0 || includeEmptyToken)</div>
2355<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
2356<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; tokens.push_back(originalString.substr(cur, next - cur));</div>
2357<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
2358<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; cur = next + delimiter.size();</div>
2359<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div>
2360<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// Get the remaining token</span></div>
2361<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// Skip empty tokens, unless explicitly stated to include them.</span></div>
2362<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (originalString.size() - cur &gt; 0 || includeEmptyToken)</div>
2363<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
2364<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; tokens.push_back(originalString.substr(cur, originalString.size() - cur));</div>
2365<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
2366<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> tokens;</div>
2367<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div>
2368</div><!-- fragment -->
2369</div>
2370</div>
2371<a id="ac7f0575b4a8c9ba80c5b0695ada4dd92"></a>
2372<h2 class="memtitle"><span class="permalink"><a href="#ac7f0575b4a8c9ba80c5b0695ada4dd92">&#9670;&nbsp;</a></span>SqueezeDims()</h2>
2373
2374<div class="memitem">
2375<div class="memproto">
2376 <table class="memname">
2377 <tr>
2378 <td class="memname">std::vector&lt; unsigned int &gt; SqueezeDims </td>
2379 <td>(</td>
2380 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
2381 <td class="paramname"><em>tensorShape</em></td><td>)</td>
2382 <td></td>
2383 </tr>
2384 </table>
2385</div><div class="memdoc">
2386
2387<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00195">195</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
2388<div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;{</div>
2389<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; std::vector&lt;unsigned int&gt; squeezedDims;</div>
2390<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
2391<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tensorShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</div>
2392<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
2393<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (tensorShape[i] != 1)</div>
2394<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div>
2395<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; squeezedDims.push_back(tensorShape[i]);</div>
2396<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
2397<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
2398<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> squeezedDims;</div>
2399<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div>
2400</div><!-- fragment -->
2401<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>.</p>
2402
2403<p class="reference">Referenced by <a class="el" href="_layer_8cpp_source.html#l00457">Layer::ValidateAndCopyShape()</a>.</p>
2404
2405</div>
2406</div>
2407<a id="a14be0364a6fc0975d45e84737dfe21bc"></a>
2408<h2 class="memtitle"><span class="permalink"><a href="#a14be0364a6fc0975d45e84737dfe21bc">&#9670;&nbsp;</a></span>Strip()</h2>
2409
2410<div class="memitem">
2411<div class="memproto">
2412 <table class="memname">
2413 <tr>
2414 <td class="memname">std::string Strip </td>
2415 <td>(</td>
2416 <td class="paramtype">const std::string &amp;&#160;</td>
2417 <td class="paramname"><em>originalString</em>, </td>
2418 </tr>
2419 <tr>
2420 <td class="paramkey"></td>
2421 <td></td>
2422 <td class="paramtype">const std::string &amp;&#160;</td>
2423 <td class="paramname"><em>characterSet</em> = <code>&quot;&#160;&quot;</code>&#160;</td>
2424 </tr>
2425 <tr>
2426 <td></td>
2427 <td>)</td>
2428 <td></td><td></td>
2429 </tr>
2430 </table>
2431</div><div class="memdoc">
2432
2433<p>Remove any preceding and trailing character specified in the characterSet. </p>
2434<dl class="params"><dt>Parameters</dt><dd>
2435 <table class="params">
2436 <tr><td class="paramdir">[in]</td><td class="paramname">originalString</td><td>Original string to be stripped </td></tr>
2437 <tr><td class="paramdir">[in]</td><td class="paramname">characterSet</td><td>Set of characters to be stripped from <code>originalString</code> </td></tr>
2438 </table>
2439 </dd>
2440</dl>
2441<dl class="section return"><dt>Returns</dt><dd>A string stripped of all characters specified in <code>characterSet</code> from <code>originalString</code> </dd></dl>
2442
2443<p class="definition">Definition at line <a class="el" href="_model_accuracy_checker_8cpp_source.html#l00065">65</a> of file <a class="el" href="_model_accuracy_checker_8cpp_source.html">ModelAccuracyChecker.cpp</a>.</p>
2444<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div>
2445<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (characterSet.empty())</div>
2446<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div>
2447<div class="line"><a name="l00069"></a><span class="lineno"> 69</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;Strip: string of characters to strip is empty&quot;</span>);</div>
2448<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div>
2449<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> std::size_t firstFound = originalString.find_first_not_of(characterSet);</div>
2450<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">const</span> std::size_t lastFound = originalString.find_last_not_of(characterSet);</div>
2451<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Return empty if the originalString is empty or the originalString contains only to-be-striped characters</span></div>
2452<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (firstFound == std::string::npos || lastFound == std::string::npos)</div>
2453<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
2454<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
2455<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
2456<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> originalString.substr(firstFound, lastFound + 1 - firstFound);</div>
2457<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div>
2458</div><!-- fragment -->
2459</div>
2460</div>
2461<a id="a573c6170ca8451709e031b6243bc187d"></a>
2462<h2 class="memtitle"><span class="permalink"><a href="#a573c6170ca8451709e031b6243bc187d">&#9670;&nbsp;</a></span>ToFloatArray() <span class="overload">[1/2]</span></h2>
2463
2464<div class="memitem">
2465<div class="memproto">
2466 <table class="memname">
2467 <tr>
2468 <td class="memname">std::unique_ptr&lt; float[]&gt; ToFloatArray </td>
2469 <td>(</td>
2470 <td class="paramtype">const std::vector&lt; PrimitiveType &gt; &amp;&#160;</td>
2471 <td class="paramname"><em>data</em>, </td>
2472 </tr>
2473 <tr>
2474 <td class="paramkey"></td>
2475 <td></td>
2476 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
2477 <td class="paramname"><em>tensorInfo</em>&#160;</td>
2478 </tr>
2479 <tr>
2480 <td></td>
2481 <td>)</td>
2482 <td></td><td></td>
2483 </tr>
2484 </table>
2485</div><div class="memdoc">
2486
2487<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00307">307</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
2488<div class="fragment"><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;{</div>
2489<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespacearmnn_utils.html#a7e3caf713986e36cff3ba9d9e442366c">CheckSizes</a>(data, tensorInfo);</div>
2490<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
2491<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; std::unique_ptr&lt;float[]&gt; returnBuffer(<span class="keyword">new</span> <span class="keywordtype">float</span>[tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>()]);</div>
2492<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; </div>
2493<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span> (tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#ab85cd8cc10c96a7c99c14042c251fc48">HasPerAxisQuantization</a>())</div>
2494<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
2495<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axis = tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b8fc85ce966c035d789cf22db5088a1">GetQuantizationDim</a>().<a class="code" href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">value</a>();</div>
2496<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">auto</span> axisDimensionality = tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[axis];</div>
2497<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">auto</span> axisFactor = <a class="code" href="namespacearmnn_utils.html#a276aac5f7a8bdc3db4f62203870ca13b">armnnUtils::GetNumElementsAfter</a>(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(), axis);</div>
2498<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
2499<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(); ++i)</div>
2500<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
2501<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisIndex;</div>
2502<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; </div>
2503<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (i &lt; axisFactor)</div>
2504<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div>
2505<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; axisIndex = 0;</div>
2506<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div>
2507<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">else</span></div>
2508<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
2509<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; axisIndex = (i / axisFactor) % axisDimensionality;</div>
2510<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
2511<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; returnBuffer[i] = Dequantize&lt;PrimitiveType&gt;(data[i],</div>
2512<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8bc11f1fa23ef42532f9fdd04d355270">GetQuantizationScales</a>()[axisIndex],</div>
2513<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>());</div>
2514<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div>
2515<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
2516<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">else</span></div>
2517<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
2518<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>(); ++i)</div>
2519<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div>
2520<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; returnBuffer[i] = Dequantize&lt;PrimitiveType&gt;(data[i],</div>
2521<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">GetQuantizationScale</a>(),</div>
2522<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">GetQuantizationOffset</a>());</div>
2523<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div>
2524<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
2525<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> returnBuffer;</div>
2526<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;}</div>
2527</div><!-- fragment -->
2528<p class="reference">References <a class="el" href="_tensor_utils_8cpp_source.html#l00296">CheckSizes()</a>, <a class="el" href="_tensor_8hpp_source.html#l00198">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00261">GetNumElementsAfter()</a>, <a class="el" href="_tensor_8cpp_source.html#l00498">TensorInfo::GetQuantizationDim()</a>, <a class="el" href="_tensor_8cpp_source.html#l00482">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00461">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.html#l00451">TensorInfo::GetQuantizationScales()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_8cpp_source.html#l00446">TensorInfo::HasPerAxisQuantization()</a>, and <a class="el" href="_optional_8hpp_source.html#l00146">OptionalReferenceSwitch&lt; IsReference, T &gt;::value()</a>.</p>
2529
2530</div>
2531</div>
2532<a id="a949e191038ae0bfd9a0597a7de353a27"></a>
2533<h2 class="memtitle"><span class="permalink"><a href="#a949e191038ae0bfd9a0597a7de353a27">&#9670;&nbsp;</a></span>ToFloatArray() <span class="overload">[2/2]</span></h2>
2534
2535<div class="memitem">
2536<div class="memproto">
2537 <table class="memname">
2538 <tr>
2539 <td class="memname">std::unique_ptr&lt; float[]&gt; ToFloatArray </td>
2540 <td>(</td>
2541 <td class="paramtype">const std::vector&lt; uint8_t &gt; &amp;&#160;</td>
2542 <td class="paramname"><em>data</em>, </td>
2543 </tr>
2544 <tr>
2545 <td class="paramkey"></td>
2546 <td></td>
2547 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
2548 <td class="paramname"><em>tensorInfo</em>&#160;</td>
2549 </tr>
2550 <tr>
2551 <td></td>
2552 <td>)</td>
2553 <td></td><td></td>
2554 </tr>
2555 </table>
2556</div><div class="memdoc">
2557
2558<p class="definition">Definition at line <a class="el" href="_tensor_utils_8cpp_source.html#l00348">348</a> of file <a class="el" href="_tensor_utils_8cpp_source.html">TensorUtils.cpp</a>.</p>
2559<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;{</div>
2560<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>() == DataType::QAsymmS8 || tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>() == DataType::QSymmS8)</div>
2561<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div>
2562<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="namespacearmnn_utils.html#a7e3caf713986e36cff3ba9d9e442366c">CheckSizes</a>(data, tensorInfo);</div>
2563<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; std::vector&lt;int8_t&gt; buffer(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div>
2564<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; ::memcpy(buffer.data(), data.data(), data.size());</div>
2565<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> ToFloatArray&lt;int8_t&gt;(buffer, tensorInfo);</div>
2566<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
2567<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>() == DataType::QAsymmU8)</div>
2568<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div>
2569<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="namespacearmnn_utils.html#a7e3caf713986e36cff3ba9d9e442366c">CheckSizes</a>(data, tensorInfo);</div>
2570<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> ToFloatArray&lt;uint8_t&gt;(data, tensorInfo);</div>
2571<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div>
2572<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>() == DataType::Signed32)</div>
2573<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div>
2574<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespacearmnn_utils.html#a7e3caf713986e36cff3ba9d9e442366c">CheckSizes</a>(data, tensorInfo, 4);</div>
2575<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; std::vector&lt;int32_t&gt; buffer(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div>
2576<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; ::memcpy(buffer.data(), data.data(), data.size());</div>
2577<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> ToFloatArray&lt;int32_t&gt;(buffer, tensorInfo);</div>
2578<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
2579<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>() == DataType::Signed64)</div>
2580<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
2581<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="namespacearmnn_utils.html#a7e3caf713986e36cff3ba9d9e442366c">CheckSizes</a>(data, tensorInfo, 8);</div>
2582<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; std::vector&lt;int64_t&gt; buffer(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div>
2583<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; ::memcpy(buffer.data(), data.data(), data.size());</div>
2584<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> ToFloatArray&lt;int64_t&gt;(buffer, tensorInfo);</div>
2585<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
2586<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(</div>
2587<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; fmt::format(<span class="stringliteral">&quot;Unsupported datatype {}. {}&quot;</span>,</div>
2588<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="namespacearmnn.html#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.html#aea909c7327109228ef618d459015def3">GetDataType</a>()),</div>
2589<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>().AsString()));</div>
2590<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;}</div>
2591</div><!-- fragment -->
2592<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="_tensor_utils_8cpp_source.html#l00296">CheckSizes()</a>, <a class="el" href="_tensor_8hpp_source.html#l00200">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.html#l00233">armnn::GetDataTypeName()</a>, <a class="el" href="_tensor_8hpp_source.html#l00198">TensorInfo::GetNumElements()</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::QAsymmU8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>, and <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6ae1b3c9c6087a93b07c83e0b04f377a8d">armnn::Signed64</a>.</p>
2593
2594</div>
2595</div>
2596<a id="a405d5f966ec992d1717711e5a2d7909d"></a>
2597<h2 class="memtitle"><span class="permalink"><a href="#a405d5f966ec992d1717711e5a2d7909d">&#9670;&nbsp;</a></span>Transpose()</h2>
2598
2599<div class="memitem">
2600<div class="memproto">
2601 <table class="memname">
2602 <tr>
2603 <td class="memname">void Transpose </td>
2604 <td>(</td>
2605 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
2606 <td class="paramname"><em>dstShape</em>, </td>
2607 </tr>
2608 <tr>
2609 <td class="paramkey"></td>
2610 <td></td>
2611 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;&#160;</td>
2612 <td class="paramname"><em>mappings</em>, </td>
2613 </tr>
2614 <tr>
2615 <td class="paramkey"></td>
2616 <td></td>
2617 <td class="paramtype">const void *&#160;</td>
2618 <td class="paramname"><em>src</em>, </td>
2619 </tr>
2620 <tr>
2621 <td class="paramkey"></td>
2622 <td></td>
2623 <td class="paramtype">void *&#160;</td>
2624 <td class="paramname"><em>dst</em>, </td>
2625 </tr>
2626 <tr>
2627 <td class="paramkey"></td>
2628 <td></td>
2629 <td class="paramtype">size_t&#160;</td>
2630 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
2631 </tr>
2632 <tr>
2633 <td></td>
2634 <td>)</td>
2635 <td></td><td></td>
2636 </tr>
2637 </table>
2638</div><div class="memdoc">
2639
2640<p class="definition">Definition at line <a class="el" href="_transpose_8cpp_source.html#l00153">153</a> of file <a class="el" href="_transpose_8cpp_source.html">Transpose.cpp</a>.</p>
2641<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;{</div>
2642<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; TransposeLoop(srcShape, mappings).Unroll(src, dst, dataTypeSize);</div>
2643<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div>
2644</div><!-- fragment -->
2645<p class="reference">Referenced by <a class="el" href="_transpose_layer_8cpp_source.html#l00020">TransposeLayer::TransposeLayer()</a>.</p>
2646
2647</div>
2648</div>
2649<a id="a49e3aa80e05abc7b4643aad600e8d827"></a>
2650<h2 class="memtitle"><span class="permalink"><a href="#a49e3aa80e05abc7b4643aad600e8d827">&#9670;&nbsp;</a></span>TransposeTensorShape() <span class="overload">[1/2]</span></h2>
2651
2652<div class="memitem">
2653<div class="memproto">
2654 <table class="memname">
2655 <tr>
2656 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> TransposeTensorShape </td>
2657 <td>(</td>
2658 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> &amp;&#160;</td>
2659 <td class="paramname"><em>info</em>, </td>
2660 </tr>
2661 <tr>
2662 <td class="paramkey"></td>
2663 <td></td>
2664 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;&#160;</td>
2665 <td class="paramname"><em>mappings</em>&#160;</td>
2666 </tr>
2667 <tr>
2668 <td></td>
2669 <td>)</td>
2670 <td></td><td></td>
2671 </tr>
2672 </table>
2673</div><div class="memdoc">
2674
2675<p class="definition">Definition at line <a class="el" href="_transpose_8cpp_source.html#l00146">146</a> of file <a class="el" href="_transpose_8cpp_source.html">Transpose.cpp</a>.</p>
2676<div class="fragment"><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;{</div>
2677<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.html">armnn::TensorInfo</a> outInfo(info);</div>
2678<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; outInfo.SetShape(<a class="code" href="namespacearmnn_utils.html#a428a9a6ffdf0e8d723b50c038c56c336">TransposeTensorShape</a>(<a class="code" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetShape(), mappings));</div>
2679<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> outInfo;</div>
2680<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div>
2681</div><!-- fragment -->
2682<p class="reference">References <a class="el" href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::info</a>, <a class="el" href="_tensor_8hpp_source.html#l00195">TensorInfo::SetShape()</a>, and <a class="el" href="_transpose_8cpp_source.html#l00125">TransposeTensorShape()</a>.</p>
2683
2684</div>
2685</div>
2686<a id="a428a9a6ffdf0e8d723b50c038c56c336"></a>
2687<h2 class="memtitle"><span class="permalink"><a href="#a428a9a6ffdf0e8d723b50c038c56c336">&#9670;&nbsp;</a></span>TransposeTensorShape() <span class="overload">[2/2]</span></h2>
2688
2689<div class="memitem">
2690<div class="memproto">
2691 <table class="memname">
2692 <tr>
2693 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> TransposeTensorShape </td>
2694 <td>(</td>
2695 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> &amp;&#160;</td>
2696 <td class="paramname"><em>srcShape</em>, </td>
2697 </tr>
2698 <tr>
2699 <td class="paramkey"></td>
2700 <td></td>
2701 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> &amp;&#160;</td>
2702 <td class="paramname"><em>mappings</em>&#160;</td>
2703 </tr>
2704 <tr>
2705 <td></td>
2706 <td>)</td>
2707 <td></td><td></td>
2708 </tr>
2709 </table>
2710</div><div class="memdoc">
2711
2712<p class="definition">Definition at line <a class="el" href="_transpose_8cpp_source.html#l00125">125</a> of file <a class="el" href="_transpose_8cpp_source.html">Transpose.cpp</a>.</p>
2713<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div>
2714<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (srcShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() != mappings.<a class="code" href="classarmnn_1_1_permutation_vector.html#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>())</div>
2715<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
2716<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; std::stringstream msg;</div>
2717<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; msg &lt;&lt; <span class="stringliteral">&quot;Transpose: Number of shape dimensions (&quot;</span> &lt;&lt; srcShape.<a class="code" href="classarmnn_1_1_tensor_shape.html#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt;</div>
2718<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="stringliteral">&quot;) does not match the size of the mappings (&quot;</span> &lt;&lt; mappings.<a class="code" href="classarmnn_1_1_permutation_vector.html#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>() &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
2719<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">armnn::InvalidArgumentException</a>(msg.str());</div>
2720<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
2721<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
2722<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = mappings.<a class="code" href="classarmnn_1_1_permutation_vector.html#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>();</div>
2723<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outDims[<a class="code" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a>];</div>
2724<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
2725<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0U; i &lt; numDims; ++i)</div>
2726<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
2727<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; outDims[i] = srcShape[mappings[i]];</div>
2728<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
2729<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.html">armnn::TensorShape</a> permutedShape(numDims, outDims);</div>
2730<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> permutedShape;</div>
2731<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;}</div>
2732</div><!-- fragment -->
2733<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>, <a class="el" href="_types_8hpp_source.html#l00357">PermutationVector::GetSize()</a>, and <a class="el" href="_types_8hpp_source.html#l00031">armnn::MaxNumOfTensorDimensions</a>.</p>
2734
2735<p class="reference">Referenced by <a class="el" href="_transpose_layer_8cpp_source.html#l00038">TransposeLayer::InferOutputShapes()</a>, <a class="el" href="_move_transpose_up_8hpp_source.html#l00023">MoveTransposeUpImpl::Run()</a>, and <a class="el" href="_transpose_8cpp_source.html#l00146">TransposeTensorShape()</a>.</p>
2736
2737</div>
2738</div>
2739<a id="a2e0aa273755368a1bf5fc65102df4a92"></a>
2740<h2 class="memtitle"><span class="permalink"><a href="#a2e0aa273755368a1bf5fc65102df4a92">&#9670;&nbsp;</a></span>VerifyInt32()</h2>
2741
2742<div class="memitem">
2743<div class="memproto">
2744 <table class="memname">
2745 <tr>
2746 <td class="memname">int32_t VerifyInt32 </td>
2747 <td>(</td>
2748 <td class="paramtype">const char *&#160;</td>
2749 <td class="paramname"><em>expr</em>, </td>
2750 </tr>
2751 <tr>
2752 <td class="paramkey"></td>
2753 <td></td>
2754 <td class="paramtype">int64_t&#160;</td>
2755 <td class="paramname"><em>value</em>, </td>
2756 </tr>
2757 <tr>
2758 <td class="paramkey"></td>
2759 <td></td>
2760 <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.html">armnn::CheckLocation</a> &amp;&#160;</td>
2761 <td class="paramname"><em>location</em>&#160;</td>
2762 </tr>
2763 <tr>
2764 <td></td>
2765 <td>)</td>
2766 <td></td><td></td>
2767 </tr>
2768 </table>
2769</div><div class="memdoc">
2770
2771<p class="definition">Definition at line <a class="el" href="_verification_helpers_8cpp_source.html#l00052">52</a> of file <a class="el" href="_verification_helpers_8cpp_source.html">VerificationHelpers.cpp</a>.</p>
2772<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div>
2773<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (value &lt; std::numeric_limits&lt;int&gt;::min() || value &gt; std::numeric_limits&lt;int&gt;::max())</div>
2774<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
2775<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_parse_exception.html">ParseException</a>(fmt::format(<span class="stringliteral">&quot;&#39;{}&#39; must should fit into a int32 (ArmNN don&#39;t support int64),&quot;</span></div>
2776<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="stringliteral">&quot; received: {} at {}&quot;</span>,</div>
2777<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; expr,</div>
2778<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; value,</div>
2779<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; location.<a class="code" href="structarmnn_1_1_check_location.html#a5e3562cda960da001597e7dd5679b140">AsString</a>()));</div>
2780<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
2781<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span></div>
2782<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div>
2783<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(value);</div>
2784<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
2785<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div>
2786</div><!-- fragment -->
2787<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00029">CheckLocation::AsString()</a>.</p>
2788
2789</div>
2790</div>
2791<a id="a56b0e17341e000fa1d4561890294520c"></a>
2792<h2 class="memtitle"><span class="permalink"><a href="#a56b0e17341e000fa1d4561890294520c">&#9670;&nbsp;</a></span>within_percentage_tolerance()</h2>
2793
2794<div class="memitem">
2795<div class="memproto">
2796<table class="mlabels">
2797 <tr>
2798 <td class="mlabels-left">
2799 <table class="memname">
2800 <tr>
2801 <td class="memname">bool armnnUtils::within_percentage_tolerance </td>
2802 <td>(</td>
2803 <td class="paramtype">float&#160;</td>
2804 <td class="paramname"><em>a</em>, </td>
2805 </tr>
2806 <tr>
2807 <td class="paramkey"></td>
2808 <td></td>
2809 <td class="paramtype">float&#160;</td>
2810 <td class="paramname"><em>b</em>, </td>
2811 </tr>
2812 <tr>
2813 <td class="paramkey"></td>
2814 <td></td>
2815 <td class="paramtype">float&#160;</td>
2816 <td class="paramname"><em>tolerancePercent</em> = <code>1.0f</code>&#160;</td>
2817 </tr>
2818 <tr>
2819 <td></td>
2820 <td>)</td>
2821 <td></td><td></td>
2822 </tr>
2823 </table>
2824 </td>
2825 <td class="mlabels-right">
2826<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2827 </tr>
2828</table>
2829</div><div class="memdoc">
2830
2831<p>Compare two floats and return true if their values are within a specified tolerance of each other. </p>
2832<dl class="params"><dt>Parameters</dt><dd>
2833 <table class="params">
2834 <tr><td class="paramname">a</td><td></td></tr>
2835 <tr><td class="paramname">b</td><td></td></tr>
2836 <tr><td class="paramname">tolerancePercentage</td><td>If not supplied default will be 1% tolerance (1.0f) </td></tr>
2837 </table>
2838 </dd>
2839</dl>
2840<dl class="section return"><dt>Returns</dt><dd>true if the value of float b is within tolerancePercentage of the value for float a. </dd></dl>
2841
2842<p class="definition">Definition at line <a class="el" href="_floating_point_comparison_8hpp_source.html#l00020">20</a> of file <a class="el" href="_floating_point_comparison_8hpp_source.html">FloatingPointComparison.hpp</a>.</p>
2843<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div>
2844<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordtype">float</span> toleranceValue = std::fabs(a * (tolerancePercent / 100));</div>
2845<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> std::fabs(a - b) &lt;= toleranceValue;</div>
2846<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div>
2847</div><!-- fragment -->
2848</div>
2849</div>
2850<h2 class="groupheader">Variable Documentation</h2>
2851<a id="a59cbccbfbae7633020d200f8c23fe69e"></a>
2852<h2 class="memtitle"><span class="permalink"><a href="#a59cbccbfbae7633020d200f8c23fe69e">&#9670;&nbsp;</a></span>ArmNNToNHWC</h2>
2853
2854<div class="memitem">
2855<div class="memproto">
2856 <table class="memname">
2857 <tr>
2858 <td class="memname">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> ArmNNToNHWC = { 0, 3, 1, 2 }</td>
2859 </tr>
2860 </table>
2861</div><div class="memdoc">
2862
2863<p class="definition">Definition at line <a class="el" href="_parser_helper_8cpp_source.html#l00017">17</a> of file <a class="el" href="_parser_helper_8cpp_source.html">ParserHelper.cpp</a>.</p>
2864
2865</div>
2866</div>
2867<a id="a12124184ac6aec018beb98b9715330c7"></a>
2868<h2 class="memtitle"><span class="permalink"><a href="#a12124184ac6aec018beb98b9715330c7">&#9670;&nbsp;</a></span>NHWCToArmNN</h2>
2869
2870<div class="memitem">
2871<div class="memproto">
2872 <table class="memname">
2873 <tr>
2874 <td class="memname">const <a class="el" href="classarmnn_1_1_permutation_vector.html">armnn::PermutationVector</a> NHWCToArmNN = { 0, 2, 3, 1 }</td>
2875 </tr>
2876 </table>
2877</div><div class="memdoc">
2878
2879<p class="definition">Definition at line <a class="el" href="_parser_helper_8cpp_source.html#l00016">16</a> of file <a class="el" href="_parser_helper_8cpp_source.html">ParserHelper.cpp</a>.</p>
2880
2881</div>
2882</div>
2883</div><!-- contents -->
2884</div><!-- doc-content -->
2885<div class="ttc" id="anamespacearmnn_html_a280670a263dc4fd40491f6d0a2737f44"><div class="ttname"><a href="namespacearmnn.html#a280670a263dc4fd40491f6d0a2737f44">armnn::BindingPointInfo</a></div><div class="ttdeci">std::pair&lt; armnn::LayerBindingId, armnn::TensorInfo &gt; BindingPointInfo</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00276">Tensor.hpp:276</a></div></div>
2886<div class="ttc" id="aclassarmnn_1_1_tensor_html"><div class="ttname"><a href="classarmnn_1_1_tensor.html">armnn::Tensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00321">Tensor.hpp:321</a></div></div>
2887<div class="ttc" id="aclassarmnn_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#l00198">Tensor.hpp:198</a></div></div>
2888<div class="ttc" id="aclassarmnn_1_1_optional_html"><div class="ttname"><a href="classarmnn_1_1_optional.html">armnn::Optional&lt; unsigned int &gt;</a></div></div>
2889<div class="ttc" id="anamespacearmnn_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#l00394">Tensor.hpp:394</a></div></div>
2890<div class="ttc" id="aclassarmnn_1_1_tensor_info_html_a8bc11f1fa23ef42532f9fdd04d355270"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8bc11f1fa23ef42532f9fdd04d355270">armnn::TensorInfo::GetQuantizationScales</a></div><div class="ttdeci">std::vector&lt; float &gt; GetQuantizationScales() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00451">Tensor.cpp:451</a></div></div>
2891<div class="ttc" id="aclassarmnn_1_1_tensor_info_html_a047ca888c43bd7fb5702853bf72410d0"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a047ca888c43bd7fb5702853bf72410d0">armnn::TensorInfo::GetQuantizationScale</a></div><div class="ttdeci">float GetQuantizationScale() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00461">Tensor.cpp:461</a></div></div>
2892<div class="ttc" id="aclassarmnn_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#l00152">Tensor.hpp:152</a></div></div>
2893<div class="ttc" id="astructarmnn_1_1_origins_descriptor_html_a78e8266be865fdd92cadd04d6e25ae1f"><div class="ttname"><a href="structarmnn_1_1_origins_descriptor.html#a78e8266be865fdd92cadd04d6e25ae1f">armnn::OriginsDescriptor::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#l00192">Descriptors.cpp:192</a></div></div>
2894<div class="ttc" id="anamespacearmnn_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#l00233">TypesUtils.hpp:233</a></div></div>
2895<div class="ttc" id="aclassarmnn_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#l00197">Tensor.hpp:197</a></div></div>
2896<div class="ttc" id="a_exceptions_8hpp_html_aa3be76aec4ce713822a5ea1ecbb7bc61"><div class="ttname"><a href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a></div><div class="ttdeci">#define CHECK_LOCATION()</div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00203">Exceptions.hpp:203</a></div></div>
2897<div class="ttc" id="aclassarmnn_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>
2898<div class="ttc" id="aclassarmnn_1_1_i_tensor_handle_html_affd5aae75cad90f472f96cfd25a13f29"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle.html#affd5aae75cad90f472f96cfd25a13f29">armnn::ITensorHandle::GetShape</a></div><div class="ttdeci">virtual TensorShape GetShape() const =0</div><div class="ttdoc">Get the number of elements for each dimension ordered from slowest iterating dimension to fastest ite...</div></div>
2899<div class="ttc" id="anamespacearmnn_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#l00031">Types.hpp:31</a></div></div>
2900<div class="ttc" id="anamespacearmnn_html_a8f091a512915d1cb29a4ebf13dfc53ea"><div class="ttname"><a href="namespacearmnn.html#a8f091a512915d1cb29a4ebf13dfc53ea">armnn::OutputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class Tensor &gt; &gt; OutputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00395">Tensor.hpp:395</a></div></div>
2901<div class="ttc" id="anamespacearmnn_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#l00125">Permute.cpp:125</a></div></div>
2902<div class="ttc" id="anamespacearmnn_utils_html_a428a9a6ffdf0e8d723b50c038c56c336"><div class="ttname"><a href="namespacearmnn_utils.html#a428a9a6ffdf0e8d723b50c038c56c336">armnnUtils::TransposeTensorShape</a></div><div class="ttdeci">armnn::TensorShape TransposeTensorShape(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_transpose_8cpp_source.html#l00125">Transpose.cpp:125</a></div></div>
2903<div class="ttc" id="aclassarmnn_1_1_tensor_info_html_ab85cd8cc10c96a7c99c14042c251fc48"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#ab85cd8cc10c96a7c99c14042c251fc48">armnn::TensorInfo::HasPerAxisQuantization</a></div><div class="ttdeci">bool HasPerAxisQuantization() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00446">Tensor.cpp:446</a></div></div>
2904<div class="ttc" id="astructarmnn_1_1_check_location_html_a5e3562cda960da001597e7dd5679b140"><div class="ttname"><a href="structarmnn_1_1_check_location.html#a5e3562cda960da001597e7dd5679b140">armnn::CheckLocation::AsString</a></div><div class="ttdeci">std::string AsString() const</div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00029">Exceptions.hpp:29</a></div></div>
2905<div class="ttc" id="anamespacearmnn_html_a375ca3cff9f1b005d1412dc5f3cf5b6e"><div class="ttname"><a href="namespacearmnn.html#a375ca3cff9f1b005d1412dc5f3cf5b6e">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.html#l00035">NumericCast.hpp:35</a></div></div>
2906<div class="ttc" id="astructarmnn_1_1_strided_slice_descriptor_html_afc4731b55776f71af1e14c799c6e6e2c"><div class="ttname"><a href="structarmnn_1_1_strided_slice_descriptor.html#afc4731b55776f71af1e14c799c6e6e2c">armnn::StridedSliceDescriptor::GetStopForAxis</a></div><div class="ttdeci">int GetStopForAxis(const TensorShape &amp;inputShape, unsigned int axis, int startForAxis) const</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00420">Descriptors.cpp:420</a></div></div>
2907<div class="ttc" id="aclassarmnn_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>
2908<div class="ttc" id="aclassarmnn_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="ttdoc">Function that returns the tensor rank.</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00174">Tensor.cpp:174</a></div></div>
2909<div class="ttc" id="aclassarmnn_1_1_tensor_info_html_a8b8fc85ce966c035d789cf22db5088a1"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8b8fc85ce966c035d789cf22db5088a1">armnn::TensorInfo::GetQuantizationDim</a></div><div class="ttdeci">Optional&lt; unsigned int &gt; GetQuantizationDim() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00498">Tensor.cpp:498</a></div></div>
2910<div class="ttc" id="aclassarmnn_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>
2911<div class="ttc" id="anamespacearmnn_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="ttdoc">Dequantize an 8-bit data type into a floating point data type.</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00048">TypesUtils.cpp:48</a></div></div>
2912<div class="ttc" id="aclassarmnn_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>
2913<div class="ttc" id="aclassarmnn_1_1_i_tensor_handle_html_a563609828050f1b3a7868c23f3365923"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle.html#a563609828050f1b3a7868c23f3365923">armnn::ITensorHandle::Unmap</a></div><div class="ttdeci">virtual void Unmap() const =0</div><div class="ttdoc">Unmap the tensor data.</div></div>
2914<div class="ttc" id="anamespacearmnn_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">Quantize a floating point data type into an 8-bit data type.</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.html#l00030">TypesUtils.cpp:30</a></div></div>
2915<div class="ttc" id="anamespacearmnn_html_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.html#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div><div class="ttdeci">@ info</div></div>
2916<div class="ttc" id="aclassarmnn_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#l00200">Tensor.hpp:200</a></div></div>
2917<div class="ttc" id="astructarmnn_1_1_strided_slice_descriptor_html_a6d0384878432cfc9652b7ae8bc59506f"><div class="ttname"><a href="structarmnn_1_1_strided_slice_descriptor.html#a6d0384878432cfc9652b7ae8bc59506f">armnn::StridedSliceDescriptor::m_ShrinkAxisMask</a></div><div class="ttdeci">int32_t m_ShrinkAxisMask</div><div class="ttdoc">Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l01355">Descriptors.hpp:1355</a></div></div>
2918<div class="ttc" id="astructarmnn_1_1_strided_slice_descriptor_html_a0d53caff836b84204adbd1c28752a201"><div class="ttname"><a href="structarmnn_1_1_strided_slice_descriptor.html#a0d53caff836b84204adbd1c28752a201">armnn::StridedSliceDescriptor::m_Stride</a></div><div class="ttdeci">std::vector&lt; int &gt; m_Stride</div><div class="ttdoc">Stride values for the input that will be sliced.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l01346">Descriptors.hpp:1346</a></div></div>
2919<div class="ttc" id="aclassarmnn_1_1_permutation_vector_html_a490ec6b59006d1fe1ec2ea30e69fb97c"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.html#a490ec6b59006d1fe1ec2ea30e69fb97c">armnn::PermutationVector::GetSize</a></div><div class="ttdeci">SizeType GetSize() const</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.html#l00357">Types.hpp:357</a></div></div>
2920<div class="ttc" id="astructarmnn_1_1abs_html"><div class="ttname"><a href="structarmnn_1_1abs.html">armnn::abs</a></div><div class="ttdef"><b>Definition:</b> <a href="_abs_8hpp_source.html#l00013">Abs.hpp:13</a></div></div>
2921<div class="ttc" id="aclassarmnn_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#l00193">Tensor.hpp:193</a></div></div>
2922<div class="ttc" id="aclassarmnn_1_1_parse_exception_html"><div class="ttname"><a href="classarmnn_1_1_parse_exception.html">armnn::ParseException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00092">Exceptions.hpp:92</a></div></div>
2923<div class="ttc" id="anamespacearmnn_utils_html_a7e3caf713986e36cff3ba9d9e442366c"><div class="ttname"><a href="namespacearmnn_utils.html#a7e3caf713986e36cff3ba9d9e442366c">armnnUtils::CheckSizes</a></div><div class="ttdeci">void CheckSizes(const std::vector&lt; PrimitiveType &gt; &amp;data, const armnn::TensorInfo &amp;tensorInfo, unsigned int size=1)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00296">TensorUtils.cpp:296</a></div></div>
2924<div class="ttc" id="astructarmnn_1_1_strided_slice_descriptor_html_add849c1188ee7ff60774755b746aa526"><div class="ttname"><a href="structarmnn_1_1_strided_slice_descriptor.html#add849c1188ee7ff60774755b746aa526">armnn::StridedSliceDescriptor::GetStartForAxis</a></div><div class="ttdeci">int GetStartForAxis(const TensorShape &amp;inputShape, unsigned int axis) const</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00393">Descriptors.cpp:393</a></div></div>
2925<div class="ttc" id="anamespacearmnn_utils_html_a276aac5f7a8bdc3db4f62203870ca13b"><div class="ttname"><a href="namespacearmnn_utils.html#a276aac5f7a8bdc3db4f62203870ca13b">armnnUtils::GetNumElementsAfter</a></div><div class="ttdeci">unsigned int GetNumElementsAfter(const armnn::TensorShape &amp;shape, unsigned int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00261">TensorUtils.cpp:261</a></div></div>
2926<div class="ttc" id="anamespacearmnn_html"><div class="ttname"><a href="namespacearmnn.html">armnn</a></div><div class="ttdoc">Copyright (c) 2021 ARM Limited and Contributors.</div><div class="ttdef"><b>Definition:</b> <a href="01__00__quick__start_8dox_source.html#l00006">01_00_quick_start.dox:6</a></div></div>
2927<div class="ttc" id="astructarmnn_1_1_origins_descriptor_html_a2b125117aa61f9baf3a9cb8658aa61a2"><div class="ttname"><a href="structarmnn_1_1_origins_descriptor.html#a2b125117aa61f9baf3a9cb8658aa61a2">armnn::OriginsDescriptor::SetViewOriginCoord</a></div><div class="ttdeci">Status SetViewOriginCoord(uint32_t view, uint32_t coord, uint32_t value)</div><div class="ttdoc">@Brief Set the view origin coordinates.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.html#l00167">Descriptors.cpp:167</a></div></div>
2928<div class="ttc" id="anamespacearmnn_utils_html_a2bff2aae3ae824ff74ba550488373886"><div class="ttname"><a href="namespacearmnn_utils.html#a2bff2aae3ae824ff74ba550488373886">armnnUtils::ReduceDims</a></div><div class="ttdeci">armnn::TensorShape ReduceDims(const armnn::TensorShape &amp;tensorInfo, unsigned int dimensions)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.html#l00108">TensorUtils.cpp:108</a></div></div>
2929<div class="ttc" id="aclassarmnn_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#l00329">Tensor.hpp:329</a></div></div>
2930<div class="ttc" id="aclassarmnn_1_1_tensor_info_html_a8ffca1e21bdfa7f945617acd606aac91"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a8ffca1e21bdfa7f945617acd606aac91">armnn::TensorInfo::SetConstant</a></div><div class="ttdeci">void SetConstant(const bool IsConstant=true)</div><div class="ttdoc">Marks the data corresponding to this tensor info as constant.</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00518">Tensor.cpp:518</a></div></div>
2931<div class="ttc" id="anamespacearmnn_utils_html_ac7bd4ea667375c07718086368507ed44"><div class="ttname"><a href="namespacearmnn_utils.html#ac7bd4ea667375c07718086368507ed44">armnnUtils::TContainer</a></div><div class="ttdeci">mapbox::util::variant&lt; std::vector&lt; float &gt;, std::vector&lt; int &gt;, std::vector&lt; unsigned char &gt;, std::vector&lt; int8_t &gt; &gt; TContainer</div><div class="ttdef"><b>Definition:</b> <a href="_t_container_8hpp_source.html#l00018">TContainer.hpp:18</a></div></div>
2932<div class="ttc" id="aclassarmnn_1_1_tensor_info_html_a770b51078da02f44a819e9f95d8058b5"><div class="ttname"><a href="classarmnn_1_1_tensor_info.html#a770b51078da02f44a819e9f95d8058b5">armnn::TensorInfo::GetQuantizationOffset</a></div><div class="ttdeci">int32_t GetQuantizationOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00482">Tensor.cpp:482</a></div></div>
2933<div class="ttc" id="aclassarmnn_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="ttdoc">Function that calculates the tensor elements by multiplying all dimension size which are Specified.</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.html#l00181">Tensor.cpp:181</a></div></div>
2934<div class="ttc" id="aclassarmnn_1_1_optional_reference_switch_html_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.html#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch::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>
2935<div class="ttc" id="aclassarmnn_1_1_i_tensor_handle_html_a9afbc055a017adf1bc38ee137bca6e90"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle.html#a9afbc055a017adf1bc38ee137bca6e90">armnn::ITensorHandle::Map</a></div><div class="ttdeci">virtual const void * Map(bool blocking=true) const =0</div><div class="ttdoc">Map the tensor data for access.</div></div>
2936<!-- start footer part -->
2937<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
2938 <ul>
2939 <li class="navelem"><a class="el" href="namespacearmnn_utils.html">armnnUtils</a></li>
2940 <li class="footer">Generated on Thu May 16 2024 09:32:00 for Arm NN by
2941 <a href="http://www.doxygen.org/index.html">
2942 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
2943 </ul>
2944</div>
2945</body>
2946</html>