aboutsummaryrefslogtreecommitdiff
path: root/23.02/structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml
diff options
context:
space:
mode:
authorDavid Monahan <david.monahan@arm.com>2023-03-22 16:48:58 +0000
committerDavid Monahan <david.monahan@arm.com>2023-03-22 16:48:58 +0000
commitae050524109f1ce827962665436ef7430f2ac479 (patch)
treea087fe0c77570971dd7979f2757426c24e91afc7 /23.02/structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml
parent8d2ca734165a068478df7cffa46185680b05cd20 (diff)
downloadarmnn-ae050524109f1ce827962665436ef7430f2ac479.tar.gz
IVGCVSW-7255 Update Doxygen Documentation and publish on GitHub.
* Updating Doxygen documentation for 23.02 release. Signed-off-by: David Monahan <david.monahan@arm.com> Change-Id: I545574ff7664b4595d2fe6a91a3c35d2ad55df82
Diffstat (limited to '23.02/structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml')
-rw-r--r--23.02/structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml442
1 files changed, 349 insertions, 93 deletions
diff --git a/23.02/structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml b/23.02/structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml
index 87c49511f0..c1659a6313 100644
--- a/23.02/structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml
+++ b/23.02/structarmnn_1_1_unidirectional_sequence_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: UnidirectionalSequenceLstmQueueDescriptor Struct Reference</title>
@@ -19,9 +19,6 @@
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
-</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
@@ -30,7 +27,8 @@
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
-</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
@@ -51,18 +49,21 @@
</table>
</div>
<!-- end header part -->
-<!-- Generated by Doxygen 1.8.13 -->
+<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
-</script>
+/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -76,7 +77,9 @@ $(function() {
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml','');});
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml',''); initResizable(); });
+/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -112,8 +115,8 @@ Inheritance diagram for UnidirectionalSequenceLstmQueueDescriptor:</div>
<map id="UnidirectionalSequenceLstmQueueDescriptor_map" name="UnidirectionalSequenceLstmQueueDescriptor_map">
<area href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml" alt="QueueDescriptorWithParameters&lt; LstmDescriptor &gt;" shape="rect" coords="0,56,305,80"/>
<area href="structarmnn_1_1_queue_descriptor.xhtml" alt="QueueDescriptor" shape="rect" coords="0,0,305,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#l00688">688</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; : <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div><div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a44eb7524badcca9b2073359e3814c98b"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00724">WorkloadData.hpp:724</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ac18c8b8b2039267d8282e91b4162d8aa"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00719">WorkloadData.hpp:719</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ab160eba2493d5fe52185c0986dcb190c"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00713">WorkloadData.hpp:713</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a5ff4158b1b363b898d0da04c42d37ce0"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00727">WorkloadData.hpp:727</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ac668b31de6fb0f19d4c793d5ed3c3316"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00729">WorkloadData.hpp:729</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a17ba1c8bcc71a55a95b2a3913f8cb203"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00716">WorkloadData.hpp:716</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00715">WorkloadData.hpp:715</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aab77f54a037658ca9b2bf9cc8a1fadf1"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00714">WorkloadData.hpp:714</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00732">WorkloadData.hpp:732</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00721">WorkloadData.hpp:721</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a3ead2ef8da00b2709d561d85996fc513"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00728">WorkloadData.hpp:728</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ad9442e26aa79f896da5f404ab825a9c8"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00731">WorkloadData.hpp:731</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a0e0f66bd03c88f3d2dc666f581d3cf12"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00733">WorkloadData.hpp:733</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a29fa293fffbf9c6f00cd75db1dc0a52a"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00725">WorkloadData.hpp:725</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00726">WorkloadData.hpp:726</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a299587d4f3fca029492700f3e2585bd8"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00717">WorkloadData.hpp:717</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a20c10fcb26657477377d07b7b1e13120"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00722">WorkloadData.hpp:722</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a4c27716f61bb68e8ea0bd4e8389ba01a"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00720">WorkloadData.hpp:720</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_adf8571dd1867ee91082bd005f94f2610"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00718">WorkloadData.hpp:718</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aa09f7bdb9fd0d06b6386e412a4e72dd6"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00723">WorkloadData.hpp:723</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a1dbad32cad5c0437e1272f59fedf52ea"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00730">WorkloadData.hpp:730</a></div></div>
+<div class="fragment"><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; : <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; , <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div>
</div><!-- fragment -->
</div>
</div>
@@ -281,46 +286,260 @@ 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#l03800">3800</a> of file <a class="el" href="_workload_data_8cpp_source.xhtml">WorkloadData.cpp</a>.</p>
-
-<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l00464">QueueDescriptor::ValidateTensorNumDimNumElem()</a>.</p>
-<div class="fragment"><div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>&#160;{</div><div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>&#160; <span class="comment">// Modified from LstmQueueDescriptor::Validate to support UnidirectionalSequenceLstm</span></div><div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>&#160;</div><div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>&#160; <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">&quot;UnidirectionalSequenceLstmQueueDescriptor&quot;</span>};</div><div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>&#160;</div><div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160; <span class="comment">// check dimensions of all inputs and outputs</span></div><div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160; <span class="keywordflow">if</span> (workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>.size() != 3)</div><div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160; {</div><div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Invalid number of inputs.&quot;</span>);</div><div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>&#160; }</div><div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160; <span class="keywordflow">if</span> (workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>.size() != 3)</div><div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160; {</div><div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Invalid number of outputs.&quot;</span>);</div><div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160; }</div><div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>&#160;</div><div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160; std::vector&lt;DataType&gt; supportedTypes =</div><div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160; {</div><div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>,</div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div><div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160; };</div><div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160;</div><div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160; <span class="comment">// check for supported type of one input and match them with all the other input and output</span></div><div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160; ValidateDataTypes(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0], supportedTypes, descriptorName);</div><div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160;</div><div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160; <span class="comment">// Making sure clipping parameters have valid values.</span></div><div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160; <span class="comment">// == 0 means no clipping</span></div><div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160; <span class="comment">// &gt; 0 means clipping</span></div><div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a531a3907ec13d3772370da88030191a5">m_ClippingThresCell</a> &lt; 0.0f)</div><div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160; {</div><div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: negative cell clipping threshold is invalid&quot;</span>);</div><div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160; }</div><div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a86e88bef0df4df96df752b4b8955a3af">m_ClippingThresProj</a> &lt; 0.0f)</div><div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160; {</div><div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: negative projection clipping threshold is invalid&quot;</span>);</div><div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160; }</div><div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160;</div><div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIndx = 0;</div><div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndx = 1;</div><div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160; uint32_t timeStep = 1;</div><div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> timeIndx = 1;</div><div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160; inputIndx = 2;</div><div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a3dcd10ca3ea2e132558b1e2814668c15">m_TimeMajor</a>)</div><div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160; {</div><div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160; batchIndx = 1;</div><div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160; timeIndx = 0;</div><div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160;</div><div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160; }</div><div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160; timeStep = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0].GetShape()[timeIndx];</div><div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160;</div><div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160; <span class="comment">// Inferring batch size, number of outputs and number of cells from the inputs.</span></div><div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160; <span class="keyword">const</span> uint32_t n_input = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0].GetShape()[inputIndx];</div><div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160; <span class="keyword">const</span> uint32_t n_batch = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0].GetShape()[batchIndx];</div><div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;InputToOutputWeights&quot;</span>);</div><div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160; <span class="keyword">const</span> uint32_t n_cell = <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a8e8d2fbabcac19f9e12779080ddff54e">GetShape</a>()[0];</div><div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;RecurrentToOutputWeights&quot;</span>);</div><div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160; <span class="keyword">const</span> uint32_t n_output = <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a8e8d2fbabcac19f9e12779080ddff54e">GetShape</a>()[1];</div><div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160;</div><div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160; <span class="comment">// input tensor</span></div><div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0], 3, (timeStep * n_batch * n_input),</div><div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160; descriptorName + <span class="stringliteral">&quot; input_0&quot;</span>);</div><div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160; <span class="comment">// outputStateInTensor</span></div><div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1], 2, (n_batch * n_output),</div><div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160; descriptorName + <span class="stringliteral">&quot; input_1&quot;</span>);</div><div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160; <span class="comment">// outputStateInTensor</span></div><div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2], 2, (n_batch * n_cell),</div><div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160; descriptorName + <span class="stringliteral">&quot; input_2&quot;</span>);</div><div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160;</div><div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160; <span class="comment">// outputTensor</span></div><div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2], 3, (timeStep * n_batch * n_output),</div><div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160; descriptorName + <span class="stringliteral">&quot; output_0&quot;</span>);</div><div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160;</div><div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160; <span class="comment">// check that dimensions of inputs/outputs and QueueDescriptor data match with each other</span></div><div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> )</div><div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160; {</div><div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div><div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160; (n_cell * n_input), <span class="stringliteral">&quot;InputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160; }</div><div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160;</div><div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;InputToForgetWeights&quot;</span>);</div><div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div><div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160; (n_cell * n_input), <span class="stringliteral">&quot;InputToForgetWeights&quot;</span>);</div><div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160;</div><div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;InputToCellWeights&quot;</span>);</div><div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div><div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160; (n_cell * n_input), <span class="stringliteral">&quot;InputToCellWeights&quot;</span>);</div><div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160;</div><div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> )</div><div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160; {</div><div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;RecurrentToInputWeights&quot;</span>);</div><div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160; }</div><div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160;</div><div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;RecurrentToForgetWeights&quot;</span>);</div><div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div><div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;RecurrentToForgetWeights&quot;</span>);</div><div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160;</div><div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;RecurrentToCellWeights&quot;</span>);</div><div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div><div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;RecurrentToCellWeights&quot;</span>);</div><div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160;</div><div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160; <span class="comment">// Make sure the input-gate&#39;s parameters are either both present (regular</span></div><div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160; <span class="comment">// LSTM) or not at all (CIFG-LSTM). And CifgEnable is set accordingly.</span></div><div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>&#160; <span class="keywordtype">bool</span> cifg_weights_all_or_none = ((<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp;</div><div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div><div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160; (!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp;</div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div><div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160; <span class="keywordflow">if</span> (!cifg_weights_all_or_none)</div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160; {</div><div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Input-Gate&#39;s parameters InputToInputWeights and &quot;</span></div><div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160; <span class="stringliteral">&quot;RecurrentToInputWeights must either both be present (regular LSTM) &quot;</span></div><div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160; <span class="stringliteral">&quot;or both not present (CIFG-LSTM). In addition CifgEnable must be set &quot;</span></div><div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160; <span class="stringliteral">&quot;accordingly.&quot;</span>);</div><div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160; }</div><div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160;</div><div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> )</div><div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160; {</div><div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div><div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>&#160; n_cell, <span class="stringliteral">&quot;CellToInputWeights&quot;</span>);</div><div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160; }</div><div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a> )</div><div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160; {</div><div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div><div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>&#160; n_cell, <span class="stringliteral">&quot;CellToForgetWeights&quot;</span>);</div><div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160; }</div><div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> )</div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160; {</div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160; n_cell, <span class="stringliteral">&quot;CellToOutputWeights&quot;</span>);</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160; }</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160;</div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160; <span class="comment">// Making sure the peephole weights are there all or none. And PeepholeEnable is set accordingly.</span></div><div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>&#160; <span class="keywordtype">bool</span> peephole_weights_all_or_none =</div><div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>&#160; (((<a class="code" href="structarmnn_1_1_unidirectional_sequence_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_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div><div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160; || ( !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160; <span class="keywordflow">if</span> (!peephole_weights_all_or_none)</div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160; {</div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Invalid combination of peephole parameters.&quot;</span>);</div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160; }</div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160;</div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160; <span class="comment">// Make sure the input gate bias is present only when not a CIFG-LSTM.</span></div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160; {</div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>)</div><div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160; {</div><div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: InputGateBias is present and CIFG-LSTM is enabled.&quot;</span>);</div><div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>&#160; }</div><div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160; }</div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160; {</div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>)</div><div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>&#160; {</div><div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: If CIFG-LSTM is disabled InputGateBias &quot;</span></div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160; <span class="stringliteral">&quot;must be present.&quot;</span>);</div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160; }</div><div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div><div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160; n_cell, <span class="stringliteral">&quot;InputGateBias&quot;</span>);</div><div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160; }</div><div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160;</div><div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;ForgetGateBias&quot;</span>);</div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;ForgetGateBias&quot;</span>);</div><div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>&#160;</div><div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;CellBias&quot;</span>);</div><div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;CellBias&quot;</span>);</div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160;</div><div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;OutputGateBias&quot;</span>);</div><div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;OutputGateBias&quot;</span>);</div><div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160;</div><div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>)</div><div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160; {</div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;ProjectionWeights&quot;</span>);</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160; }</div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160; {</div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_output, <span class="stringliteral">&quot;ProjectionBias&quot;</span>);</div><div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160; }</div><div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160;</div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160; <span class="comment">// Making sure the projection tensors are consistent:</span></div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160; <span class="comment">// 1) If projection weight is not present, then projection bias should not be</span></div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160; <span class="comment">// present.</span></div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160; <span class="comment">// 2) If projection weight is present, then projection bias is optional.</span></div><div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160; <span class="keywordtype">bool</span> projecton_tensors_consistent = ((!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp;</div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div><div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160; || (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp;</div><div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div><div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160; || (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp;</div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160; <span class="keywordflow">if</span> (!projecton_tensors_consistent)</div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160; {</div><div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Projection tensors are inconsistent.&quot;</span>);</div><div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160; }</div><div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>&#160;</div><div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160; <span class="comment">// The four layer normalization weights either all have values or none of them have values. Additionally, if</span></div><div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160; <span class="comment">// CIFG is used, input layer normalization weights tensor is omitted and the other layer normalization weights</span></div><div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160; <span class="comment">// either all have values or none of them have values. Layer normalization is used when the values of all the</span></div><div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160; <span class="comment">// layer normalization weights are present</span></div><div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>)</div><div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160; {</div><div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;InputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160; }</div><div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>)</div><div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160; {</div><div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;ForgetLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160; }</div><div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>)</div><div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160; {</div><div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;CellLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160; }</div><div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>)</div><div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160; {</div><div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;OutputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160; }</div><div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160;</div><div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div><div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160; {</div><div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160; {</div><div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>)</div><div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160; {</div><div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Layer normalisation is enabled and CIFG-LSTM is &quot;</span></div><div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160; <span class="stringliteral">&quot;disabled but InputLayerNormWeights are not present&quot;</span>);</div><div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160; }</div><div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(),</div><div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160; 1, n_cell, <span class="stringliteral">&quot;InputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>&#160; }</div><div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>)</div><div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160; {</div><div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;:InputLayerNormWeights are present while CIFG is &quot;</span></div><div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160; <span class="stringliteral">&quot;enabled&quot;</span>);</div><div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160; }</div><div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160;</div><div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>, <span class="stringliteral">&quot;Null pointer check layer normalisation enabled&quot;</span>,</div><div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>&#160; <span class="stringliteral">&quot;ForgetLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;ForgetLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160;</div><div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>, <span class="stringliteral">&quot;Null pointer check layer normalisation enabled&quot;</span>,</div><div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160; <span class="stringliteral">&quot;OutputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;OutputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160;</div><div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>, <span class="stringliteral">&quot;Null pointer check layer normalisation enabled&quot;</span>,</div><div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160; <span class="stringliteral">&quot;CellLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;CellLayerNormWeights&quot;</span>);</div><div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160; }</div><div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>)</div><div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160; {</div><div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Layer normalisation is disabled but one or more layer &quot;</span></div><div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160; <span class="stringliteral">&quot;normalisation weights are present.&quot;</span>);</div><div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160; }</div><div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml_a6c9de81fc65b3c4924cab11907075a17"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">armnn::LstmDescriptor::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#l01097">Descriptors.hpp:1097</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a44eb7524badcca9b2073359e3814c98b"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00724">WorkloadData.hpp:724</a></div></div>
-<div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml_a86e88bef0df4df96df752b4b8955a3af"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a86e88bef0df4df96df752b4b8955a3af">armnn::LstmDescriptor::m_ClippingThresProj</a></div><div class="ttdeci">float m_ClippingThresProj</div><div class="ttdoc">Clipping threshold value for the projection. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01091">Descriptors.hpp:1091</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ac18c8b8b2039267d8282e91b4162d8aa"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00719">WorkloadData.hpp:719</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 &amp;tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &amp;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="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
-<div class="ttc" id="classarmnn_1_1_const_tensor_handle_xhtml_a8e8d2fbabcac19f9e12779080ddff54e"><div class="ttname"><a href="classarmnn_1_1_const_tensor_handle.xhtml#a8e8d2fbabcac19f9e12779080ddff54e">armnn::ConstTensorHandle::GetShape</a></div><div class="ttdeci">TensorShape GetShape() const override</div><div class="ttdoc">Get the number of elements for each dimension ordered from slowest iterating dimension to fastest ite...</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_handle_8hpp_source.xhtml#l00056">TensorHandle.hpp:56</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ab160eba2493d5fe52185c0986dcb190c"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00713">WorkloadData.hpp:713</a></div></div>
-<div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml_a3dcd10ca3ea2e132558b1e2814668c15"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a3dcd10ca3ea2e132558b1e2814668c15">armnn::LstmDescriptor::m_TimeMajor</a></div><div class="ttdeci">bool m_TimeMajor</div><div class="ttdoc">Enable/disable time major. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01101">Descriptors.hpp:1101</a></div></div>
-<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters&lt; LstmDescriptor &gt;::m_Parameters</a></div><div class="ttdeci">LstmDescriptor 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_unidirectional_sequence_lstm_queue_descriptor_xhtml_a5ff4158b1b363b898d0da04c42d37ce0"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00727">WorkloadData.hpp:727</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ac668b31de6fb0f19d4c793d5ed3c3316"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00729">WorkloadData.hpp:729</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a17ba1c8bcc71a55a95b2a3913f8cb203"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00716">WorkloadData.hpp:716</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00715">WorkloadData.hpp:715</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 &amp; 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&lt; TensorInfo &gt; m_InputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo.hpp:18</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aab77f54a037658ca9b2bf9cc8a1fadf1"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00714">WorkloadData.hpp:714</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00732">WorkloadData.hpp:732</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00721">WorkloadData.hpp:721</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a3ead2ef8da00b2709d561d85996fc513"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00728">WorkloadData.hpp:728</a></div></div>
-<div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml_a2837b4396f20c956952d1a7286cab5f8"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">armnn::LstmDescriptor::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#l01095">Descriptors.hpp:1095</a></div></div>
-<div class="ttc" id="structarmnn_1_1_workload_info_xhtml_a67b178f8a836bc1e52b8de109760adfd"><div class="ttname"><a href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">armnn::WorkloadInfo::m_OutputTensorInfos</a></div><div class="ttdeci">std::vector&lt; TensorInfo &gt; m_OutputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo.hpp:19</a></div></div>
-<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
-<div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml_a531a3907ec13d3772370da88030191a5"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a531a3907ec13d3772370da88030191a5">armnn::LstmDescriptor::m_ClippingThresCell</a></div><div class="ttdeci">float m_ClippingThresCell</div><div class="ttdoc">Clipping threshold value for the cell state. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01089">Descriptors.hpp:1089</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ad9442e26aa79f896da5f404ab825a9c8"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00731">WorkloadData.hpp:731</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a0e0f66bd03c88f3d2dc666f581d3cf12"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00733">WorkloadData.hpp:733</a></div></div>
-<div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml_ad474e5c51a0b194ef32e812b86c0cbdb"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">armnn::LstmDescriptor::m_CifgEnabled</a></div><div class="ttdeci">bool m_CifgEnabled</div><div class="ttdoc">Enable/disable cifg (coupled input &amp; forget gate). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01093">Descriptors.hpp:1093</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a29fa293fffbf9c6f00cd75db1dc0a52a"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00725">WorkloadData.hpp:725</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00726">WorkloadData.hpp:726</a></div></div>
-<div class="ttc" id="structarmnn_1_1_lstm_descriptor_xhtml_a4a8ec49f130084445d44297549254780"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">armnn::LstmDescriptor::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#l01099">Descriptors.hpp:1099</a></div></div>
-<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a299587d4f3fca029492700f3e2585bd8"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00717">WorkloadData.hpp:717</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a20c10fcb26657477377d07b7b1e13120"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00722">WorkloadData.hpp:722</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a4c27716f61bb68e8ea0bd4e8389ba01a"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00720">WorkloadData.hpp:720</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_adf8571dd1867ee91082bd005f94f2610"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00718">WorkloadData.hpp:718</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aa09f7bdb9fd0d06b6386e412a4e72dd6"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00723">WorkloadData.hpp:723</a></div></div>
-<div class="ttc" id="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a1dbad32cad5c0437e1272f59fedf52ea"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00730">WorkloadData.hpp:730</a></div></div>
+<div class="fragment"><div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>&#160;{</div>
+<div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>&#160; <span class="comment">// Modified from LstmQueueDescriptor::Validate to support UnidirectionalSequenceLstm</span></div>
+<div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>&#160; </div>
+<div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>&#160; <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">&quot;UnidirectionalSequenceLstmQueueDescriptor&quot;</span>};</div>
+<div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>&#160; </div>
+<div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160; <span class="comment">// check dimensions of all inputs and outputs</span></div>
+<div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160; <span class="keywordflow">if</span> (workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>.size() != 3)</div>
+<div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160; {</div>
+<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Invalid number of inputs.&quot;</span>);</div>
+<div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>&#160; }</div>
+<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160; <span class="keywordflow">if</span> (workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>.size() != 3)</div>
+<div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160; {</div>
+<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Invalid number of outputs.&quot;</span>);</div>
+<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160; }</div>
+<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>&#160; </div>
+<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160; std::vector&lt;DataType&gt; supportedTypes =</div>
+<div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160; {</div>
+<div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>,</div>
+<div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div>
+<div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160; };</div>
+<div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160; </div>
+<div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160; <span class="comment">// check for supported type of one input and match them with all the other input and output</span></div>
+<div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160; ValidateDataTypes(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0], supportedTypes, descriptorName);</div>
+<div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160; </div>
+<div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160; <span class="comment">// Making sure clipping parameters have valid values.</span></div>
+<div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160; <span class="comment">// == 0 means no clipping</span></div>
+<div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160; <span class="comment">// &gt; 0 means clipping</span></div>
+<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a531a3907ec13d3772370da88030191a5">m_ClippingThresCell</a> &lt; 0.0f)</div>
+<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160; {</div>
+<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: negative cell clipping threshold is invalid&quot;</span>);</div>
+<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160; }</div>
+<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a86e88bef0df4df96df752b4b8955a3af">m_ClippingThresProj</a> &lt; 0.0f)</div>
+<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160; {</div>
+<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: negative projection clipping threshold is invalid&quot;</span>);</div>
+<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160; }</div>
+<div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160; </div>
+<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIndx = 0;</div>
+<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndx = 1;</div>
+<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160; uint32_t timeStep = 1;</div>
+<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> timeIndx = 1;</div>
+<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160; inputIndx = 2;</div>
+<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a3dcd10ca3ea2e132558b1e2814668c15">m_TimeMajor</a>)</div>
+<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160; {</div>
+<div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160; batchIndx = 1;</div>
+<div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160; timeIndx = 0;</div>
+<div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160; </div>
+<div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160; }</div>
+<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160; timeStep = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0].GetShape()[timeIndx];</div>
+<div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160; </div>
+<div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160; <span class="comment">// Inferring batch size, number of outputs and number of cells from the inputs.</span></div>
+<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160; <span class="keyword">const</span> uint32_t n_input = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0].GetShape()[inputIndx];</div>
+<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160; <span class="keyword">const</span> uint32_t n_batch = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0].GetShape()[batchIndx];</div>
+<div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;InputToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160; <span class="keyword">const</span> uint32_t n_cell = <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a8e8d2fbabcac19f9e12779080ddff54e">GetShape</a>()[0];</div>
+<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;RecurrentToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160; <span class="keyword">const</span> uint32_t n_output = <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a8e8d2fbabcac19f9e12779080ddff54e">GetShape</a>()[1];</div>
+<div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160; </div>
+<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160; <span class="comment">// input tensor</span></div>
+<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0], 3, (timeStep * n_batch * n_input),</div>
+<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160; descriptorName + <span class="stringliteral">&quot; input_0&quot;</span>);</div>
+<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160; <span class="comment">// outputStateInTensor</span></div>
+<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1], 2, (n_batch * n_output),</div>
+<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160; descriptorName + <span class="stringliteral">&quot; input_1&quot;</span>);</div>
+<div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160; <span class="comment">// outputStateInTensor</span></div>
+<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2], 2, (n_batch * n_cell),</div>
+<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160; descriptorName + <span class="stringliteral">&quot; input_2&quot;</span>);</div>
+<div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160; </div>
+<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160; <span class="comment">// outputTensor</span></div>
+<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2], 3, (timeStep * n_batch * n_output),</div>
+<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160; descriptorName + <span class="stringliteral">&quot; output_0&quot;</span>);</div>
+<div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160; </div>
+<div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160; <span class="comment">// check that dimensions of inputs/outputs and QueueDescriptor data match with each other</span></div>
+<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> )</div>
+<div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160; {</div>
+<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div>
+<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160; (n_cell * n_input), <span class="stringliteral">&quot;InputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160; }</div>
+<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160; </div>
+<div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;InputToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div>
+<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160; (n_cell * n_input), <span class="stringliteral">&quot;InputToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160; </div>
+<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;InputToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div>
+<div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160; (n_cell * n_input), <span class="stringliteral">&quot;InputToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160; </div>
+<div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> )</div>
+<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160; {</div>
+<div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div>
+<div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;RecurrentToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160; }</div>
+<div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160; </div>
+<div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;RecurrentToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div>
+<div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;RecurrentToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160; </div>
+<div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;RecurrentToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div>
+<div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;RecurrentToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160; </div>
+<div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160; <span class="comment">// Make sure the input-gate&#39;s parameters are either both present (regular</span></div>
+<div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160; <span class="comment">// LSTM) or not at all (CIFG-LSTM). And CifgEnable is set accordingly.</span></div>
+<div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>&#160; <span class="keywordtype">bool</span> cifg_weights_all_or_none = ((<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp;</div>
+<div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div>
+<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160; (!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp;</div>
+<div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div>
+<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160; <span class="keywordflow">if</span> (!cifg_weights_all_or_none)</div>
+<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160; {</div>
+<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Input-Gate&#39;s parameters InputToInputWeights and &quot;</span></div>
+<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160; <span class="stringliteral">&quot;RecurrentToInputWeights must either both be present (regular LSTM) &quot;</span></div>
+<div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160; <span class="stringliteral">&quot;or both not present (CIFG-LSTM). In addition CifgEnable must be set &quot;</span></div>
+<div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160; <span class="stringliteral">&quot;accordingly.&quot;</span>);</div>
+<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160; }</div>
+<div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160; </div>
+<div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> )</div>
+<div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160; {</div>
+<div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div>
+<div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>&#160; n_cell, <span class="stringliteral">&quot;CellToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160; }</div>
+<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a> )</div>
+<div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160; {</div>
+<div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div>
+<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>&#160; n_cell, <span class="stringliteral">&quot;CellToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160; }</div>
+<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160; <span class="keywordflow">if</span> ( <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> )</div>
+<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160; {</div>
+<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div>
+<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160; n_cell, <span class="stringliteral">&quot;CellToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160; }</div>
+<div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160; </div>
+<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160; <span class="comment">// Making sure the peephole weights are there all or none. And PeepholeEnable is set accordingly.</span></div>
+<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>&#160; <span class="keywordtype">bool</span> peephole_weights_all_or_none =</div>
+<div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>&#160; (((<a class="code" href="structarmnn_1_1_unidirectional_sequence_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_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div>
+<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div>
+<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160; || ( !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div>
+<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div>
+<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160; <span class="keywordflow">if</span> (!peephole_weights_all_or_none)</div>
+<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160; {</div>
+<div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Invalid combination of peephole parameters.&quot;</span>);</div>
+<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160; }</div>
+<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160; </div>
+<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160; <span class="comment">// Make sure the input gate bias is present only when not a CIFG-LSTM.</span></div>
+<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
+<div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160; {</div>
+<div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>)</div>
+<div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160; {</div>
+<div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: InputGateBias is present and CIFG-LSTM is enabled.&quot;</span>);</div>
+<div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>&#160; }</div>
+<div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160; }</div>
+<div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160; {</div>
+<div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>)</div>
+<div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>&#160; {</div>
+<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: If CIFG-LSTM is disabled InputGateBias &quot;</span></div>
+<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160; <span class="stringliteral">&quot;must be present.&quot;</span>);</div>
+<div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160; }</div>
+<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1,</div>
+<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160; n_cell, <span class="stringliteral">&quot;InputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160; }</div>
+<div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160; </div>
+<div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;ForgetGateBias&quot;</span>);</div>
+<div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;ForgetGateBias&quot;</span>);</div>
+<div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>&#160; </div>
+<div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;CellBias&quot;</span>);</div>
+<div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;CellBias&quot;</span>);</div>
+<div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160; </div>
+<div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, <span class="stringliteral">&quot;Null pointer check&quot;</span>, <span class="stringliteral">&quot;OutputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;OutputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160; </div>
+<div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>)</div>
+<div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160; {</div>
+<div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 2,</div>
+<div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160; (n_cell * n_output), <span class="stringliteral">&quot;ProjectionWeights&quot;</span>);</div>
+<div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160; }</div>
+<div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div>
+<div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160; {</div>
+<div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_output, <span class="stringliteral">&quot;ProjectionBias&quot;</span>);</div>
+<div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160; }</div>
+<div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160; </div>
+<div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160; <span class="comment">// Making sure the projection tensors are consistent:</span></div>
+<div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160; <span class="comment">// 1) If projection weight is not present, then projection bias should not be</span></div>
+<div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160; <span class="comment">// present.</span></div>
+<div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160; <span class="comment">// 2) If projection weight is present, then projection bias is optional.</span></div>
+<div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160; <span class="keywordtype">bool</span> projecton_tensors_consistent = ((!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp;</div>
+<div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div>
+<div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160; || (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp;</div>
+<div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div>
+<div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160; || (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp;</div>
+<div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div>
+<div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160; <span class="keywordflow">if</span> (!projecton_tensors_consistent)</div>
+<div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160; {</div>
+<div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Projection tensors are inconsistent.&quot;</span>);</div>
+<div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160; }</div>
+<div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>&#160; </div>
+<div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160; <span class="comment">// The four layer normalization weights either all have values or none of them have values. Additionally, if</span></div>
+<div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160; <span class="comment">// CIFG is used, input layer normalization weights tensor is omitted and the other layer normalization weights</span></div>
+<div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160; <span class="comment">// either all have values or none of them have values. Layer normalization is used when the values of all the</span></div>
+<div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160; <span class="comment">// layer normalization weights are present</span></div>
+<div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>)</div>
+<div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160; {</div>
+<div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;InputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160; }</div>
+<div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>)</div>
+<div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160; {</div>
+<div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;ForgetLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160; }</div>
+<div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>)</div>
+<div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160; {</div>
+<div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;CellLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160; }</div>
+<div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>)</div>
+<div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160; {</div>
+<div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;OutputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160; }</div>
+<div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160; </div>
+<div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div>
+<div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160; {</div>
+<div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
+<div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160; {</div>
+<div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>)</div>
+<div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160; {</div>
+<div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Layer normalisation is enabled and CIFG-LSTM is &quot;</span></div>
+<div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160; <span class="stringliteral">&quot;disabled but InputLayerNormWeights are not present&quot;</span>);</div>
+<div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160; }</div>
+<div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(),</div>
+<div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160; 1, n_cell, <span class="stringliteral">&quot;InputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>&#160; }</div>
+<div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>)</div>
+<div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160; {</div>
+<div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;:InputLayerNormWeights are present while CIFG is &quot;</span></div>
+<div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160; <span class="stringliteral">&quot;enabled&quot;</span>);</div>
+<div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160; }</div>
+<div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160; </div>
+<div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>, <span class="stringliteral">&quot;Null pointer check layer normalisation enabled&quot;</span>,</div>
+<div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>&#160; <span class="stringliteral">&quot;ForgetLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;ForgetLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160; </div>
+<div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>, <span class="stringliteral">&quot;Null pointer check layer normalisation enabled&quot;</span>,</div>
+<div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160; <span class="stringliteral">&quot;OutputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;OutputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160; </div>
+<div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>, <span class="stringliteral">&quot;Null pointer check layer normalisation enabled&quot;</span>,</div>
+<div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160; <span class="stringliteral">&quot;CellLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.xhtml#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>(), 1, n_cell, <span class="stringliteral">&quot;CellLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160; }</div>
+<div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>)</div>
+<div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160; {</div>
+<div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName + <span class="stringliteral">&quot;: Layer normalisation is disabled but one or more layer &quot;</span></div>
+<div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160; <span class="stringliteral">&quot;normalisation weights are present.&quot;</span>);</div>
+<div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160; }</div>
+<div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160;}</div>
</div><!-- fragment -->
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::Float32</a>, <a class="el" href="_tensor_handle_8hpp_source.xhtml#l00056">ConstTensorHandle::GetShape()</a>, <a class="el" href="_tensor_handle_8hpp_source.xhtml#l00040">ConstTensorHandle::GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00726">UnidirectionalSequenceLstmQueueDescriptor::m_CellBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00732">UnidirectionalSequenceLstmQueueDescriptor::m_CellLayerNormWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00722">UnidirectionalSequenceLstmQueueDescriptor::m_CellToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00721">UnidirectionalSequenceLstmQueueDescriptor::m_CellToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00723">UnidirectionalSequenceLstmQueueDescriptor::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01093">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01089">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01091">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00725">UnidirectionalSequenceLstmQueueDescriptor::m_ForgetGateBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00731">UnidirectionalSequenceLstmQueueDescriptor::m_ForgetLayerNormWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00724">UnidirectionalSequenceLstmQueueDescriptor::m_InputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00730">UnidirectionalSequenceLstmQueueDescriptor::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#l00715">UnidirectionalSequenceLstmQueueDescriptor::m_InputToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00714">UnidirectionalSequenceLstmQueueDescriptor::m_InputToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00713">UnidirectionalSequenceLstmQueueDescriptor::m_InputToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00716">UnidirectionalSequenceLstmQueueDescriptor::m_InputToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01099">LstmDescriptor::m_LayerNormEnabled</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00727">UnidirectionalSequenceLstmQueueDescriptor::m_OutputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00733">UnidirectionalSequenceLstmQueueDescriptor::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&lt; LstmDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01095">LstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00729">UnidirectionalSequenceLstmQueueDescriptor::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01097">LstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00728">UnidirectionalSequenceLstmQueueDescriptor::m_ProjectionWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00719">UnidirectionalSequenceLstmQueueDescriptor::m_RecurrentToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00718">UnidirectionalSequenceLstmQueueDescriptor::m_RecurrentToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00717">UnidirectionalSequenceLstmQueueDescriptor::m_RecurrentToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00720">UnidirectionalSequenceLstmQueueDescriptor::m_RecurrentToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01101">LstmDescriptor::m_TimeMajor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</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 +557,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00726">726</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -356,7 +575,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00732">732</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -374,7 +593,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00722">722</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -392,7 +611,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00721">721</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -410,7 +629,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00723">723</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -428,7 +647,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00725">725</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -446,7 +665,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00731">731</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -464,7 +683,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00724">724</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -482,7 +701,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00730">730</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -500,7 +719,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00715">715</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -518,7 +737,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00714">714</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -536,7 +755,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00713">713</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -554,7 +773,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00716">716</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -572,7 +791,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00727">727</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -590,7 +809,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00733">733</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -608,7 +827,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00729">729</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -626,7 +845,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00728">728</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -644,7 +863,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00719">719</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -662,7 +881,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00718">718</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -680,7 +899,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00717">717</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -698,7 +917,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00720">720</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="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_unidirectional_sequence_lstm_layer_8cpp_source.xhtml#l00022">UnidirectionalSequenceLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03800">UnidirectionalSequenceLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -708,13 +927,50 @@ Additional Inherited Members</h2></td></tr>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_adf8571dd1867ee91082bd005f94f2610"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#adf8571dd1867ee91082bd005f94f2610">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00718">WorkloadData.hpp:718</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a0e0f66bd03c88f3d2dc666f581d3cf12"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a0e0f66bd03c88f3d2dc666f581d3cf12">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00733">WorkloadData.hpp:733</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_lstm_descriptor_xhtml_a3dcd10ca3ea2e132558b1e2814668c15"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a3dcd10ca3ea2e132558b1e2814668c15">armnn::LstmDescriptor::m_TimeMajor</a></div><div class="ttdeci">bool m_TimeMajor</div><div class="ttdoc">Enable/disable time major.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01101">Descriptors.hpp:1101</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a4c27716f61bb68e8ea0bd4e8389ba01a"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a4c27716f61bb68e8ea0bd4e8389ba01a">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00720">WorkloadData.hpp:720</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a44eb7524badcca9b2073359e3814c98b"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a44eb7524badcca9b2073359e3814c98b">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00724">WorkloadData.hpp:724</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aa09f7bdb9fd0d06b6386e412a4e72dd6"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aa09f7bdb9fd0d06b6386e412a4e72dd6">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00723">WorkloadData.hpp:723</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 &amp;tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &amp;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_unidirectional_sequence_lstm_queue_descriptor_xhtml_a29fa293fffbf9c6f00cd75db1dc0a52a"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a29fa293fffbf9c6f00cd75db1dc0a52a">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00725">WorkloadData.hpp:725</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a20c10fcb26657477377d07b7b1e13120"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a20c10fcb26657477377d07b7b1e13120">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00722">WorkloadData.hpp:722</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_lstm_descriptor_xhtml_ad474e5c51a0b194ef32e812b86c0cbdb"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">armnn::LstmDescriptor::m_CifgEnabled</a></div><div class="ttdeci">bool m_CifgEnabled</div><div class="ttdoc">Enable/disable cifg (coupled input &amp; forget gate).</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01093">Descriptors.hpp:1093</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_lstm_descriptor_xhtml_a4a8ec49f130084445d44297549254780"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">armnn::LstmDescriptor::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#l01099">Descriptors.hpp:1099</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_unidirectional_sequence_lstm_queue_descriptor_xhtml_ab160eba2493d5fe52185c0986dcb190c"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ab160eba2493d5fe52185c0986dcb190c">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00713">WorkloadData.hpp:713</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a6e9593869b82984de198fed27f72cdcf">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00726">WorkloadData.hpp:726</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aab77f54a037658ca9b2bf9cc8a1fadf1"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aab77f54a037658ca9b2bf9cc8a1fadf1">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00714">WorkloadData.hpp:714</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a5ff4158b1b363b898d0da04c42d37ce0"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a5ff4158b1b363b898d0da04c42d37ce0">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00727">WorkloadData.hpp:727</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00732">WorkloadData.hpp:732</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&lt; TensorInfo &gt; m_OutputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo.hpp:19</a></div></div>
+<div class="ttc" id="aclassarmnn_1_1_const_tensor_handle_xhtml_a8e8d2fbabcac19f9e12779080ddff54e"><div class="ttname"><a href="classarmnn_1_1_const_tensor_handle.xhtml#a8e8d2fbabcac19f9e12779080ddff54e">armnn::ConstTensorHandle::GetShape</a></div><div class="ttdeci">TensorShape GetShape() const override</div><div class="ttdoc">Get the number of elements for each dimension ordered from slowest iterating dimension to fastest ite...</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_handle_8hpp_source.xhtml#l00056">TensorHandle.hpp:56</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a951b7c90b862138071a298065f16be61">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00721">WorkloadData.hpp:721</a></div></div>
+<div class="ttc" id="anamespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div><div class="ttdeci">@ Float32</div></div>
+<div class="ttc" id="astructarmnn_1_1_lstm_descriptor_xhtml_a2837b4396f20c956952d1a7286cab5f8"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">armnn::LstmDescriptor::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#l01095">Descriptors.hpp:1095</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a3ead2ef8da00b2709d561d85996fc513"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a3ead2ef8da00b2709d561d85996fc513">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00728">WorkloadData.hpp:728</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 &amp; 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_unidirectional_sequence_lstm_queue_descriptor_xhtml_ad9442e26aa79f896da5f404ab825a9c8"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ad9442e26aa79f896da5f404ab825a9c8">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00731">WorkloadData.hpp:731</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_lstm_descriptor_xhtml_a531a3907ec13d3772370da88030191a5"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a531a3907ec13d3772370da88030191a5">armnn::LstmDescriptor::m_ClippingThresCell</a></div><div class="ttdeci">float m_ClippingThresCell</div><div class="ttdoc">Clipping threshold value for the cell state.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01089">Descriptors.hpp:1089</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a299587d4f3fca029492700f3e2585bd8"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a299587d4f3fca029492700f3e2585bd8">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00717">WorkloadData.hpp:717</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters&lt; LstmDescriptor &gt;::m_Parameters</a></div><div class="ttdeci">LstmDescriptor 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_unidirectional_sequence_lstm_queue_descriptor_xhtml_ac668b31de6fb0f19d4c793d5ed3c3316"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac668b31de6fb0f19d4c793d5ed3c3316">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00729">WorkloadData.hpp:729</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_lstm_descriptor_xhtml_a6c9de81fc65b3c4924cab11907075a17"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">armnn::LstmDescriptor::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#l01097">Descriptors.hpp:1097</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a1dbad32cad5c0437e1272f59fedf52ea"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a1dbad32cad5c0437e1272f59fedf52ea">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00730">WorkloadData.hpp:730</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a841439e3b8dc157a7368b19c9ecb7d03">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00715">WorkloadData.hpp:715</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_ac18c8b8b2039267d8282e91b4162d8aa"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#ac18c8b8b2039267d8282e91b4162d8aa">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00719">WorkloadData.hpp:719</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_lstm_descriptor_xhtml_a86e88bef0df4df96df752b4b8955a3af"><div class="ttname"><a href="structarmnn_1_1_lstm_descriptor.xhtml#a86e88bef0df4df96df752b4b8955a3af">armnn::LstmDescriptor::m_ClippingThresProj</a></div><div class="ttdeci">float m_ClippingThresProj</div><div class="ttdoc">Clipping threshold value for the projection.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01091">Descriptors.hpp:1091</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor_xhtml_a17ba1c8bcc71a55a95b2a3913f8cb203"><div class="ttname"><a href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml#a17ba1c8bcc71a55a95b2a3913f8cb203">armnn::UnidirectionalSequenceLstmQueueDescriptor::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#l00716">WorkloadData.hpp:716</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_workload_info_xhtml_ac97905bfa0daab357b91df1347600309"><div class="ttname"><a href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">armnn::WorkloadInfo::m_InputTensorInfos</a></div><div class="ttdeci">std::vector&lt; TensorInfo &gt; m_InputTensorInfos</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo.hpp:18</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacearmnn.xhtml">armnn</a></li><li class="navelem"><a class="el" href="structarmnn_1_1_unidirectional_sequence_lstm_queue_descriptor.xhtml">UnidirectionalSequenceLstmQueueDescriptor</a></li>
- <li class="footer">Generated on Fri Feb 24 2023 10:24:33 for ArmNN by
+ <li class="footer">Generated on Wed Mar 22 2023 15:53:09 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>