diff options
author | Nikhil Raj <nikhil.raj@arm.com> | 2024-05-16 09:47:51 +0100 |
---|---|---|
committer | Nikhil Raj <nikhil.raj@arm.com> | 2024-05-16 09:47:51 +0100 |
commit | 1dc83febfb76d6a770bdf3ba16c4034a970c2320 (patch) | |
tree | 66d27e5587e9010f3db26a23a348df844c88f8e6 /latest/classarmnn_1_1_gather_nd_layer.html | |
parent | 38b600d8abb2c5f7a44511b5deddf441f975d51d (diff) | |
download | armnn-gh-pages.tar.gz |
IVGCVSW-8260 Update Doxgen Docu for 24.05gh-pages
Signed-off-by: Nikhil Raj <nikhil.raj@arm.com>
Change-Id: If4bc983bf2793a27ded8e26ac2b29523fc1e4711
Diffstat (limited to 'latest/classarmnn_1_1_gather_nd_layer.html')
-rw-r--r-- | latest/classarmnn_1_1_gather_nd_layer.html | 160 |
1 files changed, 91 insertions, 69 deletions
diff --git a/latest/classarmnn_1_1_gather_nd_layer.html b/latest/classarmnn_1_1_gather_nd_layer.html index 9083c9c875..6287373959 100644 --- a/latest/classarmnn_1_1_gather_nd_layer.html +++ b/latest/classarmnn_1_1_gather_nd_layer.html @@ -36,7 +36,7 @@ <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 15rem; margin-top: .5rem; margin-left 13px"/> <td id="projectalign" style="padding-left: 0.9em;"> <div id="projectname"> -  <span id="projectnumber">24.02</span> +  <span id="projectnumber">24.05</span> </div> </td> </tr> @@ -454,7 +454,7 @@ Additional Inherited Members</h2></td></tr> <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">return</span> factory.CreateWorkload(<a class="code" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3028cc42e40f9a1f4f8b35556d9715a4">LayerType::GatherNd</a>, descriptor, <a class="code" href="classarmnn_1_1_layer.html#a30a858b2b26d651a066537e499fbf40d">PrepInfoAndDesc</a>(descriptor));</div> <div class="line"><a name="l00027"></a><span class="lineno"> 27</span> }</div> </div><!-- fragment --> -<p class="reference">References <a class="el" href="classarmnn_1_1_i_workload_factory.html#a694a8411c8c799da95306034d274930b">IWorkloadFactory::CreateWorkload()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3028cc42e40f9a1f4f8b35556d9715a4">armnn::GatherNd</a>, <a class="el" href="_layer_8hpp_source.html#l00409">Layer::PrepInfoAndDesc()</a>, and <a class="el" href="_layer_8cpp_source.html#l00287">Layer::SetAdditionalInfo()</a>.</p> +<p class="reference">References <a class="el" href="classarmnn_1_1_i_workload_factory.html#a694a8411c8c799da95306034d274930b">IWorkloadFactory::CreateWorkload()</a>, <a class="el" href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3028cc42e40f9a1f4f8b35556d9715a4">armnn::GatherNd</a>, <a class="el" href="_layer_8hpp_source.html#l00409">Layer::PrepInfoAndDesc()</a>, and <a class="el" href="_layer_8cpp_source.html#l00303">Layer::SetAdditionalInfo()</a>.</p> </div> </div> @@ -495,51 +495,62 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_gather_nd_layer_8cpp_source.html#l00034">34</a> of file <a class="el" href="_gather_nd_layer_8cpp_source.html">GatherNdLayer.cpp</a>.</p> <div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div> -<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(inputShapes.size() == 2);</div> -<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">const</span> TensorShape& params = inputShapes[0];</div> -<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TensorShape& indices = inputShapes[1];</div> -<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div> -<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span> (indices.GetDimensionality() == <a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">Dimensionality::Scalar</a> && indices.GetNumDimensions() == 1)</div> -<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div> -<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> std::vector<TensorShape>({ TensorShape(<a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">Dimensionality::Scalar</a>)});</div> -<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span> (inputShapes.size() != 2)</div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">"inputShapes' size is \""</span> + std::to_string(inputShapes.size()) +</div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="stringliteral">"\" - should be \"2\"."</span>);</div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> TensorShape& params = inputShapes[0];</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">const</span> TensorShape& indices = inputShapes[1];</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div> -<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paramsDim = params.GetNumDimensions();</div> -<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indicesDim = indices.GetNumDimensions();</div> -<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div> -<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// last dimension of indices</span></div> -<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index_depth = indices[indicesDim - 1];</div> -<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(index_depth <= paramsDim);</div> -<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div> -<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// all but the last dimension of indices</span></div> -<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<unsigned int> outer_shape;</div> -<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  outer_shape.reserve(indicesDim - 1);</div> -<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < indicesDim - 1; ++i)</div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (indices.GetDimensionality() == <a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">Dimensionality::Scalar</a> && indices.GetNumDimensions() == 1)</div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> std::vector<TensorShape>({ TensorShape(<a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">Dimensionality::Scalar</a>)});</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paramsDim = params.GetNumDimensions();</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indicesDim = indices.GetNumDimensions();</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// last dimension of indices</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index_depth = indices[indicesDim - 1];</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span> (index_depth > paramsDim)</div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div> -<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  outer_shape.emplace_back(indices[i]);</div> -<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div> -<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div> -<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// elements after index_depth</span></div> -<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  std::vector<unsigned int> inner_shape;</div> -<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  inner_shape.reserve(paramsDim - index_depth);</div> -<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = index_depth; i < paramsDim; ++i)</div> -<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div> -<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  inner_shape.emplace_back(params[i]);</div> -<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div> -<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div> -<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// concatenate outer_shape + inner_shape</span></div> -<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::vector<unsigned int> output_shape;</div> -<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  output_shape.reserve( outer_shape.size() + inner_shape.size() );</div> -<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  output_shape.insert( output_shape.end(), outer_shape.begin(), outer_shape.end() );</div> -<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  output_shape.insert( output_shape.end(), inner_shape.begin(), inner_shape.end() );</div> -<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div> -<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">const</span> <span class="keyword">auto</span> outputDim = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(output_shape.size());</div> -<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> std::vector<TensorShape>({ TensorShape({outputDim, output_shape.data()})});</div> -<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.html">armnn::Exception</a>(<span class="stringliteral">"index_depth must not be greater than paramsDim (\""</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  + std::to_string(index_depth) +</div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="stringliteral">"\" vs \""</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  + std::to_string(paramsDim) + <span class="stringliteral">"\")"</span>);</div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// all but the last dimension of indices</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::vector<unsigned int> outer_shape;</div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  outer_shape.reserve(indicesDim - 1);</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < indicesDim - 1; ++i)</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  outer_shape.emplace_back(indices[i]);</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// elements after index_depth</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  std::vector<unsigned int> inner_shape;</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  inner_shape.reserve(paramsDim - index_depth);</div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = index_depth; i < paramsDim; ++i)</div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  inner_shape.emplace_back(params[i]);</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// concatenate outer_shape + inner_shape</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<unsigned int> output_shape;</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  output_shape.reserve( outer_shape.size() + inner_shape.size() );</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  output_shape.insert( output_shape.end(), outer_shape.begin(), outer_shape.end() );</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  output_shape.insert( output_shape.end(), inner_shape.begin(), inner_shape.end() );</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> <span class="keyword">auto</span> outputDim = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(output_shape.size());</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> std::vector<TensorShape>({ TensorShape({outputDim, output_shape.data()})});</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div> </div><!-- fragment --> -<p class="reference">References <a class="el" href="_assert_8hpp_source.html#l00014">ARMNN_ASSERT</a>, <a class="el" href="_tensor_8hpp_source.html#l00092">TensorShape::GetDimensionality()</a>, <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>, and <a class="el" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">armnn::Scalar</a>.</p> +<p class="reference">References <a class="el" href="_tensor_8hpp_source.html#l00092">TensorShape::GetDimensionality()</a>, <a class="el" href="_tensor_8cpp_source.html#l00174">TensorShape::GetNumDimensions()</a>, and <a class="el" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">armnn::Scalar</a>.</p> -<p class="reference">Referenced by <a class="el" href="_gather_nd_layer_8cpp_source.html#l00078">GatherNdLayer::ValidateTensorShapesFromInputs()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_gather_nd_layer_8cpp_source.html#l00089">GatherNdLayer::ValidateTensorShapesFromInputs()</a>.</p> </div> </div> @@ -570,25 +581,35 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="classarmnn_1_1_layer.html#a84ff600212ba26e665de9b978ec896a4">Layer</a>.</p> -<p class="definition">Definition at line <a class="el" href="_gather_nd_layer_8cpp_source.html#l00078">78</a> of file <a class="el" href="_gather_nd_layer_8cpp_source.html">GatherNdLayer.cpp</a>.</p> -<div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div> -<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classarmnn_1_1_layer.html#a0607e36e88f38c34c71c663164b76776">VerifyLayerConnections</a>(2, <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div> -<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div> -<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> TensorShape& outputShape = <a class="code" href="classarmnn_1_1_layer.html#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">GetTensorInfo</a>().<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div> -<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div> -<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classarmnn_1_1_layer.html#a448afc716fda85394df1e8e5b7d530e8">VerifyShapeInferenceType</a>(outputShape, <a class="code" href="classarmnn_1_1_layer.html#afe508761cc8318b15329ba4acf7fbfec">m_ShapeInferenceMethod</a>);</div> -<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div> -<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<TensorShape> inferredShapes = <a class="code" href="classarmnn_1_1_gather_nd_layer.html#a65ca562c882ad619684445a1402f415a">InferOutputShapes</a>(</div> -<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {<a class="code" href="classarmnn_1_1_layer.html#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0).<a class="code" href="classarmnn_1_1_input_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">GetTensorInfo</a>().<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(),</div> -<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classarmnn_1_1_layer.html#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1).<a class="code" href="classarmnn_1_1_input_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">GetTensorInfo</a>().<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()});</div> -<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(inferredShapes.size() == 1);</div> -<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(inferredShapes[0].GetDimensionality() == <a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681ab4b379bf7ded74c07595ccb85bc6fdc3">Dimensionality::Specified</a> ||</div> -<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  inferredShapes[0].GetDimensionality() == <a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">Dimensionality::Scalar</a>);</div> +<p class="definition">Definition at line <a class="el" href="_gather_nd_layer_8cpp_source.html#l00089">89</a> of file <a class="el" href="_gather_nd_layer_8cpp_source.html">GatherNdLayer.cpp</a>.</p> +<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classarmnn_1_1_layer.html#a0607e36e88f38c34c71c663164b76776">VerifyLayerConnections</a>(2, <a class="code" href="_exceptions_8hpp.html#aa3be76aec4ce713822a5ea1ecbb7bc61">CHECK_LOCATION</a>());</div> <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div> -<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classarmnn_1_1_layer.html#aeb2d638cc0e02c10075e015100996f2d">ValidateAndCopyShape</a>(outputShape, inferredShapes[0], <a class="code" href="classarmnn_1_1_layer.html#afe508761cc8318b15329ba4acf7fbfec">m_ShapeInferenceMethod</a>, <span class="stringliteral">"GatherNdLayer"</span>);</div> -<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">const</span> TensorShape& outputShape = <a class="code" href="classarmnn_1_1_layer.html#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">GetTensorInfo</a>().<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classarmnn_1_1_layer.html#a448afc716fda85394df1e8e5b7d530e8">VerifyShapeInferenceType</a>(outputShape, <a class="code" href="classarmnn_1_1_layer.html#afe508761cc8318b15329ba4acf7fbfec">m_ShapeInferenceMethod</a>);</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  std::vector<TensorShape> inferredShapes = <a class="code" href="classarmnn_1_1_gather_nd_layer.html#a65ca562c882ad619684445a1402f415a">InferOutputShapes</a>(</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {<a class="code" href="classarmnn_1_1_layer.html#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0).<a class="code" href="classarmnn_1_1_input_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">GetTensorInfo</a>().<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(),</div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classarmnn_1_1_layer.html#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1).<a class="code" href="classarmnn_1_1_input_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">GetTensorInfo</a>().<a class="code" href="classarmnn_1_1_tensor_info.html#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()});</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (inferredShapes.size() != 1)</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_layer_validation_exception.html">armnn::LayerValidationException</a>(<span class="stringliteral">"inferredShapes has "</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  + std::to_string(inferredShapes.size()) +</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="stringliteral">" elements - should only have 1."</span>);</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (inferredShapes[0].GetDimensionality() != <a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681ab4b379bf7ded74c07595ccb85bc6fdc3">Dimensionality::Specified</a> &&</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  inferredShapes[0].GetDimensionality() != <a class="code" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">Dimensionality::Scalar</a>)</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_layer_validation_exception.html">armnn::LayerValidationException</a>(<span class="stringliteral">"inferredShapes' dimensionality is neither specified nor scalar."</span>);</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classarmnn_1_1_layer.html#aeb2d638cc0e02c10075e015100996f2d">ValidateAndCopyShape</a>(outputShape, inferredShapes[0], <a class="code" href="classarmnn_1_1_layer.html#afe508761cc8318b15329ba4acf7fbfec">m_ShapeInferenceMethod</a>, <span class="stringliteral">"GatherNdLayer"</span>);</div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div> </div><!-- fragment --> -<p class="reference">References <a class="el" href="_assert_8hpp_source.html#l00014">ARMNN_ASSERT</a>, <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="_layer_8hpp_source.html#l00337">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00339">Layer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_layer_8cpp_source.html#l00592">InputSlot::GetTensorInfo()</a>, <a class="el" href="_layer_8cpp_source.html#l00092">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_gather_nd_layer_8cpp_source.html#l00034">GatherNdLayer::InferOutputShapes()</a>, <a class="el" href="_layer_8hpp_source.html#l00441">Layer::m_ShapeInferenceMethod</a>, <a class="el" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">armnn::Scalar</a>, <a class="el" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681ab4b379bf7ded74c07595ccb85bc6fdc3">armnn::Specified</a>, <a class="el" href="_layer_8cpp_source.html#l00435">Layer::ValidateAndCopyShape()</a>, <a class="el" href="_layer_8cpp_source.html#l00391">Layer::VerifyLayerConnections()</a>, and <a class="el" href="_layer_8cpp_source.html#l00504">Layer::VerifyShapeInferenceType()</a>.</p> +<p class="reference">References <a class="el" href="_exceptions_8hpp_source.html#l00203">CHECK_LOCATION</a>, <a class="el" href="_layer_8hpp_source.html#l00337">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.html#l00339">Layer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_layer_8cpp_source.html#l00614">InputSlot::GetTensorInfo()</a>, <a class="el" href="_layer_8cpp_source.html#l00100">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_gather_nd_layer_8cpp_source.html#l00034">GatherNdLayer::InferOutputShapes()</a>, <a class="el" href="_layer_8hpp_source.html#l00441">Layer::m_ShapeInferenceMethod</a>, <a class="el" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">armnn::Scalar</a>, <a class="el" href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681ab4b379bf7ded74c07595ccb85bc6fdc3">armnn::Specified</a>, <a class="el" href="_layer_8cpp_source.html#l00457">Layer::ValidateAndCopyShape()</a>, <a class="el" href="_layer_8cpp_source.html#l00410">Layer::VerifyLayerConnections()</a>, and <a class="el" href="_layer_8cpp_source.html#l00526">Layer::VerifyShapeInferenceType()</a>.</p> </div> </div> @@ -598,30 +619,31 @@ Additional Inherited Members</h2></td></tr> </ul> </div><!-- contents --> </div><!-- doc-content --> -<div class="ttc" id="a_assert_8hpp_html_a5698be69cbd5dfe6c28fcd9867e8cbed"><div class="ttname"><a href="_assert_8hpp.html#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a></div><div class="ttdeci">#define ARMNN_ASSERT(COND)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.html#l00014">Assert.hpp:14</a></div></div> -<div class="ttc" id="aclassarmnn_1_1_output_slot_html_ada2ad7d1caeeb4ef6195c8925fad6a65"><div class="ttname"><a href="classarmnn_1_1_output_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">armnn::OutputSlot::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo & GetTensorInfo() const override</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00092">Layer.cpp:92</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_output_slot_html_ada2ad7d1caeeb4ef6195c8925fad6a65"><div class="ttname"><a href="classarmnn_1_1_output_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">armnn::OutputSlot::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo & GetTensorInfo() const override</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00100">Layer.cpp:100</a></div></div> <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> -<div class="ttc" id="aclassarmnn_1_1_layer_html_aeb2d638cc0e02c10075e015100996f2d"><div class="ttname"><a href="classarmnn_1_1_layer.html#aeb2d638cc0e02c10075e015100996f2d">armnn::Layer::ValidateAndCopyShape</a></div><div class="ttdeci">void ValidateAndCopyShape(const TensorShape &outputShape, const TensorShape &inferredShape, const ShapeInferenceMethod shapeInferenceMethod, const std::string &layerName, const unsigned int outputSlotIndex=0)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00435">Layer.cpp:435</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_layer_html_aeb2d638cc0e02c10075e015100996f2d"><div class="ttname"><a href="classarmnn_1_1_layer.html#aeb2d638cc0e02c10075e015100996f2d">armnn::Layer::ValidateAndCopyShape</a></div><div class="ttdeci">void ValidateAndCopyShape(const TensorShape &outputShape, const TensorShape &inferredShape, const ShapeInferenceMethod shapeInferenceMethod, const std::string &layerName, const unsigned int outputSlotIndex=0)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00457">Layer.cpp:457</a></div></div> <div class="ttc" id="aclassarmnn_1_1_layer_html_a0e36688a43c35668d8db5257274c68fe"><div class="ttname"><a href="classarmnn_1_1_layer.html#a0e36688a43c35668d8db5257274c68fe">armnn::Layer::GetOutputSlot</a></div><div class="ttdeci">const OutputSlot & GetOutputSlot(unsigned int index=0) const override</div><div class="ttdoc">Get the const output slot handle by slot index.</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.html#l00339">Layer.hpp:339</a></div></div> <div class="ttc" id="aclassarmnn_1_1_layer_html_acf8b8e23bf647836592982f97088d375"><div class="ttname"><a href="classarmnn_1_1_layer.html#acf8b8e23bf647836592982f97088d375">armnn::Layer::GetInputSlot</a></div><div class="ttdeci">const InputSlot & GetInputSlot(unsigned int index) const override</div><div class="ttdoc">Get a const input slot handle by slot index.</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.html#l00337">Layer.hpp:337</a></div></div> <div class="ttc" id="anamespacearmnn_html_a56943a0946e5f15e5e58054b8e7a04a4a3028cc42e40f9a1f4f8b35556d9715a4"><div class="ttname"><a href="namespacearmnn.html#a56943a0946e5f15e5e58054b8e7a04a4a3028cc42e40f9a1f4f8b35556d9715a4">armnn::LayerType::GatherNd</a></div><div class="ttdeci">@ GatherNd</div></div> -<div class="ttc" id="aclassarmnn_1_1_layer_html_a5e5ae420d199a0bccae5139d38c30205"><div class="ttname"><a href="classarmnn_1_1_layer.html#a5e5ae420d199a0bccae5139d38c30205">armnn::Layer::Layer</a></div><div class="ttdeci">Layer(unsigned int numInputSlots, unsigned int numOutputSlots, LayerType type, const char *name)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00247">Layer.cpp:247</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_layer_html_a5e5ae420d199a0bccae5139d38c30205"><div class="ttname"><a href="classarmnn_1_1_layer.html#a5e5ae420d199a0bccae5139d38c30205">armnn::Layer::Layer</a></div><div class="ttdeci">Layer(unsigned int numInputSlots, unsigned int numOutputSlots, LayerType type, const char *name)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00260">Layer.cpp:260</a></div></div> <div class="ttc" id="aclassarmnn_1_1_layer_html_a7ddf0cf6f620d59c10e63495ace795d0"><div class="ttname"><a href="classarmnn_1_1_layer.html#a7ddf0cf6f620d59c10e63495ace795d0">armnn::Layer::GetName</a></div><div class="ttdeci">const char * GetName() const override</div><div class="ttdoc">Returns the name of the layer.</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.html#l00332">Layer.hpp:332</a></div></div> -<div class="ttc" id="aclassarmnn_1_1_input_slot_html_ada2ad7d1caeeb4ef6195c8925fad6a65"><div class="ttname"><a href="classarmnn_1_1_input_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">armnn::InputSlot::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo & GetTensorInfo() const override</div><div class="ttdoc">Gets the TensorInfo for this InputSlot.</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00592">Layer.cpp:592</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_input_slot_html_ada2ad7d1caeeb4ef6195c8925fad6a65"><div class="ttname"><a href="classarmnn_1_1_input_slot.html#ada2ad7d1caeeb4ef6195c8925fad6a65">armnn::InputSlot::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo & GetTensorInfo() const override</div><div class="ttdoc">Gets the TensorInfo for this InputSlot.</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00614">Layer.cpp:614</a></div></div> <div class="ttc" id="aclassarmnn_1_1_layer_html_a30a858b2b26d651a066537e499fbf40d"><div class="ttname"><a href="classarmnn_1_1_layer.html#a30a858b2b26d651a066537e499fbf40d">armnn::Layer::PrepInfoAndDesc</a></div><div class="ttdeci">WorkloadInfo PrepInfoAndDesc(QueueDescriptor &descriptor) const</div><div class="ttdoc">Helper function to reduce duplication in *Layer::CreateWorkload.</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.html#l00409">Layer.hpp:409</a></div></div> <div class="ttc" id="anamespacearmnn_html_a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74"><div class="ttname"><a href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681af60357a8d17e45793298323f1b372a74">armnn::Dimensionality::Scalar</a></div><div class="ttdeci">@ Scalar</div></div> -<div class="ttc" id="aclassarmnn_1_1_layer_html_a448afc716fda85394df1e8e5b7d530e8"><div class="ttname"><a href="classarmnn_1_1_layer.html#a448afc716fda85394df1e8e5b7d530e8">armnn::Layer::VerifyShapeInferenceType</a></div><div class="ttdeci">void VerifyShapeInferenceType(const TensorShape &outputShape, ShapeInferenceMethod shapeInferenceMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00504">Layer.cpp:504</a></div></div> -<div class="ttc" id="aclassarmnn_1_1_layer_html_af7f0460d32511de0da525f1817d13e8c"><div class="ttname"><a href="classarmnn_1_1_layer.html#af7f0460d32511de0da525f1817d13e8c">armnn::Layer::SetAdditionalInfo</a></div><div class="ttdeci">void SetAdditionalInfo(QueueDescriptor &descriptor) const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00287">Layer.cpp:287</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_layer_validation_exception_html"><div class="ttname"><a href="classarmnn_1_1_layer_validation_exception.html">armnn::LayerValidationException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.html#l00105">Exceptions.hpp:105</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_layer_html_a448afc716fda85394df1e8e5b7d530e8"><div class="ttname"><a href="classarmnn_1_1_layer.html#a448afc716fda85394df1e8e5b7d530e8">armnn::Layer::VerifyShapeInferenceType</a></div><div class="ttdeci">void VerifyShapeInferenceType(const TensorShape &outputShape, ShapeInferenceMethod shapeInferenceMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00526">Layer.cpp:526</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_layer_html_af7f0460d32511de0da525f1817d13e8c"><div class="ttname"><a href="classarmnn_1_1_layer.html#af7f0460d32511de0da525f1817d13e8c">armnn::Layer::SetAdditionalInfo</a></div><div class="ttdeci">void SetAdditionalInfo(QueueDescriptor &descriptor) const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00303">Layer.cpp:303</a></div></div> +<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> <div class="ttc" id="aclassarmnn_1_1_gather_nd_layer_html_a65ca562c882ad619684445a1402f415a"><div class="ttname"><a href="classarmnn_1_1_gather_nd_layer.html#a65ca562c882ad619684445a1402f415a">armnn::GatherNdLayer::InferOutputShapes</a></div><div class="ttdeci">std::vector< TensorShape > InferOutputShapes(const std::vector< TensorShape > &inputShapes) const override</div><div class="ttdoc">Infers the output shapes from given input shapes and layer properties.</div><div class="ttdef"><b>Definition:</b> <a href="_gather_nd_layer_8cpp_source.html#l00034">GatherNdLayer.cpp:34</a></div></div> <div class="ttc" id="anamespacearmnn_html_a8e1f31031ad31cd8cc22d7c9daa32681ab4b379bf7ded74c07595ccb85bc6fdc3"><div class="ttname"><a href="namespacearmnn.html#a8e1f31031ad31cd8cc22d7c9daa32681ab4b379bf7ded74c07595ccb85bc6fdc3">armnn::Dimensionality::Specified</a></div><div class="ttdeci">@ Specified</div></div> <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 & GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.html#l00193">Tensor.hpp:193</a></div></div> -<div class="ttc" id="aclassarmnn_1_1_layer_html_a0607e36e88f38c34c71c663164b76776"><div class="ttname"><a href="classarmnn_1_1_layer.html#a0607e36e88f38c34c71c663164b76776">armnn::Layer::VerifyLayerConnections</a></div><div class="ttdeci">void VerifyLayerConnections(unsigned int expectedConnections, const CheckLocation &location) const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00391">Layer.cpp:391</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_layer_html_a0607e36e88f38c34c71c663164b76776"><div class="ttname"><a href="classarmnn_1_1_layer.html#a0607e36e88f38c34c71c663164b76776">armnn::Layer::VerifyLayerConnections</a></div><div class="ttdeci">void VerifyLayerConnections(unsigned int expectedConnections, const CheckLocation &location) const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.html#l00410">Layer.cpp:410</a></div></div> <div class="ttc" id="aclassarmnn_1_1_layer_html_afe508761cc8318b15329ba4acf7fbfec"><div class="ttname"><a href="classarmnn_1_1_layer.html#afe508761cc8318b15329ba4acf7fbfec">armnn::Layer::m_ShapeInferenceMethod</a></div><div class="ttdeci">ShapeInferenceMethod m_ShapeInferenceMethod</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.html#l00441">Layer.hpp:441</a></div></div> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_gather_nd_layer.html">GatherNdLayer</a></li> - <li class="footer">Generated on Wed Feb 14 2024 16:36:22 for Arm NN by + <li class="footer">Generated on Thu May 16 2024 09:31:56 for Arm NN by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li> </ul> |