aboutsummaryrefslogtreecommitdiff
path: root/21.02/_network_execution_utils_8hpp_source.xhtml
blob: a574d16b5e2092b19a48de4b77205abf0b211519 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: tests/NetworkExecutionUtils/NetworkExecutionUtils.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">21.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_network_execution_utils_8hpp_source.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

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

<div class="header">
  <div class="headertitle">
<div class="title">NetworkExecutionUtils.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_network_execution_utils_8hpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_i_runtime_8hpp.xhtml">armnn/IRuntime.hpp</a>&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_types_8hpp.xhtml">armnn/Types.hpp</a>&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_logging_8hpp.xhtml">armnn/Logging.hpp</a>&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_string_utils_8hpp.xhtml">armnn/utility/StringUtils.hpp</a>&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;mapbox/variant.hpp&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;fstream&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;std::vector&lt;unsigned int&gt; <a class="code" href="_network_execution_utils_8hpp.xhtml#a7dfb0158a3b76d682b4fcfe434ad2d7a">ParseArray</a>(std::istream&amp; stream);</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">/// Splits a given string at every accurance of delimiter into a vector of string</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"></span>std::vector&lt;std::string&gt; <a class="code" href="_network_execution_utils_8hpp.xhtml#a1842dfaf4b24f36146a0cf6731ed75b7">ParseStringList</a>(<span class="keyword">const</span> std::string&amp; inputString, <span class="keyword">const</span> <span class="keywordtype">char</span>* delimiter);</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="struct_tensor_printer.xhtml">   24</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_tensor_printer.xhtml">TensorPrinter</a></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <a class="code" href="struct_tensor_printer.xhtml#a0677e34294f161be8655f14004ff7fbb">TensorPrinter</a>(<span class="keyword">const</span> std::string&amp; binding,</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;                  <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a>&amp; info,</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;                  <span class="keyword">const</span> std::string&amp; outputTensorFile,</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;                  <span class="keywordtype">bool</span> dequantizeOutput);</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="struct_tensor_printer.xhtml#aa0a96118f11a4b009ac07643cd266a76">operator()</a>(<span class="keyword">const</span> std::vector&lt;float&gt;&amp; values);</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="struct_tensor_printer.xhtml#aa0a96118f11a4b009ac07643cd266a76">operator()</a>(<span class="keyword">const</span> std::vector&lt;uint8_t&gt;&amp; values);</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="struct_tensor_printer.xhtml#aa0a96118f11a4b009ac07643cd266a76">operator()</a>(<span class="keyword">const</span> std::vector&lt;int&gt;&amp; values);</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Container, <span class="keyword">typename</span> Delegate&gt;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keywordtype">void</span> ForEachValue(<span class="keyword">const</span> Container&amp; c, Delegate delegate);</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="keywordtype">void</span> WriteToFile(<span class="keyword">const</span> std::vector&lt;T&gt;&amp; values);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    std::string m_OutputBinding;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordtype">float</span> m_Scale;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordtype">int</span> m_Offset;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    std::string m_OutputTensorFile;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keywordtype">bool</span> m_DequantizeOutput;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;};</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="_network_execution_utils_8hpp.xhtml#acf933608643ce27b3c68e3431d047d0a">   51</a></span>&#160;<span class="keyword">using</span> <a class="code" href="_model_accuracy_checker_test_8cpp.xhtml#acf933608643ce27b3c68e3431d047d0a">TContainer</a>         = mapbox::util::variant&lt;std::vector&lt;float&gt;, std::vector&lt;int&gt;, std::vector&lt;unsigned char&gt;&gt;;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="_network_execution_utils_8hpp.xhtml#a84f142f71062ee2b8a166701ecd7b53e">   52</a></span>&#160;<span class="keyword">using</span> <a class="code" href="_network_execution_utils_8cpp.xhtml#a84f142f71062ee2b8a166701ecd7b53e">QuantizationParams</a> = std::pair&lt;float, int32_t&gt;;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keywordtype">void</span> <a class="code" href="_network_execution_utils_8hpp.xhtml#adb958be77ea4f3663e50db710f1edbba">PopulateTensorWithData</a>(<a class="code" href="_model_accuracy_checker_test_8cpp.xhtml#acf933608643ce27b3c68e3431d047d0a">TContainer</a>&amp; tensorData,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;                            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements,</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;                            <span class="keyword">const</span> std::string&amp; dataTypeStr,</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;                            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt;QuantizationParams&gt;</a>&amp; qParams,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;                            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_optional.xhtml">armnn::Optional&lt;std::string&gt;</a>&amp; dataFile);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">/**</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment"> * Verifies if the given string is a valid path. Reports invalid paths to std::err.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment"> * @param file string - A string containing the path to check</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment"> * @param expectFile bool - If true, checks for a regular file.</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment"> * @return bool - True if given string is a valid path., false otherwise.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment"> * */</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_network_execution_utils_8hpp.xhtml#a6506f23e2f4153a68c87ea03ae423b12">ValidatePath</a>(<span class="keyword">const</span> std::string&amp; file, <span class="keyword">const</span> <span class="keywordtype">bool</span> expectFile);</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">/**</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment"> * Verifies if a given vector of strings are valid paths. Reports invalid paths to std::err.</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment"> * @param fileVec vector of string - A vector of string containing the paths to check</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment"> * @param expectFile bool - If true, checks for a regular file.</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment"> * @return bool - True if all given strings are valid paths., false otherwise.</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="comment"> * */</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_network_execution_utils_8hpp.xhtml#aa8ad60308ed132ba939a09d48a97ac30">ValidatePaths</a>(<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; fileVec, <span class="keyword">const</span> <span class="keywordtype">bool</span> expectFile);</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> TParseElementFunc&gt;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="_network_execution_utils_8hpp.xhtml#a20b7a9d32847d623fb19516762317d0d">   77</a></span>&#160;std::vector&lt;T&gt; <a class="code" href="_network_execution_utils_8hpp.xhtml#a20b7a9d32847d623fb19516762317d0d">ParseArrayImpl</a>(std::istream&amp; stream, TParseElementFunc parseElementFunc, <span class="keyword">const</span> <span class="keywordtype">char</span>* chars = <span class="stringliteral">&quot;\t ,:&quot;</span>)</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    std::vector&lt;T&gt; result;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="comment">// Processes line-by-line.</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    std::string line;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">while</span> (std::getline(stream, line))</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        std::vector&lt;std::string&gt; tokens = <a class="code" href="namespacearmnn_1_1string_utils.xhtml#a25545ea8edf6a26c00077b01294beac5">armnn::stringUtils::StringTokenizer</a>(line, chars);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">const</span> std::string&amp; token : tokens)</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        {</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;            <span class="keywordflow">if</span> (!token.empty()) <span class="comment">// See https://stackoverflow.com/questions/10437406/</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;            {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;                <span class="keywordflow">try</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;                {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;                    result.push_back(parseElementFunc(token));</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                }</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;                <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp;)</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;                {</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                    <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(error) &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span> &lt;&lt; token &lt;&lt; <span class="stringliteral">&quot;&#39; is not a valid number. It has been ignored.&quot;</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;            }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    }</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;}</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> TParseElementFunc&gt;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="_network_execution_utils_8hpp.xhtml#abfe0c416f8549086f7cec9b076caa0e9">  105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="_network_execution_utils_8hpp.xhtml#abfe0c416f8549086f7cec9b076caa0e9">PopulateTensorWithDataGeneric</a>(std::vector&lt;T&gt;&amp; tensorData,</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements,</div><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_optional.xhtml">armnn::Optional&lt;std::string&gt;</a>&amp; dataFile,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;                                   TParseElementFunc parseFunction)</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">bool</span> readFromFile = dataFile.<a class="code" href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>() &amp;&amp; !dataFile.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>().empty();</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    std::ifstream inputTensorFile;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordflow">if</span> (readFromFile)</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        inputTensorFile = std::ifstream(dataFile.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>());</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    }</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    tensorData = readFromFile ?</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;                 ParseArrayImpl&lt;T&gt;(inputTensorFile, parseFunction) :</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;                 std::vector&lt;T&gt;(numElements, static_cast&lt;T&gt;(0));</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;}</div><div class="ttc" id="namespacearmnn_1_1string_utils_xhtml_a25545ea8edf6a26c00077b01294beac5"><div class="ttname"><a href="namespacearmnn_1_1string_utils.xhtml#a25545ea8edf6a26c00077b01294beac5">armnn::stringUtils::StringTokenizer</a></div><div class="ttdeci">std::vector&lt; std::string &gt; StringTokenizer(const std::string &amp;str, const char *delimiters, bool tokenCompression=true)</div><div class="ttdoc">Function to take a string and a list of delimiters and split the string into tokens based on those de...</div><div class="ttdef"><b>Definition:</b> <a href="_string_utils_8hpp_source.xhtml#l00020">StringUtils.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_xhtml"><div class="ttname"><a href="classarmnn_1_1_optional.xhtml">armnn::Optional</a></div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00270">Optional.hpp:270</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml_a6506f23e2f4153a68c87ea03ae423b12"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml#a6506f23e2f4153a68c87ea03ae423b12">ValidatePath</a></div><div class="ttdeci">bool ValidatePath(const std::string &amp;file, const bool expectFile)</div><div class="ttdoc">Verifies if the given string is a valid path. </div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00233">NetworkExecutionUtils.cpp:233</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00152">Tensor.hpp:152</a></div></div>
<div class="ttc" id="struct_tensor_printer_xhtml_aa0a96118f11a4b009ac07643cd266a76"><div class="ttname"><a href="struct_tensor_printer.xhtml#aa0a96118f11a4b009ac07643cd266a76">TensorPrinter::operator()</a></div><div class="ttdeci">void operator()(const std::vector&lt; float &gt; &amp;values)</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00102">NetworkExecutionUtils.cpp:102</a></div></div>
<div class="ttc" id="_model_accuracy_checker_test_8cpp_xhtml_acf933608643ce27b3c68e3431d047d0a"><div class="ttname"><a href="_model_accuracy_checker_test_8cpp.xhtml#acf933608643ce27b3c68e3431d047d0a">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; &gt; TContainer</div><div class="ttdef"><b>Definition:</b> <a href="_model_accuracy_checker_test_8cpp_source.xhtml#l00055">ModelAccuracyCheckerTest.cpp:55</a></div></div>
<div class="ttc" id="_i_runtime_8hpp_xhtml"><div class="ttname"><a href="_i_runtime_8hpp.xhtml">IRuntime.hpp</a></div></div>
<div class="ttc" id="_logging_8hpp_xhtml_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.xhtml#l00202">Logging.hpp:202</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml_a7dfb0158a3b76d682b4fcfe434ad2d7a"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml#a7dfb0158a3b76d682b4fcfe434ad2d7a">ParseArray</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; ParseArray(std::istream &amp;stream)</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00077">NetworkExecutionUtils.cpp:77</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_reference_switch_xhtml_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00146">Optional.hpp:146</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml_a1842dfaf4b24f36146a0cf6731ed75b7"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml#a1842dfaf4b24f36146a0cf6731ed75b7">ParseStringList</a></div><div class="ttdeci">std::vector&lt; std::string &gt; ParseStringList(const std::string &amp;inputString, const char *delimiter)</div><div class="ttdoc">Splits a given string at every accurance of delimiter into a vector of string. </div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00084">NetworkExecutionUtils.cpp:84</a></div></div>
<div class="ttc" id="classarmnn_1_1_optional_base_xhtml_a86b749ce2c4bc627fa8a1fcfaf0e314f"><div class="ttname"><a href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">armnn::OptionalBase::has_value</a></div><div class="ttdeci">bool has_value() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00053">Optional.hpp:53</a></div></div>
<div class="ttc" id="_types_8hpp_xhtml"><div class="ttname"><a href="_types_8hpp.xhtml">Types.hpp</a></div></div>
<div class="ttc" id="_logging_8hpp_xhtml"><div class="ttname"><a href="_logging_8hpp.xhtml">Logging.hpp</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml_a20b7a9d32847d623fb19516762317d0d"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml#a20b7a9d32847d623fb19516762317d0d">ParseArrayImpl</a></div><div class="ttdeci">std::vector&lt; T &gt; ParseArrayImpl(std::istream &amp;stream, TParseElementFunc parseElementFunc, const char *chars=&quot;\,:&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8hpp_source.xhtml#l00077">NetworkExecutionUtils.hpp:77</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml_aa8ad60308ed132ba939a09d48a97ac30"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml#aa8ad60308ed132ba939a09d48a97ac30">ValidatePaths</a></div><div class="ttdeci">bool ValidatePaths(const std::vector&lt; std::string &gt; &amp;fileVec, const bool expectFile)</div><div class="ttdoc">Verifies if a given vector of strings are valid paths. </div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00248">NetworkExecutionUtils.cpp:248</a></div></div>
<div class="ttc" id="struct_tensor_printer_xhtml_a0677e34294f161be8655f14004ff7fbb"><div class="ttname"><a href="struct_tensor_printer.xhtml#a0677e34294f161be8655f14004ff7fbb">TensorPrinter::TensorPrinter</a></div><div class="ttdeci">TensorPrinter(const std::string &amp;binding, const armnn::TensorInfo &amp;info, const std::string &amp;outputTensorFile, bool dequantizeOutput)</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00092">NetworkExecutionUtils.cpp:92</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml_adb958be77ea4f3663e50db710f1edbba"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml#adb958be77ea4f3663e50db710f1edbba">PopulateTensorWithData</a></div><div class="ttdeci">void PopulateTensorWithData(TContainer &amp;tensorData, unsigned int numElements, const std::string &amp;dataTypeStr, const armnn::Optional&lt; QuantizationParams &gt; &amp;qParams, const armnn::Optional&lt; std::string &gt; &amp;dataFile)</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00176">NetworkExecutionUtils.cpp:176</a></div></div>
<div class="ttc" id="_string_utils_8hpp_xhtml"><div class="ttname"><a href="_string_utils_8hpp.xhtml">StringUtils.hpp</a></div></div>
<div class="ttc" id="struct_tensor_printer_xhtml"><div class="ttname"><a href="struct_tensor_printer.xhtml">TensorPrinter</a></div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8hpp_source.xhtml#l00024">NetworkExecutionUtils.hpp:24</a></div></div>
<div class="ttc" id="_network_execution_utils_8cpp_xhtml_a84f142f71062ee2b8a166701ecd7b53e"><div class="ttname"><a href="_network_execution_utils_8cpp.xhtml#a84f142f71062ee2b8a166701ecd7b53e">QuantizationParams</a></div><div class="ttdeci">std::pair&lt; float, int32_t &gt; QuantizationParams</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8cpp_source.xhtml#l00174">NetworkExecutionUtils.cpp:174</a></div></div>
<div class="ttc" id="_network_execution_utils_8hpp_xhtml_abfe0c416f8549086f7cec9b076caa0e9"><div class="ttname"><a href="_network_execution_utils_8hpp.xhtml#abfe0c416f8549086f7cec9b076caa0e9">PopulateTensorWithDataGeneric</a></div><div class="ttdeci">void PopulateTensorWithDataGeneric(std::vector&lt; T &gt; &amp;tensorData, unsigned int numElements, const armnn::Optional&lt; std::string &gt; &amp;dataFile, TParseElementFunc parseFunction)</div><div class="ttdef"><b>Definition:</b> <a href="_network_execution_utils_8hpp_source.xhtml#l00105">NetworkExecutionUtils.hpp:105</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_59425e443f801f1f2fd8bbe4959a3ccf.xhtml">tests</a></li><li class="navelem"><a class="el" href="dir_bee5dd02b9a5e046b34f7fb0b8e9850a.xhtml">NetworkExecutionUtils</a></li><li class="navelem"><a class="el" href="_network_execution_utils_8hpp.xhtml">NetworkExecutionUtils.hpp</a></li>
    <li class="footer">Generated on Fri Mar 19 2021 15:26:05 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>