diff options
author | David Monahan <david.monahan@arm.com> | 2023-03-22 16:48:58 +0000 |
---|---|---|
committer | David Monahan <david.monahan@arm.com> | 2023-03-22 16:48:58 +0000 |
commit | ae050524109f1ce827962665436ef7430f2ac479 (patch) | |
tree | a087fe0c77570971dd7979f2757426c24e91afc7 /23.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml | |
parent | 8d2ca734165a068478df7cffa46185680b05cd20 (diff) | |
download | armnn-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_q_lstm_queue_descriptor.xhtml')
-rw-r--r-- | 23.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml | 475 |
1 files changed, 382 insertions, 93 deletions
diff --git a/23.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml b/23.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml index 803726e3d3..96adcbd885 100644 --- a/23.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml +++ b/23.02/structarmnn_1_1_q_lstm_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: QLstmQueueDescriptor 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&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&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_q_lstm_queue_descriptor.xhtml','');}); +/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ +$(document).ready(function(){initNavTree('structarmnn_1_1_q_lstm_queue_descriptor.xhtml',''); initResizable(); }); +/* @license-end */ </script> <div id="doc-content"> <!-- window showing the filter options --> @@ -112,8 +115,8 @@ Inheritance diagram for QLstmQueueDescriptor:</div> <map id="QLstmQueueDescriptor_map" name="QLstmQueueDescriptor_map"> <area href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml" alt="QueueDescriptorWithParameters< QLstmDescriptor >" shape="rect" coords="0,56,315,80"/> <area href="structarmnn_1_1_queue_descriptor.xhtml" alt="QueueDescriptor" shape="rect" coords="0,0,315,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> @@ -239,27 +242,29 @@ Additional Inherited Members</h2></td></tr> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00559">559</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<div class="fragment"><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  : <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div><div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::QLstmQueueDescriptor::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00603">WorkloadData.hpp:603</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a3ead2ef8da00b2709d561d85996fc513"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">armnn::QLstmQueueDescriptor::m_ProjectionWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_ProjectionWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00599">WorkloadData.hpp:599</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a29fa293fffbf9c6f00cd75db1dc0a52a"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">armnn::QLstmQueueDescriptor::m_ForgetGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_ForgetGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00596">WorkloadData.hpp:596</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a17ba1c8bcc71a55a95b2a3913f8cb203"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">armnn::QLstmQueueDescriptor::m_InputToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00587">WorkloadData.hpp:587</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_ab160eba2493d5fe52185c0986dcb190c"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">armnn::QLstmQueueDescriptor::m_InputToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00584">WorkloadData.hpp:584</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aa09f7bdb9fd0d06b6386e412a4e72dd6"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">armnn::QLstmQueueDescriptor::m_CellToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00594">WorkloadData.hpp:594</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">armnn::QLstmQueueDescriptor::m_CellToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00592">WorkloadData.hpp:592</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_ad9442e26aa79f896da5f404ab825a9c8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">armnn::QLstmQueueDescriptor::m_ForgetLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_ForgetLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00602">WorkloadData.hpp:602</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aab77f54a037658ca9b2bf9cc8a1fadf1"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">armnn::QLstmQueueDescriptor::m_InputToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00585">WorkloadData.hpp:585</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">armnn::QLstmQueueDescriptor::m_CellBias</a></div><div class="ttdeci">const ConstTensorHandle * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00597">WorkloadData.hpp:597</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a1dbad32cad5c0437e1272f59fedf52ea"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">armnn::QLstmQueueDescriptor::m_InputLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00601">WorkloadData.hpp:601</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">armnn::QLstmQueueDescriptor::m_InputToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00586">WorkloadData.hpp:586</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a20c10fcb26657477377d07b7b1e13120"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">armnn::QLstmQueueDescriptor::m_CellToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00593">WorkloadData.hpp:593</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_ac668b31de6fb0f19d4c793d5ed3c3316"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">armnn::QLstmQueueDescriptor::m_ProjectionBias</a></div><div class="ttdeci">const ConstTensorHandle * m_ProjectionBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00600">WorkloadData.hpp:600</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_ac18c8b8b2039267d8282e91b4162d8aa"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">armnn::QLstmQueueDescriptor::m_RecurrentToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00590">WorkloadData.hpp:590</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a44eb7524badcca9b2073359e3814c98b"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">armnn::QLstmQueueDescriptor::m_InputGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_InputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00595">WorkloadData.hpp:595</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a5ff4158b1b363b898d0da04c42d37ce0"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">armnn::QLstmQueueDescriptor::m_OutputGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_OutputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00598">WorkloadData.hpp:598</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a0e0f66bd03c88f3d2dc666f581d3cf12"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">armnn::QLstmQueueDescriptor::m_OutputLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_OutputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00604">WorkloadData.hpp:604</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a4c27716f61bb68e8ea0bd4e8389ba01a"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">armnn::QLstmQueueDescriptor::m_RecurrentToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00591">WorkloadData.hpp:591</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a299587d4f3fca029492700f3e2585bd8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">armnn::QLstmQueueDescriptor::m_RecurrentToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00588">WorkloadData.hpp:588</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_adf8571dd1867ee91082bd005f94f2610"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">armnn::QLstmQueueDescriptor::m_RecurrentToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00589">WorkloadData.hpp:589</a></div></div> +<div class="fragment"><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  : <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div> +<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  {</div> +<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div> </div><!-- fragment --> </div> </div> @@ -281,46 +286,293 @@ 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#l03055">3055</a> of file <a class="el" href="_workload_data_8cpp_source.xhtml">WorkloadData.cpp</a>.</p> - -<p class="reference">References <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#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l00464">QueueDescriptor::ValidateTensorNumDimNumElem()</a>.</p> -<div class="fragment"><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span> {</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">"QLstmQueueDescriptor"</span>};</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span> </div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>  <span class="comment">// Validate number of inputs/outputs</span></div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>  ValidateNumInputs(workloadInfo, descriptorName, 3);</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>  ValidateNumOutputs(workloadInfo, descriptorName, 3);</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span> </div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>  <span class="comment">// Input/output tensor info</span></div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>  <span class="keyword">auto</span> inputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>  <span class="keyword">auto</span> outputStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>  <span class="keyword">auto</span> cellStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2];</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span> </div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>  <span class="keyword">auto</span> outputStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>  <span class="keyword">auto</span> cellStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[1];</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>  <span class="keyword">auto</span> outputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2];</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> </div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>  <span class="comment">// Supported types for various tensors in QLSTM</span></div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>  std::vector<DataType> inputOutputSupportedTypes =</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  {</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  };</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span> </div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>  std::vector<DataType> cellStateSupportedTypes =</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>  {</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>  };</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> </div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>  std::vector<DataType> weightsSupportedTypes =</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>  {</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a></div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>  };</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span> </div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>  std::vector<DataType> layerNormPeepholeWeightsSupportedTypes =</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>  {</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>  };</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span> </div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>  std::vector<DataType> biasSupportedTypes =</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>  {</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a></div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>  };</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span> </div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>  <span class="comment">// Validate types of input/output tensors</span></div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>  ValidateDataTypes(inputInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>  ValidateDataTypes(outputStateInInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>  ValidateDataTypes(cellStateInInfo, cellStateSupportedTypes, descriptorName);</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span> </div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>  ValidateDataTypes(outputStateOutInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>  ValidateDataTypes(cellStateOutInfo, cellStateSupportedTypes, descriptorName);</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>  ValidateDataTypes(outputInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span> </div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>  <span class="comment">// Validate matching types of input/output tensors</span></div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>  ValidateTensorDataTypesMatch(inputInfo, outputStateInInfo, descriptorName, <span class="stringliteral">"input"</span>, <span class="stringliteral">"outputStateIn"</span>);</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>  ValidateTensorDataTypesMatch(outputStateInInfo, outputStateOutInfo, descriptorName,</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>  <span class="stringliteral">"outputStateIn"</span>, <span class="stringliteral">"outputStateOut"</span>);</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>  ValidateTensorDataTypesMatch(cellStateInInfo, cellStateOutInfo, descriptorName, <span class="stringliteral">"cellStateIn"</span>, <span class="stringliteral">"cellStateOut"</span>);</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span> </div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>  <span class="comment">// Infer number of batches, number of units, input size and output size from tensor dimensions</span></div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>  <span class="keyword">const</span> uint32_t numBatches = inputInfo.GetShape()[0];</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>  <span class="keyword">const</span> uint32_t inputSize = inputInfo.GetShape()[1];</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>  <span class="keyword">const</span> uint32_t outputSize = outputStateInInfo.GetShape()[1];</div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>  <span class="keyword">const</span> uint32_t numUnits = cellStateInInfo.GetShape()[1];</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span> </div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>  <span class="comment">// Validate number of dimensions and number of elements for input/output tensors</span></div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputInfo, 2, (numBatches * inputSize), descriptorName + <span class="stringliteral">" input"</span>);</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateInInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateIn"</span>);</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateInInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateIn"</span>);</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span> </div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateOutInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateOut"</span>);</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateOutInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateOut"</span>);</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" output"</span>);</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span> </div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY weight tensors</span></div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, descriptorName, <span class="stringliteral">"InputToForgetWeights"</span>);</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>  <span class="keyword">auto</span> inputToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToForgetWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToForgetWeights"</span>);</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span> </div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, descriptorName, <span class="stringliteral">"InputToCellWeights"</span>);</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>  <span class="keyword">auto</span> inputToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToCellWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToCellWeights"</span>);</div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span> </div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, descriptorName, <span class="stringliteral">"InputToOutputWeights"</span>);</div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>  <span class="keyword">auto</span> inputToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToOutputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToOutputWeights"</span>);</div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span> </div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToForgetWeights"</span>);</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>  <span class="keyword">auto</span> recurrentToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToForgetWeightsInfo, 2, (numUnits * outputSize),</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>  <span class="stringliteral">" RecurrentToForgetWeights"</span>);</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span> </div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToCellWeights"</span>);</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>  <span class="keyword">auto</span> recurrentToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToCellWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span> </div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToOutputWeights"</span>);</div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>  <span class="keyword">auto</span> recurrentToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToOutputWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span> </div><div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>  <span class="comment">// Validate data types for MANDATORY weights tensors (all should match each other)</span></div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>  ValidateDataTypes(inputToForgetWeightsInfo, weightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span> </div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToCellWeightsInfo, descriptorName,</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToCellWeights"</span>);</div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToOutputWeightsInfo, descriptorName,</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToOutputWeights"</span>);</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span> </div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToForgetWeightsInfo, descriptorName,</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToForgeteights"</span>);</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToCellWeightsInfo, descriptorName,</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToCellWeights"</span>);</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToOutputWeightsInfo, descriptorName,</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToOutputWeights"</span>);</div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span> </div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY bias tensors</span></div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, descriptorName, <span class="stringliteral">"ForgetGateBias"</span>);</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  <span class="keyword">auto</span> forgetGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetGateBiasInfo, 1, numUnits, <span class="stringliteral">" ForgetGateBias"</span>);</div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span> </div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, descriptorName, <span class="stringliteral">"CellBias"</span>);</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  <span class="keyword">auto</span> cellBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellBiasInfo, 1, numUnits, <span class="stringliteral">" CellBias"</span>);</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span> </div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, descriptorName, <span class="stringliteral">"OutputGateBias"</span>);</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>  <span class="keyword">auto</span> outputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputGateBiasInfo, 1, numUnits, <span class="stringliteral">" OutputGateBias"</span>);</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span> </div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>  <span class="comment">// Validate data types for MANDATORY bias tensors</span></div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>  ValidateDataTypes(forgetGateBiasInfo, biasSupportedTypes, descriptorName);</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span> </div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, cellBiasInfo, descriptorName,</div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"cellBias"</span>);</div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, outputGateBiasInfo, descriptorName,</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"outputGateBias"</span>);</div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span> </div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>  <span class="comment">// Validate OPTIONAL params: CIFG (inputToInputWeights, recurrentToInputWeights, inputGateBias)</span></div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allCifgParamsPresentOrNot = ((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &&</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>  !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div><div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>  (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &&</div><div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>  !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span> </div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>  <span class="keywordflow">if</span> (!allCifgParamsPresentOrNot)</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>  {</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  <span class="stringliteral">": InputToInputWeights, RecurrentToInputWeights and InputGateBias must either all be present "</span></div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  <span class="stringliteral">"(CIFG disabled) or not be present at all (CIFG enabled). m_Parameters.m_CifgEnabled should be "</span></div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  <span class="stringliteral">"set appropriately."</span>);</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  }</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span> </div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  <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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  {</div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  <span class="comment">// Validate number of dimensions and number of elements</span></div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  <span class="keyword">auto</span> inputToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToInputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToInputWeights"</span>);</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span> </div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  <span class="keyword">auto</span> recurrentToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToInputWeightsInfo, 2, (numUnits * outputSize),</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="stringliteral">" RecurrentToInputWeights"</span>);</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span> </div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  <span class="keyword">auto</span> inputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputGateBiasInfo, 1, numUnits, <span class="stringliteral">" InputGateBias"</span>);</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span> </div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  <span class="comment">// Validate data types</span></div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToInputWeightsInfo, descriptorName,</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToInputWeights"</span>);</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToInputWeightsInfo, descriptorName,</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToInputWeights"</span>);</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, inputGateBiasInfo, descriptorName,</div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"inputGateBias"</span>);</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  }</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span> </div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  <span class="comment">// Validate OPTIONAL params: Peephole (cellToInputWeights, cellToForgetWeights, cellToOutputWeights)</span></div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  <span class="keywordtype">bool</span> allPeepholeWeightsPresentOrNot =</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span> </div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>  <span class="keywordflow">if</span> (!allPeepholeWeightsPresentOrNot)</div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>  {</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>  <span class="stringliteral">": CellToInputWeights, CellToForgetWeights and CellToOutputWeights should all be present (Peephole "</span></div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>  <span class="stringliteral">"enabled) or not be present at all (Peephole disabled). CellToInputWeights should only be present "</span></div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>  <span class="stringliteral">"when Peephole is enabled and CIFG is disabled. m_Parameters.m_PeepholeEnabled should be set "</span></div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>  <span class="stringliteral">"appropriately."</span>);</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>  }</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span> </div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>  <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_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>  {</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  <span class="keyword">auto</span> cellToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToForgetWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToForgetWeights"</span>);</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>  ValidateDataTypes(cellToForgetWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span> </div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  <span class="keyword">auto</span> cellToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToOutputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToOutputWeights"</span>);</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToOutputWeightsInfo, descriptorName,</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>  <span class="stringliteral">"cellToForgetWeight"</span>, <span class="stringliteral">"cellToOutputWeights"</span>);</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span> </div><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>  <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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>  {</div><div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>  <span class="keyword">auto</span> cellToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToInputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToInputWeights"</span>);</div><div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToInputWeightsInfo, descriptorName,</div><div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>  <span class="stringliteral">"cellToForgetWeights"</span>, <span class="stringliteral">"cellToInputWeights"</span>);</div><div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>  }</div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>  }</div><div class="line"><a name="l03261"></a><span class="lineno"> 3261</span> </div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>  <span class="comment">// Validate OPTIONAL params: Layer Norm Weights</span></div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>  <span class="keywordtype">bool</span> allLayerNormWeightsPresentOrNot =</div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a></div><div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div><div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a></div><div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>));</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span> </div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>  <span class="keywordflow">if</span> (!allLayerNormWeightsPresentOrNot)</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>  {</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>  <span class="stringliteral">": InputLayerNormWeights, ForgetLayerNormWeights, m_OutputLayerNormWeights "</span></div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>  <span class="stringliteral">"and CellLayerNormWeights should all be present (Layer Norm enabled) or not "</span></div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  <span class="stringliteral">"be present at all (Layer Norm disabled). InputLayerNormWeights should "</span></div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>  <span class="stringliteral">"only be present when Layer Norm is enabled and CIFG is disabled. "</span></div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  <span class="stringliteral">"m_Parameters.m_LayerNormEnabled should be set appropriately."</span>);</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  }</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span> </div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>  <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_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>  {</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>  <span class="keyword">auto</span> forgetLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" forgetLayerNormWeights"</span>);</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>  ValidateDataTypes(forgetLayerNormWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span> </div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>  <span class="keyword">auto</span> cellLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" cellLayerNormWeights"</span>);</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, cellLayerNormWeightsInfo, descriptorName,</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"cellLayerNormWeights"</span>);</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span> </div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>  <span class="keyword">auto</span> outputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" outputLayerNormWeights"</span>);</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, outputLayerNormWeightsInfo, descriptorName,</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"outputLayerNormWeights"</span>);</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span> </div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  <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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  {</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>  <span class="keyword">auto</span> inputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" inputLayerNormWeights"</span>);</div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, inputLayerNormWeightsInfo, descriptorName,</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"inputLayerNormWeights"</span>);</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>  }</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>  }</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span> </div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>  <span class="comment">// Validate OPTIONAL params: Projection (projectionWeights, projectionBias)</span></div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  <span class="keywordtype">bool</span> correctProjectionTensorsPresent =</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  ((!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span> </div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  <span class="keywordflow">if</span> (!correctProjectionTensorsPresent)</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  {</div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  <span class="stringliteral">": If projection is enabled, ProjectionWeights should be present and "</span></div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  <span class="stringliteral">"ProjectionBias is optional. If projection is disabled, neither "</span></div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  <span class="stringliteral">"ProjectionWeights nor ProjectionBias should be present."</span>);</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  }</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span> </div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  <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_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>  {</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  <span class="keyword">auto</span> projectionWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">"ProjectionWeights"</span>);</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  ValidateDataTypes(projectionWeightsInfo, weightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span> </div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  {</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  <span class="keyword">auto</span> projectionBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionBiasInfo, 1, outputSize, <span class="stringliteral">"ProjectionBias"</span>);</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  ValidateDataTypes(projectionBiasInfo, biasSupportedTypes, descriptorName);</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>  }</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span> </div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  }</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((outputInfo.GetQuantizationScale() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#af8f724af7210b52529216feefa993c98">m_HiddenStateScale</a>) &&</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  outputInfo.GetQuantizationOffset() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4556cbd764d4848d8ad0637a9eed580d">m_HiddenStateZeroPoint</a>) {</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  <span class="stringliteral">": If projection is disabled, output quantization info (scale, offset) "</span></div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  <span class="stringliteral">"should match HiddenStateScale and HiddenStateZeroPoint."</span>);</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  }</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span> </div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> }</div><div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::QLstmQueueDescriptor::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00603">WorkloadData.hpp:603</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a3ead2ef8da00b2709d561d85996fc513"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">armnn::QLstmQueueDescriptor::m_ProjectionWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_ProjectionWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00599">WorkloadData.hpp:599</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a29fa293fffbf9c6f00cd75db1dc0a52a"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">armnn::QLstmQueueDescriptor::m_ForgetGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_ForgetGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00596">WorkloadData.hpp:596</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a17ba1c8bcc71a55a95b2a3913f8cb203"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">armnn::QLstmQueueDescriptor::m_InputToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00587">WorkloadData.hpp:587</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_a2837b4396f20c956952d1a7286cab5f8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">armnn::QLstmDescriptor::m_PeepholeEnabled</a></div><div class="ttdeci">bool m_PeepholeEnabled</div><div class="ttdoc">Enable/disable peephole. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01367">Descriptors.hpp:1367</a></div></div> -<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_af8f724af7210b52529216feefa993c98"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#af8f724af7210b52529216feefa993c98">armnn::QLstmDescriptor::m_HiddenStateScale</a></div><div class="ttdeci">float m_HiddenStateScale</div><div class="ttdoc">Hidden State quantization scale. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01383">Descriptors.hpp:1383</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_ab160eba2493d5fe52185c0986dcb190c"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">armnn::QLstmQueueDescriptor::m_InputToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00584">WorkloadData.hpp:584</a></div></div> -<div class="ttc" id="structarmnn_1_1_queue_descriptor_xhtml_a8a30194ce14c088a2625ccc8c3e9d155"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">armnn::QueueDescriptor::ValidateTensorNumDimNumElem</a></div><div class="ttdeci">void ValidateTensorNumDimNumElem(const TensorInfo &tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00464">WorkloadData.cpp:464</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aa09f7bdb9fd0d06b6386e412a4e72dd6"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">armnn::QLstmQueueDescriptor::m_CellToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00594">WorkloadData.hpp:594</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">armnn::QLstmQueueDescriptor::m_CellToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00592">WorkloadData.hpp:592</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="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< QLstmDescriptor >::m_Parameters</a></div><div class="ttdeci">QLstmDescriptor 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_q_lstm_queue_descriptor_xhtml_ad9442e26aa79f896da5f404ab825a9c8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">armnn::QLstmQueueDescriptor::m_ForgetLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_ForgetLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00602">WorkloadData.hpp:602</a></div></div> -<div class="ttc" id="classarmnn_1_1_const_tensor_handle_xhtml_a66e8f43a5b42b500871ed96e15419567"><div class="ttname"><a href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">armnn::ConstTensorHandle::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo & GetTensorInfo() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_handle_8hpp_source.xhtml#l00040">TensorHandle.hpp:40</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< TensorInfo > 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_q_lstm_descriptor_xhtml_a4a8ec49f130084445d44297549254780"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">armnn::QLstmDescriptor::m_LayerNormEnabled</a></div><div class="ttdeci">bool m_LayerNormEnabled</div><div class="ttdoc">Enable/disable layer normalization. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01371">Descriptors.hpp:1371</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aab77f54a037658ca9b2bf9cc8a1fadf1"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">armnn::QLstmQueueDescriptor::m_InputToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00585">WorkloadData.hpp:585</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">armnn::QLstmQueueDescriptor::m_CellBias</a></div><div class="ttdeci">const ConstTensorHandle * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00597">WorkloadData.hpp:597</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< TensorInfo > 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="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a1dbad32cad5c0437e1272f59fedf52ea"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">armnn::QLstmQueueDescriptor::m_InputLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00601">WorkloadData.hpp:601</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="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">armnn::QLstmQueueDescriptor::m_InputToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00586">WorkloadData.hpp:586</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a20c10fcb26657477377d07b7b1e13120"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">armnn::QLstmQueueDescriptor::m_CellToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00593">WorkloadData.hpp:593</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_ac668b31de6fb0f19d4c793d5ed3c3316"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">armnn::QLstmQueueDescriptor::m_ProjectionBias</a></div><div class="ttdeci">const ConstTensorHandle * m_ProjectionBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00600">WorkloadData.hpp:600</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_ac18c8b8b2039267d8282e91b4162d8aa"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">armnn::QLstmQueueDescriptor::m_RecurrentToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00590">WorkloadData.hpp:590</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_a6c9de81fc65b3c4924cab11907075a17"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">armnn::QLstmDescriptor::m_ProjectionEnabled</a></div><div class="ttdeci">bool m_ProjectionEnabled</div><div class="ttdoc">Enable/disable the projection layer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01369">Descriptors.hpp:1369</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a44eb7524badcca9b2073359e3814c98b"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">armnn::QLstmQueueDescriptor::m_InputGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_InputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00595">WorkloadData.hpp:595</a></div></div> -<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a5ff4158b1b363b898d0da04c42d37ce0"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">armnn::QLstmQueueDescriptor::m_OutputGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_OutputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00598">WorkloadData.hpp:598</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a0e0f66bd03c88f3d2dc666f581d3cf12"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">armnn::QLstmQueueDescriptor::m_OutputLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_OutputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00604">WorkloadData.hpp:604</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a4c27716f61bb68e8ea0bd4e8389ba01a"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">armnn::QLstmQueueDescriptor::m_RecurrentToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00591">WorkloadData.hpp:591</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a299587d4f3fca029492700f3e2585bd8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">armnn::QLstmQueueDescriptor::m_RecurrentToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00588">WorkloadData.hpp:588</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_ad474e5c51a0b194ef32e812b86c0cbdb"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">armnn::QLstmDescriptor::m_CifgEnabled</a></div><div class="ttdeci">bool m_CifgEnabled</div><div class="ttdoc">Enable/disable CIFG (coupled input & forget gate). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01365">Descriptors.hpp:1365</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_adf8571dd1867ee91082bd005f94f2610"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">armnn::QLstmQueueDescriptor::m_RecurrentToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00589">WorkloadData.hpp:589</a></div></div> -<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_a4556cbd764d4848d8ad0637a9eed580d"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4556cbd764d4848d8ad0637a9eed580d">armnn::QLstmDescriptor::m_HiddenStateZeroPoint</a></div><div class="ttdeci">int32_t m_HiddenStateZeroPoint</div><div class="ttdoc">Hidden State zero point. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01381">Descriptors.hpp:1381</a></div></div> +<div class="fragment"><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span> {</div> +<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">"QLstmQueueDescriptor"</span>};</div> +<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>  </div> +<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>  <span class="comment">// Validate number of inputs/outputs</span></div> +<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>  ValidateNumInputs(workloadInfo, descriptorName, 3);</div> +<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>  ValidateNumOutputs(workloadInfo, descriptorName, 3);</div> +<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>  </div> +<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>  <span class="comment">// Input/output tensor info</span></div> +<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>  <span class="keyword">auto</span> inputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div> +<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>  <span class="keyword">auto</span> outputStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div> +<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>  <span class="keyword">auto</span> cellStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2];</div> +<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>  </div> +<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>  <span class="keyword">auto</span> outputStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div> +<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>  <span class="keyword">auto</span> cellStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[1];</div> +<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>  <span class="keyword">auto</span> outputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2];</div> +<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>  </div> +<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>  <span class="comment">// Supported types for various tensors in QLSTM</span></div> +<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>  std::vector<DataType> inputOutputSupportedTypes =</div> +<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  {</div> +<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div> +<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  };</div> +<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>  </div> +<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>  std::vector<DataType> cellStateSupportedTypes =</div> +<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>  {</div> +<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div> +<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>  };</div> +<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>  </div> +<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>  std::vector<DataType> weightsSupportedTypes =</div> +<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>  {</div> +<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a></div> +<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>  };</div> +<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>  </div> +<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>  std::vector<DataType> layerNormPeepholeWeightsSupportedTypes =</div> +<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>  {</div> +<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div> +<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>  };</div> +<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>  </div> +<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>  std::vector<DataType> biasSupportedTypes =</div> +<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>  {</div> +<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>  <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a></div> +<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>  };</div> +<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>  </div> +<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>  <span class="comment">// Validate types of input/output tensors</span></div> +<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>  ValidateDataTypes(inputInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>  ValidateDataTypes(outputStateInInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>  ValidateDataTypes(cellStateInInfo, cellStateSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>  </div> +<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>  ValidateDataTypes(outputStateOutInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>  ValidateDataTypes(cellStateOutInfo, cellStateSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>  ValidateDataTypes(outputInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>  </div> +<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>  <span class="comment">// Validate matching types of input/output tensors</span></div> +<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>  ValidateTensorDataTypesMatch(inputInfo, outputStateInInfo, descriptorName, <span class="stringliteral">"input"</span>, <span class="stringliteral">"outputStateIn"</span>);</div> +<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>  ValidateTensorDataTypesMatch(outputStateInInfo, outputStateOutInfo, descriptorName,</div> +<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>  <span class="stringliteral">"outputStateIn"</span>, <span class="stringliteral">"outputStateOut"</span>);</div> +<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>  ValidateTensorDataTypesMatch(cellStateInInfo, cellStateOutInfo, descriptorName, <span class="stringliteral">"cellStateIn"</span>, <span class="stringliteral">"cellStateOut"</span>);</div> +<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>  </div> +<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>  <span class="comment">// Infer number of batches, number of units, input size and output size from tensor dimensions</span></div> +<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>  <span class="keyword">const</span> uint32_t numBatches = inputInfo.GetShape()[0];</div> +<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>  <span class="keyword">const</span> uint32_t inputSize = inputInfo.GetShape()[1];</div> +<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>  <span class="keyword">const</span> uint32_t outputSize = outputStateInInfo.GetShape()[1];</div> +<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>  <span class="keyword">const</span> uint32_t numUnits = cellStateInInfo.GetShape()[1];</div> +<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>  </div> +<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>  <span class="comment">// Validate number of dimensions and number of elements for input/output tensors</span></div> +<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputInfo, 2, (numBatches * inputSize), descriptorName + <span class="stringliteral">" input"</span>);</div> +<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateInInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateIn"</span>);</div> +<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateInInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateIn"</span>);</div> +<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>  </div> +<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateOutInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateOut"</span>);</div> +<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateOutInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateOut"</span>);</div> +<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" output"</span>);</div> +<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>  </div> +<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY weight tensors</span></div> +<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, descriptorName, <span class="stringliteral">"InputToForgetWeights"</span>);</div> +<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>  <span class="keyword">auto</span> inputToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToForgetWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToForgetWeights"</span>);</div> +<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>  </div> +<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, descriptorName, <span class="stringliteral">"InputToCellWeights"</span>);</div> +<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>  <span class="keyword">auto</span> inputToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToCellWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToCellWeights"</span>);</div> +<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>  </div> +<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, descriptorName, <span class="stringliteral">"InputToOutputWeights"</span>);</div> +<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>  <span class="keyword">auto</span> inputToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToOutputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToOutputWeights"</span>);</div> +<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>  </div> +<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToForgetWeights"</span>);</div> +<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>  <span class="keyword">auto</span> recurrentToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToForgetWeightsInfo, 2, (numUnits * outputSize),</div> +<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>  <span class="stringliteral">" RecurrentToForgetWeights"</span>);</div> +<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>  </div> +<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>  <span class="keyword">auto</span> recurrentToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToCellWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>  </div> +<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToOutputWeights"</span>);</div> +<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>  <span class="keyword">auto</span> recurrentToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToOutputWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>  </div> +<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>  <span class="comment">// Validate data types for MANDATORY weights tensors (all should match each other)</span></div> +<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>  ValidateDataTypes(inputToForgetWeightsInfo, weightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>  </div> +<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToCellWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToCellWeights"</span>);</div> +<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToOutputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToOutputWeights"</span>);</div> +<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  </div> +<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToForgetWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToForgeteights"</span>);</div> +<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToCellWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToOutputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToOutputWeights"</span>);</div> +<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  </div> +<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY bias tensors</span></div> +<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, descriptorName, <span class="stringliteral">"ForgetGateBias"</span>);</div> +<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  <span class="keyword">auto</span> forgetGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetGateBiasInfo, 1, numUnits, <span class="stringliteral">" ForgetGateBias"</span>);</div> +<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  </div> +<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, descriptorName, <span class="stringliteral">"CellBias"</span>);</div> +<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  <span class="keyword">auto</span> cellBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellBiasInfo, 1, numUnits, <span class="stringliteral">" CellBias"</span>);</div> +<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  </div> +<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, descriptorName, <span class="stringliteral">"OutputGateBias"</span>);</div> +<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>  <span class="keyword">auto</span> outputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputGateBiasInfo, 1, numUnits, <span class="stringliteral">" OutputGateBias"</span>);</div> +<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>  </div> +<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>  <span class="comment">// Validate data types for MANDATORY bias tensors</span></div> +<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>  ValidateDataTypes(forgetGateBiasInfo, biasSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>  </div> +<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, cellBiasInfo, descriptorName,</div> +<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"cellBias"</span>);</div> +<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, outputGateBiasInfo, descriptorName,</div> +<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"outputGateBias"</span>);</div> +<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>  </div> +<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>  <span class="comment">// Validate OPTIONAL params: CIFG (inputToInputWeights, recurrentToInputWeights, inputGateBias)</span></div> +<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allCifgParamsPresentOrNot = ((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &&</div> +<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>  !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div> +<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>  (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &&</div> +<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>  !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div> +<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>  </div> +<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>  <span class="keywordflow">if</span> (!allCifgParamsPresentOrNot)</div> +<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>  {</div> +<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  <span class="stringliteral">": InputToInputWeights, RecurrentToInputWeights and InputGateBias must either all be present "</span></div> +<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  <span class="stringliteral">"(CIFG disabled) or not be present at all (CIFG enabled). m_Parameters.m_CifgEnabled should be "</span></div> +<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  <span class="stringliteral">"set appropriately."</span>);</div> +<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  }</div> +<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>  </div> +<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  <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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> +<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  {</div> +<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  <span class="comment">// Validate number of dimensions and number of elements</span></div> +<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  <span class="keyword">auto</span> inputToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToInputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToInputWeights"</span>);</div> +<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  </div> +<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  <span class="keyword">auto</span> recurrentToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToInputWeightsInfo, 2, (numUnits * outputSize),</div> +<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="stringliteral">" RecurrentToInputWeights"</span>);</div> +<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  </div> +<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  <span class="keyword">auto</span> inputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputGateBiasInfo, 1, numUnits, <span class="stringliteral">" InputGateBias"</span>);</div> +<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  </div> +<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  <span class="comment">// Validate data types</span></div> +<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToInputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToInputWeights"</span>);</div> +<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToInputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToInputWeights"</span>);</div> +<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, inputGateBiasInfo, descriptorName,</div> +<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"inputGateBias"</span>);</div> +<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  }</div> +<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  </div> +<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  <span class="comment">// Validate OPTIONAL params: Peephole (cellToInputWeights, cellToForgetWeights, cellToOutputWeights)</span></div> +<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  <span class="keywordtype">bool</span> allPeepholeWeightsPresentOrNot =</div> +<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div> +<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div> +<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div> +<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div> +<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>  </div> +<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>  <span class="keywordflow">if</span> (!allPeepholeWeightsPresentOrNot)</div> +<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>  {</div> +<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>  <span class="stringliteral">": CellToInputWeights, CellToForgetWeights and CellToOutputWeights should all be present (Peephole "</span></div> +<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>  <span class="stringliteral">"enabled) or not be present at all (Peephole disabled). CellToInputWeights should only be present "</span></div> +<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>  <span class="stringliteral">"when Peephole is enabled and CIFG is disabled. m_Parameters.m_PeepholeEnabled should be set "</span></div> +<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>  <span class="stringliteral">"appropriately."</span>);</div> +<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>  }</div> +<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>  </div> +<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>  <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_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div> +<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>  {</div> +<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  <span class="keyword">auto</span> cellToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToForgetWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToForgetWeights"</span>);</div> +<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>  ValidateDataTypes(cellToForgetWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>  </div> +<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  <span class="keyword">auto</span> cellToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToOutputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToOutputWeights"</span>);</div> +<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToOutputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>  <span class="stringliteral">"cellToForgetWeight"</span>, <span class="stringliteral">"cellToOutputWeights"</span>);</div> +<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>  </div> +<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>  <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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> +<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>  {</div> +<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>  <span class="keyword">auto</span> cellToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToInputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToInputWeights"</span>);</div> +<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToInputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>  <span class="stringliteral">"cellToForgetWeights"</span>, <span class="stringliteral">"cellToInputWeights"</span>);</div> +<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>  }</div> +<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>  }</div> +<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>  </div> +<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>  <span class="comment">// Validate OPTIONAL params: Layer Norm Weights</span></div> +<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>  <span class="keywordtype">bool</span> allLayerNormWeightsPresentOrNot =</div> +<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a></div> +<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div> +<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a></div> +<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>));</div> +<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>  </div> +<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>  <span class="keywordflow">if</span> (!allLayerNormWeightsPresentOrNot)</div> +<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>  {</div> +<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>  <span class="stringliteral">": InputLayerNormWeights, ForgetLayerNormWeights, m_OutputLayerNormWeights "</span></div> +<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>  <span class="stringliteral">"and CellLayerNormWeights should all be present (Layer Norm enabled) or not "</span></div> +<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  <span class="stringliteral">"be present at all (Layer Norm disabled). InputLayerNormWeights should "</span></div> +<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>  <span class="stringliteral">"only be present when Layer Norm is enabled and CIFG is disabled. "</span></div> +<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  <span class="stringliteral">"m_Parameters.m_LayerNormEnabled should be set appropriately."</span>);</div> +<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  }</div> +<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>  </div> +<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>  <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_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div> +<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>  {</div> +<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>  <span class="keyword">auto</span> forgetLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" forgetLayerNormWeights"</span>);</div> +<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>  ValidateDataTypes(forgetLayerNormWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>  </div> +<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>  <span class="keyword">auto</span> cellLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" cellLayerNormWeights"</span>);</div> +<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, cellLayerNormWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"cellLayerNormWeights"</span>);</div> +<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>  </div> +<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>  <span class="keyword">auto</span> outputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" outputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, outputLayerNormWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"outputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>  </div> +<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  <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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> +<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  {</div> +<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>  <span class="keyword">auto</span> inputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" inputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, inputLayerNormWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"inputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>  }</div> +<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>  }</div> +<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  </div> +<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>  <span class="comment">// Validate OPTIONAL params: Projection (projectionWeights, projectionBias)</span></div> +<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  <span class="keywordtype">bool</span> correctProjectionTensorsPresent =</div> +<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  ((!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div> +<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div> +<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div> +<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>  </div> +<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  <span class="keywordflow">if</span> (!correctProjectionTensorsPresent)</div> +<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  {</div> +<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  <span class="stringliteral">": If projection is enabled, ProjectionWeights should be present and "</span></div> +<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  <span class="stringliteral">"ProjectionBias is optional. If projection is disabled, neither "</span></div> +<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  <span class="stringliteral">"ProjectionWeights nor ProjectionBias should be present."</span>);</div> +<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  }</div> +<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  </div> +<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  <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_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div> +<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>  {</div> +<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  <span class="keyword">auto</span> projectionWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">"ProjectionWeights"</span>);</div> +<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  ValidateDataTypes(projectionWeightsInfo, weightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  </div> +<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div> +<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  {</div> +<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  <span class="keyword">auto</span> projectionBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionBiasInfo, 1, outputSize, <span class="stringliteral">"ProjectionBias"</span>);</div> +<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  ValidateDataTypes(projectionBiasInfo, biasSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>  }</div> +<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  </div> +<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  }</div> +<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((outputInfo.GetQuantizationScale() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#af8f724af7210b52529216feefa993c98">m_HiddenStateScale</a>) &&</div> +<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  outputInfo.GetQuantizationOffset() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4556cbd764d4848d8ad0637a9eed580d">m_HiddenStateZeroPoint</a>) {</div> +<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  <span class="stringliteral">": If projection is disabled, output quantization info (scale, offset) "</span></div> +<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  <span class="stringliteral">"should match HiddenStateScale and HiddenStateZeroPoint."</span>);</div> +<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  }</div> +<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  </div> +<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> }</div> </div><!-- fragment --> +<p class="reference">References <a class="el" href="_tensor_8cpp_source.xhtml#l00478">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00461">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00191">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_handle_8hpp_source.xhtml#l00040">ConstTensorHandle::GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00597">QLstmQueueDescriptor::m_CellBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00603">QLstmQueueDescriptor::m_CellLayerNormWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00593">QLstmQueueDescriptor::m_CellToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00592">QLstmQueueDescriptor::m_CellToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00594">QLstmQueueDescriptor::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01365">QLstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00596">QLstmQueueDescriptor::m_ForgetGateBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00602">QLstmQueueDescriptor::m_ForgetLayerNormWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01383">QLstmDescriptor::m_HiddenStateScale</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01381">QLstmDescriptor::m_HiddenStateZeroPoint</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00595">QLstmQueueDescriptor::m_InputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00601">QLstmQueueDescriptor::m_InputLayerNormWeights</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00586">QLstmQueueDescriptor::m_InputToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00585">QLstmQueueDescriptor::m_InputToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00584">QLstmQueueDescriptor::m_InputToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00587">QLstmQueueDescriptor::m_InputToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01371">QLstmDescriptor::m_LayerNormEnabled</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00598">QLstmQueueDescriptor::m_OutputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00604">QLstmQueueDescriptor::m_OutputLayerNormWeights</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< QLstmDescriptor >::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01367">QLstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00600">QLstmQueueDescriptor::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01369">QLstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00599">QLstmQueueDescriptor::m_ProjectionWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00590">QLstmQueueDescriptor::m_RecurrentToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00589">QLstmQueueDescriptor::m_RecurrentToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00588">QLstmQueueDescriptor::m_RecurrentToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00591">QLstmQueueDescriptor::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l00464">QueueDescriptor::ValidateTensorNumDimNumElem()</a>.</p> + </div> </div> <h2 class="groupheader">Member Data Documentation</h2> @@ -338,7 +590,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00597">597</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -356,7 +608,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00603">603</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -374,7 +626,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00593">593</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -392,7 +644,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00592">592</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -410,7 +662,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00594">594</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -428,7 +680,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00596">596</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -446,7 +698,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00602">602</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -464,7 +716,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00595">595</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -482,7 +734,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00601">601</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -500,7 +752,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00586">586</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -518,7 +770,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00585">585</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -536,7 +788,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00584">584</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -554,7 +806,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00587">587</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -572,7 +824,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00598">598</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -590,7 +842,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00604">604</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -608,7 +860,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00600">600</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -626,7 +878,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00599">599</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -644,7 +896,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00590">590</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -662,7 +914,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00589">589</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -680,7 +932,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00588">588</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -698,7 +950,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00591">591</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03055">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -708,13 +960,50 @@ Additional Inherited Members</h2></td></tr> </ul> </div><!-- contents --> </div><!-- doc-content --> +<div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_xhtml_a4a8ec49f130084445d44297549254780"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">armnn::QLstmDescriptor::m_LayerNormEnabled</a></div><div class="ttdeci">bool m_LayerNormEnabled</div><div class="ttdoc">Enable/disable layer normalization.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01371">Descriptors.hpp:1371</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_adf8571dd1867ee91082bd005f94f2610"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">armnn::QLstmQueueDescriptor::m_RecurrentToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00589">WorkloadData.hpp:589</a></div></div> +<div class="ttc" id="astructarmnn_1_1_queue_descriptor_xhtml_a8a30194ce14c088a2625ccc8c3e9d155"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">armnn::QueueDescriptor::ValidateTensorNumDimNumElem</a></div><div class="ttdeci">void ValidateTensorNumDimNumElem(const TensorInfo &tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.xhtml#l00464">WorkloadData.cpp:464</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a5ff4158b1b363b898d0da04c42d37ce0"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">armnn::QLstmQueueDescriptor::m_OutputGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_OutputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00598">WorkloadData.hpp:598</a></div></div> +<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div><div class="ttdeci">@ Signed32</div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a17ba1c8bcc71a55a95b2a3913f8cb203"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">armnn::QLstmQueueDescriptor::m_InputToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00587">WorkloadData.hpp:587</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_q_lstm_queue_descriptor_xhtml_ac668b31de6fb0f19d4c793d5ed3c3316"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">armnn::QLstmQueueDescriptor::m_ProjectionBias</a></div><div class="ttdeci">const ConstTensorHandle * m_ProjectionBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00600">WorkloadData.hpp:600</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">armnn::QLstmQueueDescriptor::m_CellBias</a></div><div class="ttdeci">const ConstTensorHandle * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00597">WorkloadData.hpp:597</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a29fa293fffbf9c6f00cd75db1dc0a52a"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">armnn::QLstmQueueDescriptor::m_ForgetGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_ForgetGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00596">WorkloadData.hpp:596</a></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< TensorInfo > 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_q_lstm_queue_descriptor_xhtml_aab77f54a037658ca9b2bf9cc8a1fadf1"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">armnn::QLstmQueueDescriptor::m_InputToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00585">WorkloadData.hpp:585</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_ad9442e26aa79f896da5f404ab825a9c8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">armnn::QLstmQueueDescriptor::m_ForgetLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_ForgetLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00602">WorkloadData.hpp:602</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">armnn::QLstmQueueDescriptor::m_CellToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00592">WorkloadData.hpp:592</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a3ead2ef8da00b2709d561d85996fc513"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">armnn::QLstmQueueDescriptor::m_ProjectionWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_ProjectionWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00599">WorkloadData.hpp:599</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a299587d4f3fca029492700f3e2585bd8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">armnn::QLstmQueueDescriptor::m_RecurrentToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00588">WorkloadData.hpp:588</a></div></div> +<div class="ttc" id="aclassarmnn_1_1_const_tensor_handle_xhtml_a66e8f43a5b42b500871ed96e15419567"><div class="ttname"><a href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">armnn::ConstTensorHandle::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo & GetTensorInfo() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_handle_8hpp_source.xhtml#l00040">TensorHandle.hpp:40</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_xhtml_af8f724af7210b52529216feefa993c98"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#af8f724af7210b52529216feefa993c98">armnn::QLstmDescriptor::m_HiddenStateScale</a></div><div class="ttdeci">float m_HiddenStateScale</div><div class="ttdoc">Hidden State quantization scale.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01383">Descriptors.hpp:1383</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_xhtml_a4556cbd764d4848d8ad0637a9eed580d"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4556cbd764d4848d8ad0637a9eed580d">armnn::QLstmDescriptor::m_HiddenStateZeroPoint</a></div><div class="ttdeci">int32_t m_HiddenStateZeroPoint</div><div class="ttdoc">Hidden State zero point.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01381">Descriptors.hpp:1381</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_aa09f7bdb9fd0d06b6386e412a4e72dd6"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">armnn::QLstmQueueDescriptor::m_CellToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00594">WorkloadData.hpp:594</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a0e0f66bd03c88f3d2dc666f581d3cf12"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">armnn::QLstmQueueDescriptor::m_OutputLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_OutputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00604">WorkloadData.hpp:604</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< QLstmDescriptor >::m_Parameters</a></div><div class="ttdeci">QLstmDescriptor 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="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::QLstmQueueDescriptor::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00603">WorkloadData.hpp:603</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">armnn::QLstmQueueDescriptor::m_InputToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00586">WorkloadData.hpp:586</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a4c27716f61bb68e8ea0bd4e8389ba01a"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">armnn::QLstmQueueDescriptor::m_RecurrentToOutputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00591">WorkloadData.hpp:591</a></div></div> +<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div><div class="ttdeci">@ QSymmS8</div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_xhtml_ad474e5c51a0b194ef32e812b86c0cbdb"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">armnn::QLstmDescriptor::m_CifgEnabled</a></div><div class="ttdeci">bool m_CifgEnabled</div><div class="ttdoc">Enable/disable CIFG (coupled input & forget gate).</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01365">Descriptors.hpp:1365</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a20c10fcb26657477377d07b7b1e13120"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">armnn::QLstmQueueDescriptor::m_CellToForgetWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00593">WorkloadData.hpp:593</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_q_lstm_descriptor_xhtml_a2837b4396f20c956952d1a7286cab5f8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">armnn::QLstmDescriptor::m_PeepholeEnabled</a></div><div class="ttdeci">bool m_PeepholeEnabled</div><div class="ttdoc">Enable/disable peephole.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01367">Descriptors.hpp:1367</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_ab160eba2493d5fe52185c0986dcb190c"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">armnn::QLstmQueueDescriptor::m_InputToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00584">WorkloadData.hpp:584</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_ac18c8b8b2039267d8282e91b4162d8aa"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">armnn::QLstmQueueDescriptor::m_RecurrentToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_RecurrentToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00590">WorkloadData.hpp:590</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="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a44eb7524badcca9b2073359e3814c98b"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">armnn::QLstmQueueDescriptor::m_InputGateBias</a></div><div class="ttdeci">const ConstTensorHandle * m_InputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00595">WorkloadData.hpp:595</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_xhtml_a6c9de81fc65b3c4924cab11907075a17"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">armnn::QLstmDescriptor::m_ProjectionEnabled</a></div><div class="ttdeci">bool m_ProjectionEnabled</div><div class="ttdoc">Enable/disable the projection layer.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01369">Descriptors.hpp:1369</a></div></div> +<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_xhtml_a1dbad32cad5c0437e1272f59fedf52ea"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">armnn::QLstmQueueDescriptor::m_InputLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00601">WorkloadData.hpp:601</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< TensorInfo > 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_q_lstm_queue_descriptor.xhtml">QLstmQueueDescriptor</a></li> - <li class="footer">Generated on Fri Feb 24 2023 10:24:32 for ArmNN by + <li class="footer">Generated on Wed Mar 22 2023 15:53:08 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> |