aboutsummaryrefslogtreecommitdiff
path: root/23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml
diff options
context:
space:
mode:
authorDavid Monahan <david.monahan@arm.com>2023-03-22 16:48:58 +0000
committerDavid Monahan <david.monahan@arm.com>2023-03-22 16:48:58 +0000
commitae050524109f1ce827962665436ef7430f2ac479 (patch)
treea087fe0c77570971dd7979f2757426c24e91afc7 /23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml
parent8d2ca734165a068478df7cffa46185680b05cd20 (diff)
downloadarmnn-ae050524109f1ce827962665436ef7430f2ac479.tar.gz
IVGCVSW-7255 Update Doxygen Documentation and publish on GitHub.
* Updating Doxygen documentation for 23.02 release. Signed-off-by: David Monahan <david.monahan@arm.com> Change-Id: I545574ff7664b4595d2fe6a91a3c35d2ad55df82
Diffstat (limited to '23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml')
-rw-r--r--23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml183
1 files changed, 144 insertions, 39 deletions
diff --git a/23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml b/23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml
index bffd9461cd..2e41d834cb 100644
--- a/23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml
+++ b/23.02/structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml
@@ -8,7 +8,7 @@
<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="generator" content="Doxygen 1.8.17"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: DepthwiseConvolution2dQueueDescriptor Struct Reference</title>
@@ -19,9 +19,6 @@
<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>
@@ -30,7 +27,8 @@
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
-</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+</script>
+<script type="text/javascript" async="async" 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>
@@ -51,18 +49,21 @@
</table>
</div>
<!-- end header part -->
-<!-- Generated by Doxygen 1.8.13 -->
+<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
-</script>
+/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -76,7 +77,9 @@ $(function() {
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml','');});
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml',''); initResizable(); });
+/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -114,8 +117,8 @@ Inheritance diagram for DepthwiseConvolution2dQueueDescriptor:</div>
<map id="DepthwiseConvolution2dQueueDescriptor_map" name="DepthwiseConvolution2dQueueDescriptor_map">
<area href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml" alt="QueueDescriptorWithParameters&lt; DepthwiseConvolution2dDescriptor &gt;" shape="rect" coords="0,56,419,80"/>
<area href="structarmnn_1_1_queue_descriptor.xhtml" alt="QueueDescriptor" shape="rect" coords="0,0,419,24"/>
-</map>
- </div></div>
+ </map>
+</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
@@ -168,7 +171,7 @@ Additional Inherited Members</h2></td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Depthwise Convolution 2D layer workload data. </p>
-<dl class="section note"><dt>Note</dt><dd>The weights are in the format [1, H, W, I*M]. Where I is the input channel size, M the depthwise mutliplier and H, W is the height and width of the filter kernel. If per channel quantization is applied the weights will be quantized along the last dimension/axis (I*M) which corresponds to the output channel size. If per channel quantization is applied the weights tensor will have I*M scales, one for each dimension of the quantization axis. You have to be aware of this when reshaping the weights tensor. Splitting the I*M axis, e.g. [1, H, W, I*M] &ndash;&gt; [H, W, I, M], won't work without taking care of the corresponding quantization scales. If there is no per channel quantization applied reshaping the weights tensor won't cause any issues. There are preconfigured permutation functions available <a class="el" href="_workload_utils_8hpp.xhtml">here. </a></dd></dl>
+<dl class="section note"><dt>Note</dt><dd>The weights are in the format [1, H, W, I*M]. Where I is the input channel size, M the depthwise mutliplier and H, W is the height and width of the filter kernel. If per channel quantization is applied the weights will be quantized along the last dimension/axis (I*M) which corresponds to the output channel size. If per channel quantization is applied the weights tensor will have I*M scales, one for each dimension of the quantization axis. You have to be aware of this when reshaping the weights tensor. Splitting the I*M axis, e.g. [1, H, W, I*M] --&gt; [H, W, I, M], won't work without taking care of the corresponding quantization scales. If there is no per channel quantization applied reshaping the weights tensor won't cause any issues. There are preconfigured permutation functions available <a class="el" href="_workload_utils_8hpp.xhtml">here. </a></dd></dl>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00229">229</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
@@ -189,33 +192,111 @@ Additional Inherited Members</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.xhtml#l01412">1412</a> of file <a class="el" href="_workload_data_8cpp_source.xhtml">WorkloadData.cpp</a>.</p>
-
-<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l00028">armnn::GetBiasDataType()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00198">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00191">TensorInfo::GetShape()</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l00426">QueueDescriptor::ValidateTensorNumDimensions()</a>, and <a class="el" href="_optional_8hpp_source.xhtml#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
-<div class="fragment"><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;{</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">&quot;DepthwiseConvolution2dQueueDescriptor&quot;</span>};</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; uint32_t numInputs = 2;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a>)</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; {</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; numInputs = 3;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; }</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; ValidateNumInputs(workloadInfo, descriptorName, numInputs);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; ValidateNumOutputs(workloadInfo, descriptorName, 1);</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; inputTensorInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; outputTensorInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">ValidateTensorNumDimensions</a>(inputTensorInfo, descriptorName, 4, <span class="stringliteral">&quot;input&quot;</span>);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">ValidateTensorNumDimensions</a>(outputTensorInfo, descriptorName, 4, <span class="stringliteral">&quot;output&quot;</span>);</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; weightTensorInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">ValidateTensorNumDimensions</a>(weightTensorInfo, descriptorName, 4, <span class="stringliteral">&quot;weight&quot;</span>);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a> &lt; 1 || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a> &lt; 1 )</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; {</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; fmt::format(<span class="stringliteral">&quot;{}: dilationX (provided {}) and dilationY (provided {}) &quot;</span></div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="stringliteral">&quot;cannot be smaller than 1.&quot;</span>,</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; descriptorName, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a>, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a>));</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; }</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> &lt;= 0 || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> &lt;= 0 )</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; {</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; fmt::format(<span class="stringliteral">&quot;{}: strideX (provided {}) and strideY (provided {}) &quot;</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="stringliteral">&quot;cannot be either negative or 0.&quot;</span>,</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; descriptorName, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">m_StrideX</a>, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a>));</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; }</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0] != 1)</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; {</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(fmt::format(</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="stringliteral">&quot;{0}: The weight format in armnn is expected to be [1, H, W, Cout].&quot;</span></div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="stringliteral">&quot;But first dimension is not equal to 1. Provided weight shape: [{1}, {2}, {3}, {4}]&quot;</span>,</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; descriptorName,</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0],</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1],</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[2],</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3]));</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; }</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelIndex = (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> == <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">DataLayout::NCHW</a>) ? 1 : 3;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numWeightOutputChannelsRefFormat = weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3];</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numWeightOutputChannelsAclFormat = weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1];</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputChannels = outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[channelIndex];</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; <span class="comment">// Weights format has two valid options: [1, H, W, Cout] (CpuRef) or [1, Cout, H, W] (CpuAcc/GpuAcc).</span></div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordtype">bool</span> validRefFormat = (numWeightOutputChannelsRefFormat == numOutputChannels);</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordtype">bool</span> validAclFormat = (numWeightOutputChannelsAclFormat == numOutputChannels);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">if</span> (!(validRefFormat || validAclFormat))</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; {</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(fmt::format(</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="stringliteral">&quot;{0}: The weight format in armnn is expected to be [1, H, W, Cout] (CpuRef) or [1, Cout, H, W] &quot;</span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="stringliteral">&quot;(CpuAcc/GpuAcc). But neither the 4th (CpuRef) or 2nd (CpuAcc/GpuAcc) dimension is equal to Cout.&quot;</span></div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="stringliteral">&quot;Cout = {1} Provided weight shape: [{2}, {3}, {4}, {5}]&quot;</span>,</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; descriptorName,</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; numOutputChannels,</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0],</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1],</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[2],</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3]));</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; }</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; ValidateWeightDataType(inputTensorInfo, weightTensorInfo, descriptorName);</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;TensorInfo&gt;</a> optionalBiasTensorInfo;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a>)</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; {</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; optionalBiasTensorInfo = MakeOptional&lt;TensorInfo&gt;(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2]);</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; biasTensorInfo = optionalBiasTensorInfo.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>();</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; ValidateBiasTensorQuantization(biasTensorInfo, inputTensorInfo, weightTensorInfo, descriptorName);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; ValidateTensorDataType(biasTensorInfo, <a class="code" href="namespacearmnn.xhtml#a872803f5667392efc3c8e5607bd453ad">GetBiasDataType</a>(inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>()), descriptorName, <span class="stringliteral">&quot;bias&quot;</span>);</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; }</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; ValidatePerAxisQuantization(inputTensorInfo,</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; outputTensorInfo,</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; weightTensorInfo,</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; optionalBiasTensorInfo,</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; descriptorName);</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; std::vector&lt;DataType&gt; supportedTypes =</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; {</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>,</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>,</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>,</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a>,</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>,</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; };</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; ValidateDataTypes(inputTensorInfo, supportedTypes, descriptorName);</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; ValidateTensorDataTypesMatch(inputTensorInfo, outputTensorInfo, descriptorName, <span class="stringliteral">&quot;input&quot;</span>, <span class="stringliteral">&quot;output&quot;</span>);</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00676">Descriptors.hpp:676</a></div></div>
-<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00191">Tensor.hpp:191</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="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00678">Descriptors.hpp:678</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="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
-<div class="ttc" id="classarmnn_1_1_optional_reference_switch_xhtml_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00146">Optional.hpp:146</a></div></div>
-<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters&lt; DepthwiseConvolution2dDescriptor &gt;::m_Parameters</a></div><div class="ttdeci">DepthwiseConvolution2dDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00066">WorkloadData.hpp:66</a></div></div>
-<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a302b688d88dd73cde0fb1faef6679907">armnn::DepthwiseConvolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation factor value for height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00674">Descriptors.hpp:674</a></div></div>
-<div class="ttc" id="structarmnn_1_1_workload_info_xhtml_ac97905bfa0daab357b91df1347600309"><div class="ttname"><a href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">armnn::WorkloadInfo::m_InputTensorInfos</a></div><div class="ttdeci">std::vector&lt; TensorInfo &gt; m_InputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo.hpp:18</a></div></div>
-<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00668">Descriptors.hpp:668</a></div></div>
-<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::DepthwiseConvolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation factor value for width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00672">Descriptors.hpp:672</a></div></div>
-<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_aea909c7327109228ef618d459015def3"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">armnn::TensorInfo::GetDataType</a></div><div class="ttdeci">DataType GetDataType() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00198">Tensor.hpp:198</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
-<div class="ttc" id="structarmnn_1_1_workload_info_xhtml_a67b178f8a836bc1e52b8de109760adfd"><div class="ttname"><a href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">armnn::WorkloadInfo::m_OutputTensorInfos</a></div><div class="ttdeci">std::vector&lt; TensorInfo &gt; m_OutputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo.hpp:19</a></div></div>
-<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_a872803f5667392efc3c8e5607bd453ad"><div class="ttname"><a href="namespacearmnn.xhtml#a872803f5667392efc3c8e5607bd453ad">armnn::GetBiasDataType</a></div><div class="ttdeci">DataType GetBiasDataType(DataType inputDataType)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00028">WorkloadData.cpp:28</a></div></div>
-<div class="ttc" id="structarmnn_1_1_queue_descriptor_xhtml_a089f647d882d65f657d7984e5f505f7c"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">armnn::QueueDescriptor::ValidateTensorNumDimensions</a></div><div class="ttdeci">void ValidateTensorNumDimensions(const TensorInfo &amp;tensor, std::string const &amp;descName, unsigned int numDimensions, std::string const &amp;tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00426">WorkloadData.cpp:426</a></div></div>
-<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00670">Descriptors.hpp:670</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
+<div class="fragment"><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;{</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">&quot;DepthwiseConvolution2dQueueDescriptor&quot;</span>};</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; </div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; uint32_t numInputs = 2;</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a>)</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; {</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; numInputs = 3;</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; }</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; </div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; ValidateNumInputs(workloadInfo, descriptorName, numInputs);</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; ValidateNumOutputs(workloadInfo, descriptorName, 1);</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; </div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; inputTensorInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; outputTensorInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; </div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">ValidateTensorNumDimensions</a>(inputTensorInfo, descriptorName, 4, <span class="stringliteral">&quot;input&quot;</span>);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">ValidateTensorNumDimensions</a>(outputTensorInfo, descriptorName, 4, <span class="stringliteral">&quot;output&quot;</span>);</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; </div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; weightTensorInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">ValidateTensorNumDimensions</a>(weightTensorInfo, descriptorName, 4, <span class="stringliteral">&quot;weight&quot;</span>);</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; </div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a> &lt; 1 || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a> &lt; 1 )</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; {</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; fmt::format(<span class="stringliteral">&quot;{}: dilationX (provided {}) and dilationY (provided {}) &quot;</span></div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="stringliteral">&quot;cannot be smaller than 1.&quot;</span>,</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; descriptorName, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a>, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a>));</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; }</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; </div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">m_StrideX</a> &lt;= 0 || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a> &lt;= 0 )</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; {</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; fmt::format(<span class="stringliteral">&quot;{}: strideX (provided {}) and strideY (provided {}) &quot;</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="stringliteral">&quot;cannot be either negative or 0.&quot;</span>,</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; descriptorName, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">m_StrideX</a>, <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a>));</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; }</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; </div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0] != 1)</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; {</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(fmt::format(</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="stringliteral">&quot;{0}: The weight format in armnn is expected to be [1, H, W, Cout].&quot;</span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="stringliteral">&quot;But first dimension is not equal to 1. Provided weight shape: [{1}, {2}, {3}, {4}]&quot;</span>,</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; descriptorName,</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0],</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1],</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[2],</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3]));</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; }</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; </div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelIndex = (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> == <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">DataLayout::NCHW</a>) ? 1 : 3;</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numWeightOutputChannelsRefFormat = weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3];</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numWeightOutputChannelsAclFormat = weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1];</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputChannels = outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[channelIndex];</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; </div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; <span class="comment">// Weights format has two valid options: [1, H, W, Cout] (CpuRef) or [1, Cout, H, W] (CpuAcc/GpuAcc).</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordtype">bool</span> validRefFormat = (numWeightOutputChannelsRefFormat == numOutputChannels);</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordtype">bool</span> validAclFormat = (numWeightOutputChannelsAclFormat == numOutputChannels);</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; </div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">if</span> (!(validRefFormat || validAclFormat))</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; {</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(fmt::format(</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="stringliteral">&quot;{0}: The weight format in armnn is expected to be [1, H, W, Cout] (CpuRef) or [1, Cout, H, W] &quot;</span></div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="stringliteral">&quot;(CpuAcc/GpuAcc). But neither the 4th (CpuRef) or 2nd (CpuAcc/GpuAcc) dimension is equal to Cout.&quot;</span></div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="stringliteral">&quot;Cout = {1} Provided weight shape: [{2}, {3}, {4}, {5}]&quot;</span>,</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; descriptorName,</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; numOutputChannels,</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0],</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1],</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[2],</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; weightTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3]));</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; }</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; </div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; ValidateWeightDataType(inputTensorInfo, weightTensorInfo, descriptorName);</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; </div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <a class="code" href="classarmnn_1_1_optional.xhtml">Optional&lt;TensorInfo&gt;</a> optionalBiasTensorInfo;</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a>)</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; {</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; optionalBiasTensorInfo = MakeOptional&lt;TensorInfo&gt;(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2]);</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; biasTensorInfo = optionalBiasTensorInfo.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>();</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; </div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; ValidateBiasTensorQuantization(biasTensorInfo, inputTensorInfo, weightTensorInfo, descriptorName);</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; ValidateTensorDataType(biasTensorInfo, <a class="code" href="namespacearmnn.xhtml#a872803f5667392efc3c8e5607bd453ad">GetBiasDataType</a>(inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>()), descriptorName, <span class="stringliteral">&quot;bias&quot;</span>);</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; }</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; ValidatePerAxisQuantization(inputTensorInfo,</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; outputTensorInfo,</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; weightTensorInfo,</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; optionalBiasTensorInfo,</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; descriptorName);</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; </div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; std::vector&lt;DataType&gt; supportedTypes =</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; {</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>,</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>,</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>,</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a>,</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>,</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; };</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; </div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; ValidateDataTypes(inputTensorInfo, supportedTypes, descriptorName);</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; ValidateTensorDataTypesMatch(inputTensorInfo, outputTensorInfo, descriptorName, <span class="stringliteral">&quot;input&quot;</span>, <span class="stringliteral">&quot;output&quot;</span>);</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;}</div>
</div><!-- fragment -->
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l00028">armnn::GetBiasDataType()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00198">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00191">TensorInfo::GetShape()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00676">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00678">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00672">DepthwiseConvolution2dDescriptor::m_DilationX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00674">DepthwiseConvolution2dDescriptor::m_DilationY</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00066">QueueDescriptorWithParameters&lt; DepthwiseConvolution2dDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00668">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00670">DepthwiseConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::NCHW</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l00426">QueueDescriptor::ValidateTensorNumDimensions()</a>, and <a class="el" href="_optional_8hpp_source.xhtml#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
+
</div>
</div>
<hr/>The documentation for this struct was generated from the following files:<ul>
@@ -224,13 +305,37 @@ Additional Inherited Members</h2></td></tr>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
+<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div><div class="ttdeci">@ QAsymmU8</div></div>
+<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div><div class="ttdeci">@ Float16</div></div>
+<div class="ttc" id="astructarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00676">Descriptors.hpp:676</a></div></div>
+<div class="ttc" id="anamespacearmnn_xhtml_a872803f5667392efc3c8e5607bd453ad"><div class="ttname"><a href="namespacearmnn.xhtml#a872803f5667392efc3c8e5607bd453ad">armnn::GetBiasDataType</a></div><div class="ttdeci">DataType GetBiasDataType(DataType inputDataType)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00028">WorkloadData.cpp:28</a></div></div>
+<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div><div class="ttdeci">@ QAsymmS8</div></div>
+<div class="ttc" id="astructarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">armnn::DepthwiseConvolution2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00668">Descriptors.hpp:668</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::DepthwiseConvolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation factor value for width dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00672">Descriptors.hpp:672</a></div></div>
+<div class="ttc" id="aclassarmnn_1_1_optional_reference_switch_xhtml_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00146">Optional.hpp:146</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a302b688d88dd73cde0fb1faef6679907">armnn::DepthwiseConvolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation factor value for height dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00674">Descriptors.hpp:674</a></div></div>
+<div class="ttc" id="anamespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div><div class="ttdeci">@ NCHW</div></div>
+<div class="ttc" id="astructarmnn_1_1_workload_info_xhtml_a67b178f8a836bc1e52b8de109760adfd"><div class="ttname"><a href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">armnn::WorkloadInfo::m_OutputTensorInfos</a></div><div class="ttdeci">std::vector&lt; TensorInfo &gt; m_OutputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo.hpp:19</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC).</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00678">Descriptors.hpp:678</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_queue_descriptor_xhtml_a089f647d882d65f657d7984e5f505f7c"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a089f647d882d65f657d7984e5f505f7c">armnn::QueueDescriptor::ValidateTensorNumDimensions</a></div><div class="ttdeci">void ValidateTensorNumDimensions(const TensorInfo &amp;tensor, std::string const &amp;descName, unsigned int numDimensions, std::string const &amp;tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00426">WorkloadData.cpp:426</a></div></div>
+<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div><div class="ttdeci">@ Float32</div></div>
+<div class="ttc" id="aclassarmnn_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="aclassarmnn_1_1_tensor_info_xhtml_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00191">Tensor.hpp:191</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters&lt; DepthwiseConvolution2dDescriptor &gt;::m_Parameters</a></div><div class="ttdeci">DepthwiseConvolution2dDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00066">WorkloadData.hpp:66</a></div></div>
+<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div><div class="ttdeci">@ BFloat16</div></div>
+<div class="ttc" id="aclassarmnn_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="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div><div class="ttdeci">@ QSymmS16</div></div>
+<div class="ttc" id="astructarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">armnn::DepthwiseConvolution2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00670">Descriptors.hpp:670</a></div></div>
+<div class="ttc" id="aclassarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
+<div class="ttc" id="aclassarmnn_1_1_tensor_info_xhtml_aea909c7327109228ef618d459015def3"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">armnn::TensorInfo::GetDataType</a></div><div class="ttdeci">DataType GetDataType() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00198">Tensor.hpp:198</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_workload_info_xhtml_ac97905bfa0daab357b91df1347600309"><div class="ttname"><a href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">armnn::WorkloadInfo::m_InputTensorInfos</a></div><div class="ttdeci">std::vector&lt; TensorInfo &gt; m_InputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo.hpp:18</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.xhtml">armnn</a></li><li class="navelem"><a class="el" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml">DepthwiseConvolution2dQueueDescriptor</a></li>
- <li class="footer">Generated on Fri Feb 24 2023 10:24:30 for ArmNN by
+ <li class="footer">Generated on Wed Mar 22 2023 15:53: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>
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>
</div>
</body>