aboutsummaryrefslogtreecommitdiff
path: root/21.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml
diff options
context:
space:
mode:
authorJan Eilers <jan.eilers@arm.com>2021-02-25 17:44:00 +0000
committerJan Eilers <jan.eilers@arm.com>2021-02-25 18:27:49 +0000
commitfd627ffaec8fd8801d980b4c91ee7c0607ab6aaf (patch)
treeeb4bc8f9b411f30c7655616142b5a4bdd3a1acd0 /21.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml
parentfb14ebbd68e04876809145296af96f6f41857418 (diff)
downloadarmnn-fd627ffaec8fd8801d980b4c91ee7c0607ab6aaf.tar.gz
IVGCVSW-5687 Update Doxygen Docu
* Update Doxygen Documentation for 21.02 release Signed-off-by: Jan Eilers <jan.eilers@arm.com> Change-Id: I9ed2f9caab038836ea99d7b378d7899fe431a4e5
Diffstat (limited to '21.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml')
-rw-r--r--21.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml713
1 files changed, 713 insertions, 0 deletions
diff --git a/21.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml b/21.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml
new file mode 100644
index 0000000000..c7adc36332
--- /dev/null
+++ b/21.02/structarmnn_1_1_q_lstm_queue_descriptor.xhtml
@@ -0,0 +1,713 @@
+<!-- Copyright (c) 2020 ARM Limited. -->
+<!-- -->
+<!-- SPDX-License-Identifier: MIT -->
+<!-- -->
+<!-- HTML header for doxygen 1.8.13-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="robots" content="NOINDEX, NOFOLLOW" />
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>ArmNN: QLstmQueueDescriptor Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">
+ &#160;<span id="projectnumber">21.02</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structarmnn_1_1_q_lstm_queue_descriptor.xhtml','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structarmnn_1_1_q_lstm_queue_descriptor-members.xhtml">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">QLstmQueueDescriptor Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for QLstmQueueDescriptor:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="structarmnn_1_1_q_lstm_queue_descriptor.png" usemap="#QLstmQueueDescriptor_map" alt=""/>
+ <map id="QLstmQueueDescriptor_map" name="QLstmQueueDescriptor_map">
+<area href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml" alt="QueueDescriptorWithParameters&lt; QLstmDescriptor &gt;" shape="rect" coords="0,56,315,80"/>
+<area href="structarmnn_1_1_queue_descriptor.xhtml" alt="QueueDescriptor" shape="rect" coords="0,0,315,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ae632fa69e135c7871fcecf4658a0a634"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#ae632fa69e135c7871fcecf4658a0a634">QLstmQueueDescriptor</a> ()</td></tr>
+<tr class="separator:ae632fa69e135c7871fcecf4658a0a634"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a041e495449e22774a34d92b0904c10bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a041e495449e22774a34d92b0904c10bf">Validate</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;workloadInfo) const</td></tr>
+<tr class="separator:a041e495449e22774a34d92b0904c10bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_structarmnn_1_1_queue_descriptor"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_structarmnn_1_1_queue_descriptor')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a></td></tr>
+<tr class="memitem:a765d2cee4ccce5b9467e0c2b6d25b84a inherit pub_methods_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#a765d2cee4ccce5b9467e0c2b6d25b84a">ValidateInputsOutputs</a> (const std::string &amp;descName, unsigned int numExpectedIn, unsigned int numExpectedOut) const</td></tr>
+<tr class="separator:a765d2cee4ccce5b9467e0c2b6d25b84a inherit pub_methods_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0428f0a7927f8c29264d9c9a287840da inherit pub_methods_structarmnn_1_1_queue_descriptor"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:a0428f0a7927f8c29264d9c9a287840da inherit pub_methods_structarmnn_1_1_queue_descriptor"><td class="memTemplItemLeft" align="right" valign="top">const T *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#a0428f0a7927f8c29264d9c9a287840da">GetAdditionalInformation</a> () const</td></tr>
+<tr class="separator:a0428f0a7927f8c29264d9c9a287840da inherit pub_methods_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a08a1932be591c315a512a877d38b22df"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a08a1932be591c315a512a877d38b22df">m_InputToInputWeights</a></td></tr>
+<tr class="separator:a08a1932be591c315a512a877d38b22df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ea82566d98c5a657c76c3d851c47848"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ea82566d98c5a657c76c3d851c47848">m_InputToForgetWeights</a></td></tr>
+<tr class="separator:a3ea82566d98c5a657c76c3d851c47848"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28ad98d17603fd8b12e046f8ece58970"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a28ad98d17603fd8b12e046f8ece58970">m_InputToCellWeights</a></td></tr>
+<tr class="separator:a28ad98d17603fd8b12e046f8ece58970"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a83dc9086b2e4a4e4cadb66bd874df798"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a83dc9086b2e4a4e4cadb66bd874df798">m_InputToOutputWeights</a></td></tr>
+<tr class="separator:a83dc9086b2e4a4e4cadb66bd874df798"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a98d377149071d8842d610cc0734d1cfe"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a98d377149071d8842d610cc0734d1cfe">m_RecurrentToInputWeights</a></td></tr>
+<tr class="separator:a98d377149071d8842d610cc0734d1cfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a45d73e66cbb2b65049e4016c20657ccf"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a45d73e66cbb2b65049e4016c20657ccf">m_RecurrentToForgetWeights</a></td></tr>
+<tr class="separator:a45d73e66cbb2b65049e4016c20657ccf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aea142bd50ffb93631c2e08324ec92a1e"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aea142bd50ffb93631c2e08324ec92a1e">m_RecurrentToCellWeights</a></td></tr>
+<tr class="separator:aea142bd50ffb93631c2e08324ec92a1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adebc1771e5a1f4b113a7aa594ea74d2c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adebc1771e5a1f4b113a7aa594ea74d2c">m_RecurrentToOutputWeights</a></td></tr>
+<tr class="separator:adebc1771e5a1f4b113a7aa594ea74d2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c1c0a7ead7273788976c9e97cffaab7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5c1c0a7ead7273788976c9e97cffaab7">m_CellToInputWeights</a></td></tr>
+<tr class="separator:a5c1c0a7ead7273788976c9e97cffaab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acefa49d7faf26933e27e473e7bdb4175"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acefa49d7faf26933e27e473e7bdb4175">m_CellToForgetWeights</a></td></tr>
+<tr class="separator:acefa49d7faf26933e27e473e7bdb4175"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f74071b0e07bbe2cb20a8f78826e084"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6f74071b0e07bbe2cb20a8f78826e084">m_CellToOutputWeights</a></td></tr>
+<tr class="separator:a6f74071b0e07bbe2cb20a8f78826e084"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acb3aade8fae984f7293e222dcbe66030"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acb3aade8fae984f7293e222dcbe66030">m_InputGateBias</a></td></tr>
+<tr class="separator:acb3aade8fae984f7293e222dcbe66030"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba3ffe91d818266b8785ce971548eb59"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aba3ffe91d818266b8785ce971548eb59">m_ForgetGateBias</a></td></tr>
+<tr class="separator:aba3ffe91d818266b8785ce971548eb59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75980b5795efd899a0c678a06a900c6d"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a75980b5795efd899a0c678a06a900c6d">m_CellBias</a></td></tr>
+<tr class="separator:a75980b5795efd899a0c678a06a900c6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a332551528a4b3534c2d6c89ce816fcd9"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a332551528a4b3534c2d6c89ce816fcd9">m_OutputGateBias</a></td></tr>
+<tr class="separator:a332551528a4b3534c2d6c89ce816fcd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af3c52626a6f05597d82ed095d0765962"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">m_ProjectionWeights</a></td></tr>
+<tr class="separator:af3c52626a6f05597d82ed095d0765962"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ba352eb1fdf6dc5ecf7f2e6b6b48f94"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">m_ProjectionBias</a></td></tr>
+<tr class="separator:a2ba352eb1fdf6dc5ecf7f2e6b6b48f94"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cc28aa4fff6ba9a8abdb340c1abdd57"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a9cc28aa4fff6ba9a8abdb340c1abdd57">m_InputLayerNormWeights</a></td></tr>
+<tr class="separator:a9cc28aa4fff6ba9a8abdb340c1abdd57"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a453a4af385d0c060c9aac990fceaa1ef"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a453a4af385d0c060c9aac990fceaa1ef">m_ForgetLayerNormWeights</a></td></tr>
+<tr class="separator:a453a4af385d0c060c9aac990fceaa1ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a518f0195d0278a892b49649b8860d17f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a518f0195d0278a892b49649b8860d17f">m_CellLayerNormWeights</a></td></tr>
+<tr class="separator:a518f0195d0278a892b49649b8860d17f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3f07e27230d6d99adc2c82ba681df2b"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa3f07e27230d6d99adc2c82ba681df2b">m_OutputLayerNormWeights</a></td></tr>
+<tr class="separator:aa3f07e27230d6d99adc2c82ba681df2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_structarmnn_1_1_queue_descriptor_with_parameters"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_structarmnn_1_1_queue_descriptor_with_parameters')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml">QueueDescriptorWithParameters&lt; QLstmDescriptor &gt;</a></td></tr>
+<tr class="memitem:aad91b9bbf7aa365d304febe79a3d1333 inherit pub_attribs_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_q_lstm_descriptor.xhtml">QLstmDescriptor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a></td></tr>
+<tr class="separator:aad91b9bbf7aa365d304febe79a3d1333 inherit pub_attribs_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_structarmnn_1_1_queue_descriptor"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_structarmnn_1_1_queue_descriptor')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a></td></tr>
+<tr class="memitem:a4b50e46a6810018f3edecfb68b2a76b3 inherit pub_attribs_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#a4b50e46a6810018f3edecfb68b2a76b3">m_Inputs</a></td></tr>
+<tr class="separator:a4b50e46a6810018f3edecfb68b2a76b3 inherit pub_attribs_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6abd491bb99ffe88bd472c1ae5a1ed1a inherit pub_attribs_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#a6abd491bb99ffe88bd472c1ae5a1ed1a">m_Outputs</a></td></tr>
+<tr class="separator:a6abd491bb99ffe88bd472c1ae5a1ed1a inherit pub_attribs_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f2e6134cabedfc58aa53fe38a2b8a67 inherit pub_attribs_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#a2f2e6134cabedfc58aa53fe38a2b8a67">m_AdditionalInfoObject</a></td></tr>
+<tr class="separator:a2f2e6134cabedfc58aa53fe38a2b8a67 inherit pub_attribs_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_structarmnn_1_1_queue_descriptor_with_parameters')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml">QueueDescriptorWithParameters&lt; QLstmDescriptor &gt;</a></td></tr>
+<tr class="memitem:a52679b441422256016dc6f5b5e9193d5 inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#a52679b441422256016dc6f5b5e9193d5">~QueueDescriptorWithParameters</a> ()=default</td></tr>
+<tr class="separator:a52679b441422256016dc6f5b5e9193d5 inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f269eb32757efa5b203091c52e985fd inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#a6f269eb32757efa5b203091c52e985fd">QueueDescriptorWithParameters</a> ()=default</td></tr>
+<tr class="separator:a6f269eb32757efa5b203091c52e985fd inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6cbdcaa9cab857077a3810788e2cf489 inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#a6cbdcaa9cab857077a3810788e2cf489">QueueDescriptorWithParameters</a> (<a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml">QueueDescriptorWithParameters</a> const &amp;)=default</td></tr>
+<tr class="separator:a6cbdcaa9cab857077a3810788e2cf489 inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa86bd03df9faf133a34e263f16486707 inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml">QueueDescriptorWithParameters</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aa86bd03df9faf133a34e263f16486707">operator=</a> (<a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml">QueueDescriptorWithParameters</a> const &amp;)=default</td></tr>
+<tr class="separator:aa86bd03df9faf133a34e263f16486707 inherit pro_methods_structarmnn_1_1_queue_descriptor_with_parameters"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pro_methods_structarmnn_1_1_queue_descriptor"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_structarmnn_1_1_queue_descriptor')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a></td></tr>
+<tr class="memitem:af67c3785421c91d37fb22132d441f704 inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#af67c3785421c91d37fb22132d441f704">~QueueDescriptor</a> ()=default</td></tr>
+<tr class="separator:af67c3785421c91d37fb22132d441f704 inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab088ef357662bcea45cbd49674ad0ff7 inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#ab088ef357662bcea45cbd49674ad0ff7">QueueDescriptor</a> ()</td></tr>
+<tr class="separator:ab088ef357662bcea45cbd49674ad0ff7 inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75d3b85e1e50b1dff74ee84a593d089e inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#a75d3b85e1e50b1dff74ee84a593d089e">QueueDescriptor</a> (<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a> const &amp;)=default</td></tr>
+<tr class="separator:a75d3b85e1e50b1dff74ee84a593d089e inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c928b975a0de05cf2536c721ba6b521 inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml#a1c928b975a0de05cf2536c721ba6b521">operator=</a> (<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a> const &amp;)=default</td></tr>
+<tr class="separator:a1c928b975a0de05cf2536c721ba6b521 inherit pro_methods_structarmnn_1_1_queue_descriptor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock">
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00552">552</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ae632fa69e135c7871fcecf4658a0a634"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae632fa69e135c7871fcecf4658a0a634">&#9670;&nbsp;</a></span>QLstmQueueDescriptor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml">QLstmQueueDescriptor</a> </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00554">554</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; : <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a08a1932be591c315a512a877d38b22df">m_InputToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ea82566d98c5a657c76c3d851c47848">m_InputToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a28ad98d17603fd8b12e046f8ece58970">m_InputToCellWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a83dc9086b2e4a4e4cadb66bd874df798">m_InputToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a98d377149071d8842d610cc0734d1cfe">m_RecurrentToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a45d73e66cbb2b65049e4016c20657ccf">m_RecurrentToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aea142bd50ffb93631c2e08324ec92a1e">m_RecurrentToCellWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adebc1771e5a1f4b113a7aa594ea74d2c">m_RecurrentToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5c1c0a7ead7273788976c9e97cffaab7">m_CellToInputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acefa49d7faf26933e27e473e7bdb4175">m_CellToForgetWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6f74071b0e07bbe2cb20a8f78826e084">m_CellToOutputWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acb3aade8fae984f7293e222dcbe66030">m_InputGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aba3ffe91d818266b8785ce971548eb59">m_ForgetGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a75980b5795efd899a0c678a06a900c6d">m_CellBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a332551528a4b3534c2d6c89ce816fcd9">m_OutputGateBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">m_ProjectionWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">m_ProjectionBias</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a9cc28aa4fff6ba9a8abdb340c1abdd57">m_InputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a453a4af385d0c060c9aac990fceaa1ef">m_ForgetLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a518f0195d0278a892b49649b8860d17f">m_CellLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; , <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa3f07e27230d6d99adc2c82ba681df2b">m_OutputLayerNormWeights</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_acefa49d7faf26933e27e473e7bdb4175"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acefa49d7faf26933e27e473e7bdb4175">armnn::QLstmQueueDescriptor::m_CellToForgetWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00588">WorkloadData.hpp:588</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_af3c52626a6f05597d82ed095d0765962"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">armnn::QLstmQueueDescriptor::m_ProjectionWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ProjectionWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00594">WorkloadData.hpp:594</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a2ba352eb1fdf6dc5ecf7f2e6b6b48f94"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">armnn::QLstmQueueDescriptor::m_ProjectionBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ProjectionBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00595">WorkloadData.hpp:595</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a453a4af385d0c060c9aac990fceaa1ef"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a453a4af385d0c060c9aac990fceaa1ef">armnn::QLstmQueueDescriptor::m_ForgetLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ForgetLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00597">WorkloadData.hpp:597</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a518f0195d0278a892b49649b8860d17f"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a518f0195d0278a892b49649b8860d17f">armnn::QLstmQueueDescriptor::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00598">WorkloadData.hpp:598</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aea142bd50ffb93631c2e08324ec92a1e"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aea142bd50ffb93631c2e08324ec92a1e">armnn::QLstmQueueDescriptor::m_RecurrentToCellWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00585">WorkloadData.hpp:585</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a98d377149071d8842d610cc0734d1cfe"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a98d377149071d8842d610cc0734d1cfe">armnn::QLstmQueueDescriptor::m_RecurrentToInputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00583">WorkloadData.hpp:583</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a332551528a4b3534c2d6c89ce816fcd9"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a332551528a4b3534c2d6c89ce816fcd9">armnn::QLstmQueueDescriptor::m_OutputGateBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_OutputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00593">WorkloadData.hpp:593</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a75980b5795efd899a0c678a06a900c6d"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a75980b5795efd899a0c678a06a900c6d">armnn::QLstmQueueDescriptor::m_CellBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00592">WorkloadData.hpp:592</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a6f74071b0e07bbe2cb20a8f78826e084"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6f74071b0e07bbe2cb20a8f78826e084">armnn::QLstmQueueDescriptor::m_CellToOutputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00589">WorkloadData.hpp:589</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aa3f07e27230d6d99adc2c82ba681df2b"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa3f07e27230d6d99adc2c82ba681df2b">armnn::QLstmQueueDescriptor::m_OutputLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_OutputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00599">WorkloadData.hpp:599</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a3ea82566d98c5a657c76c3d851c47848"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ea82566d98c5a657c76c3d851c47848">armnn::QLstmQueueDescriptor::m_InputToForgetWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00580">WorkloadData.hpp:580</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a5c1c0a7ead7273788976c9e97cffaab7"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5c1c0a7ead7273788976c9e97cffaab7">armnn::QLstmQueueDescriptor::m_CellToInputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00587">WorkloadData.hpp:587</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_adebc1771e5a1f4b113a7aa594ea74d2c"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adebc1771e5a1f4b113a7aa594ea74d2c">armnn::QLstmQueueDescriptor::m_RecurrentToOutputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00586">WorkloadData.hpp:586</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_acb3aade8fae984f7293e222dcbe66030"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acb3aade8fae984f7293e222dcbe66030">armnn::QLstmQueueDescriptor::m_InputGateBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00590">WorkloadData.hpp:590</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a9cc28aa4fff6ba9a8abdb340c1abdd57"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a9cc28aa4fff6ba9a8abdb340c1abdd57">armnn::QLstmQueueDescriptor::m_InputLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00596">WorkloadData.hpp:596</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a45d73e66cbb2b65049e4016c20657ccf"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a45d73e66cbb2b65049e4016c20657ccf">armnn::QLstmQueueDescriptor::m_RecurrentToForgetWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00584">WorkloadData.hpp:584</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aba3ffe91d818266b8785ce971548eb59"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aba3ffe91d818266b8785ce971548eb59">armnn::QLstmQueueDescriptor::m_ForgetGateBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ForgetGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00591">WorkloadData.hpp:591</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a83dc9086b2e4a4e4cadb66bd874df798"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a83dc9086b2e4a4e4cadb66bd874df798">armnn::QLstmQueueDescriptor::m_InputToOutputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00582">WorkloadData.hpp:582</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a08a1932be591c315a512a877d38b22df"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a08a1932be591c315a512a877d38b22df">armnn::QLstmQueueDescriptor::m_InputToInputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00579">WorkloadData.hpp:579</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a28ad98d17603fd8b12e046f8ece58970"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a28ad98d17603fd8b12e046f8ece58970">armnn::QLstmQueueDescriptor::m_InputToCellWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00581">WorkloadData.hpp:581</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a041e495449e22774a34d92b0904c10bf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a041e495449e22774a34d92b0904c10bf">&#9670;&nbsp;</a></span>Validate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Validate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>workloadInfo</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.xhtml#l02916">2916</a> of file <a class="el" href="_workload_data_8cpp_source.xhtml">WorkloadData.cpp</a>.</p>
+
+<p class="reference">References <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>.</p>
+<div class="fragment"><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160;{</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">&quot;QLstmQueueDescriptor&quot;</span>};</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160;</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; <span class="comment">// Validate number of inputs/outputs</span></div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; ValidateNumInputs(workloadInfo, descriptorName, 3);</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; ValidateNumOutputs(workloadInfo, descriptorName, 3);</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160;</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; <span class="comment">// Input/output tensor info</span></div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; <span class="keyword">auto</span> inputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160; <span class="keyword">auto</span> outputStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; <span class="keyword">auto</span> cellStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2];</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; <span class="keyword">auto</span> outputStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; <span class="keyword">auto</span> cellStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[1];</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; <span class="keyword">auto</span> outputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.xhtml#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2];</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160; <span class="comment">// Supported types for various tensors in QLSTM</span></div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; std::vector&lt;DataType&gt; inputOutputSupportedTypes =</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; {</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; };</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160;</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; std::vector&lt;DataType&gt; cellStateSupportedTypes =</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; {</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; };</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160;</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; std::vector&lt;DataType&gt; weightsSupportedTypes =</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160; {</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a></div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; };</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160;</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160; std::vector&lt;DataType&gt; layerNormPeepholeWeightsSupportedTypes =</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160; {</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; };</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160;</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; std::vector&lt;DataType&gt; biasSupportedTypes =</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160; {</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a></div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160; };</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160;</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; <span class="comment">// Validate types of input/output tensors</span></div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; ValidateDataTypes(inputInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160; ValidateDataTypes(outputStateInInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; ValidateDataTypes(cellStateInInfo, cellStateSupportedTypes, descriptorName);</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160; ValidateDataTypes(outputStateOutInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160; ValidateDataTypes(cellStateOutInfo, cellStateSupportedTypes, descriptorName);</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160; ValidateDataTypes(outputInfo, inputOutputSupportedTypes, descriptorName);</div><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160;</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160; <span class="comment">// Validate matching types of input/output tensors</span></div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; ValidateTensorDataTypesMatch(inputInfo, outputStateInInfo, descriptorName, <span class="stringliteral">&quot;input&quot;</span>, <span class="stringliteral">&quot;outputStateIn&quot;</span>);</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160; ValidateTensorDataTypesMatch(outputStateInInfo, outputStateOutInfo, descriptorName,</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; <span class="stringliteral">&quot;outputStateIn&quot;</span>, <span class="stringliteral">&quot;outputStateOut&quot;</span>);</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160; ValidateTensorDataTypesMatch(cellStateInInfo, cellStateOutInfo, descriptorName, <span class="stringliteral">&quot;cellStateIn&quot;</span>, <span class="stringliteral">&quot;cellStateOut&quot;</span>);</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160;</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; <span class="comment">// Infer number of batches, number of units, input size and output size from tensor dimensions</span></div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; <span class="keyword">const</span> uint32_t numBatches = inputInfo.GetShape()[0];</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160; <span class="keyword">const</span> uint32_t inputSize = inputInfo.GetShape()[1];</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; <span class="keyword">const</span> uint32_t outputSize = outputStateInInfo.GetShape()[1];</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160; <span class="keyword">const</span> uint32_t numUnits = cellStateInInfo.GetShape()[1];</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160;</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for input/output tensors</span></div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; ValidateTensorNumDimNumElem(inputInfo, 2, (numBatches * inputSize), descriptorName + <span class="stringliteral">&quot; input&quot;</span>);</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160; ValidateTensorNumDimNumElem(outputStateInInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; outputStateIn&quot;</span>);</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; ValidateTensorNumDimNumElem(cellStateInInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">&quot; cellStateIn&quot;</span>);</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; ValidateTensorNumDimNumElem(outputStateOutInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; outputStateOut&quot;</span>);</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160; ValidateTensorNumDimNumElem(cellStateOutInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">&quot; cellStateOut&quot;</span>);</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160; ValidateTensorNumDimNumElem(outputInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; output&quot;</span>);</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160;</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for MANDATORY weight tensors</span></div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ea82566d98c5a657c76c3d851c47848">m_InputToForgetWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToForgetWeights&quot;</span>);</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160; <span class="keyword">auto</span> inputToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ea82566d98c5a657c76c3d851c47848">m_InputToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; ValidateTensorNumDimNumElem(inputToForgetWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToForgetWeights&quot;</span>);</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160;</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a28ad98d17603fd8b12e046f8ece58970">m_InputToCellWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToCellWeights&quot;</span>);</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; <span class="keyword">auto</span> inputToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a28ad98d17603fd8b12e046f8ece58970">m_InputToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; ValidateTensorNumDimNumElem(inputToCellWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToCellWeights&quot;</span>);</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a83dc9086b2e4a4e4cadb66bd874df798">m_InputToOutputWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToOutputWeights&quot;</span>);</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160; <span class="keyword">auto</span> inputToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a83dc9086b2e4a4e4cadb66bd874df798">m_InputToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; ValidateTensorNumDimNumElem(inputToOutputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToOutputWeights&quot;</span>);</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a45d73e66cbb2b65049e4016c20657ccf">m_RecurrentToForgetWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToForgetWeights&quot;</span>);</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; <span class="keyword">auto</span> recurrentToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a45d73e66cbb2b65049e4016c20657ccf">m_RecurrentToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160; ValidateTensorNumDimNumElem(recurrentToForgetWeightsInfo, 2, (numUnits * outputSize),</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; <span class="stringliteral">&quot; RecurrentToForgetWeights&quot;</span>);</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160;</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aea142bd50ffb93631c2e08324ec92a1e">m_RecurrentToCellWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToCellWeights&quot;</span>);</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160; <span class="keyword">auto</span> recurrentToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aea142bd50ffb93631c2e08324ec92a1e">m_RecurrentToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; ValidateTensorNumDimNumElem(recurrentToCellWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot; RecurrentToCellWeights&quot;</span>);</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160;</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adebc1771e5a1f4b113a7aa594ea74d2c">m_RecurrentToOutputWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToOutputWeights&quot;</span>);</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; <span class="keyword">auto</span> recurrentToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adebc1771e5a1f4b113a7aa594ea74d2c">m_RecurrentToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; ValidateTensorNumDimNumElem(recurrentToOutputWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot; RecurrentToCellWeights&quot;</span>);</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160;</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160; <span class="comment">// Validate data types for MANDATORY weights tensors (all should match each other)</span></div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160; ValidateDataTypes(inputToForgetWeightsInfo, weightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160;</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToCellWeightsInfo, descriptorName,</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToCellWeights&quot;</span>);</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToOutputWeightsInfo, descriptorName,</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToOutputWeights&quot;</span>);</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160;</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToForgetWeightsInfo, descriptorName,</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToForgeteights&quot;</span>);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToCellWeightsInfo, descriptorName,</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToCellWeights&quot;</span>);</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToOutputWeightsInfo, descriptorName,</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToOutputWeights&quot;</span>);</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for MANDATORY bias tensors</span></div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aba3ffe91d818266b8785ce971548eb59">m_ForgetGateBias</a>, descriptorName, <span class="stringliteral">&quot;ForgetGateBias&quot;</span>);</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; <span class="keyword">auto</span> forgetGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aba3ffe91d818266b8785ce971548eb59">m_ForgetGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; ValidateTensorNumDimNumElem(forgetGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; ForgetGateBias&quot;</span>);</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a75980b5795efd899a0c678a06a900c6d">m_CellBias</a>, descriptorName, <span class="stringliteral">&quot;CellBias&quot;</span>);</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; <span class="keyword">auto</span> cellBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a75980b5795efd899a0c678a06a900c6d">m_CellBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160; ValidateTensorNumDimNumElem(cellBiasInfo, 1, numUnits, <span class="stringliteral">&quot; CellBias&quot;</span>);</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160;</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a332551528a4b3534c2d6c89ce816fcd9">m_OutputGateBias</a>, descriptorName, <span class="stringliteral">&quot;OutputGateBias&quot;</span>);</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; <span class="keyword">auto</span> outputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a332551528a4b3534c2d6c89ce816fcd9">m_OutputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; ValidateTensorNumDimNumElem(outputGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; OutputGateBias&quot;</span>);</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160; <span class="comment">// Validate data types for MANDATORY bias tensors</span></div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; ValidateDataTypes(forgetGateBiasInfo, biasSupportedTypes, descriptorName);</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160;</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, cellBiasInfo, descriptorName,</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;cellBias&quot;</span>);</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, outputGateBiasInfo, descriptorName,</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;outputGateBias&quot;</span>);</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160;</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; <span class="comment">// Validate OPTIONAL params: CIFG (inputToInputWeights, recurrentToInputWeights, inputGateBias)</span></div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allCifgParamsPresentOrNot = ((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a08a1932be591c315a512a877d38b22df">m_InputToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a98d377149071d8842d610cc0734d1cfe">m_RecurrentToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acb3aade8fae984f7293e222dcbe66030">m_InputGateBias</a> &amp;&amp;</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a08a1932be591c315a512a877d38b22df">m_InputToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a98d377149071d8842d610cc0734d1cfe">m_RecurrentToInputWeights</a> &amp;&amp;</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acb3aade8fae984f7293e222dcbe66030">m_InputGateBias</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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; <span class="keywordflow">if</span> (!allCifgParamsPresentOrNot)</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160; {</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160; <span class="stringliteral">&quot;: InputToInputWeights, RecurrentToInputWeights and InputGateBias must either all be present &quot;</span></div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160; <span class="stringliteral">&quot;(CIFG disabled) or not be present at all (CIFG enabled). m_Parameters.m_CifgEnabled should be &quot;</span></div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; <span class="stringliteral">&quot;set appropriately.&quot;</span>);</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; }</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; {</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160; <span class="comment">// Validate number of dimensions and number of elements</span></div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; <span class="keyword">auto</span> inputToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a08a1932be591c315a512a877d38b22df">m_InputToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; ValidateTensorNumDimNumElem(inputToInputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToInputWeights&quot;</span>);</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160; <span class="keyword">auto</span> recurrentToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a98d377149071d8842d610cc0734d1cfe">m_RecurrentToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160; ValidateTensorNumDimNumElem(recurrentToInputWeightsInfo, 2, (numUnits * outputSize),</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160; <span class="stringliteral">&quot; RecurrentToInputWeights&quot;</span>);</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160;</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; <span class="keyword">auto</span> inputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acb3aade8fae984f7293e222dcbe66030">m_InputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; ValidateTensorNumDimNumElem(inputGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; InputGateBias&quot;</span>);</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160;</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; <span class="comment">// Validate data types</span></div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToInputWeightsInfo, descriptorName,</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToInputWeights&quot;</span>);</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToInputWeightsInfo, descriptorName,</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToInputWeights&quot;</span>);</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, inputGateBiasInfo, descriptorName,</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;inputGateBias&quot;</span>);</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; }</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160;</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; <span class="comment">// Validate OPTIONAL params: Peephole (cellToInputWeights, cellToForgetWeights, cellToOutputWeights)</span></div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; <span class="keywordtype">bool</span> allPeepholeWeightsPresentOrNot =</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160; (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5c1c0a7ead7273788976c9e97cffaab7">m_CellToInputWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acefa49d7faf26933e27e473e7bdb4175">m_CellToForgetWeights</a></div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6f74071b0e07bbe2cb20a8f78826e084">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_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5c1c0a7ead7273788976c9e97cffaab7">m_CellToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acefa49d7faf26933e27e473e7bdb4175">m_CellToForgetWeights</a></div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6f74071b0e07bbe2cb20a8f78826e084">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_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160;</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; <span class="keywordflow">if</span> (!allPeepholeWeightsPresentOrNot)</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; {</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160; <span class="stringliteral">&quot;: CellToInputWeights, CellToForgetWeights and CellToOutputWeights should all be present (Peephole &quot;</span></div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; <span class="stringliteral">&quot;enabled) or not be present at all (Peephole disabled). CellToInputWeights should only be present &quot;</span></div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; <span class="stringliteral">&quot;when Peephole is enabled and CIFG is disabled. m_Parameters.m_PeepholeEnabled should be set &quot;</span></div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; <span class="stringliteral">&quot;appropriately.&quot;</span>);</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; }</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</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_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160; {</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; <span class="keyword">auto</span> cellToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acefa49d7faf26933e27e473e7bdb4175">m_CellToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; ValidateTensorNumDimNumElem(cellToForgetWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToForgetWeights&quot;</span>);</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; ValidateDataTypes(cellToForgetWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160; <span class="keyword">auto</span> cellToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6f74071b0e07bbe2cb20a8f78826e084">m_CellToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160; ValidateTensorNumDimNumElem(cellToOutputWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToOutputWeights&quot;</span>);</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToOutputWeightsInfo, descriptorName,</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160; <span class="stringliteral">&quot;cellToForgetWeight&quot;</span>, <span class="stringliteral">&quot;cellToOutputWeights&quot;</span>);</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160;</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160; {</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160; <span class="keyword">auto</span> cellToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5c1c0a7ead7273788976c9e97cffaab7">m_CellToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160; ValidateTensorNumDimNumElem(cellToInputWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToInputWeights&quot;</span>);</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160; ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToInputWeightsInfo, descriptorName,</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160; <span class="stringliteral">&quot;cellToForgetWeights&quot;</span>, <span class="stringliteral">&quot;cellToInputWeights&quot;</span>);</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; }</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160; }</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160; <span class="comment">// Validate OPTIONAL params: Layer Norm Weights</span></div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160; <span class="keywordtype">bool</span> allLayerNormWeightsPresentOrNot =</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a9cc28aa4fff6ba9a8abdb340c1abdd57">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a453a4af385d0c060c9aac990fceaa1ef">m_ForgetLayerNormWeights</a></div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a518f0195d0278a892b49649b8860d17f">m_CellLayerNormWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa3f07e27230d6d99adc2c82ba681df2b">m_OutputLayerNormWeights</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_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160; || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a9cc28aa4fff6ba9a8abdb340c1abdd57">m_InputLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a453a4af385d0c060c9aac990fceaa1ef">m_ForgetLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a518f0195d0278a892b49649b8860d17f">m_CellLayerNormWeights</a></div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa3f07e27230d6d99adc2c82ba681df2b">m_OutputLayerNormWeights</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_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>));</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160;</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160; <span class="keywordflow">if</span> (!allLayerNormWeightsPresentOrNot)</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160; {</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160; <span class="stringliteral">&quot;: InputLayerNormWeights, ForgetLayerNormWeights, m_OutputLayerNormWeights &quot;</span></div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160; <span class="stringliteral">&quot;and CellLayerNormWeights should all be present (Layer Norm enabled) or not &quot;</span></div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160; <span class="stringliteral">&quot;be present at all (Layer Norm disabled). InputLayerNormWeights should &quot;</span></div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160; <span class="stringliteral">&quot;only be present when Layer Norm is enabled and CIFG is disabled. &quot;</span></div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>&#160; <span class="stringliteral">&quot;m_Parameters.m_LayerNormEnabled should be set appropriately.&quot;</span>);</div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160; }</div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160;</div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</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_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160; {</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160; <span class="keyword">auto</span> forgetLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a453a4af385d0c060c9aac990fceaa1ef">m_ForgetLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160; ValidateTensorNumDimNumElem(forgetLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; forgetLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160; ValidateDataTypes(forgetLayerNormWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160;</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160; <span class="keyword">auto</span> cellLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a518f0195d0278a892b49649b8860d17f">m_CellLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160; ValidateTensorNumDimNumElem(cellLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, cellLayerNormWeightsInfo, descriptorName,</div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;cellLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160;</div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; <span class="keyword">auto</span> outputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa3f07e27230d6d99adc2c82ba681df2b">m_OutputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; ValidateTensorNumDimNumElem(outputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; outputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, outputLayerNormWeightsInfo, descriptorName,</div><div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;outputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160;</div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</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_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160; {</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; <span class="keyword">auto</span> inputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a9cc28aa4fff6ba9a8abdb340c1abdd57">m_InputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; ValidateTensorNumDimNumElem(inputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; inputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, inputLayerNormWeightsInfo, descriptorName,</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;inputLayerNormWeights&quot;</span>);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; }</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; }</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160;</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; <span class="comment">// Validate OPTIONAL params: Projection (projectionWeights, projectionBias)</span></div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; <span class="keywordtype">bool</span> correctProjectionTensorsPresent =</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; ((!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">m_ProjectionBias</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_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">m_ProjectionBias</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_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">m_ProjectionWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">m_ProjectionBias</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_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160;</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; <span class="keywordflow">if</span> (!correctProjectionTensorsPresent)</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160; {</div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; <span class="stringliteral">&quot;: If projection is enabled, ProjectionWeights should be present and &quot;</span></div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; <span class="stringliteral">&quot;ProjectionBias is optional. If projection is disabled, neither &quot;</span></div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; <span class="stringliteral">&quot;ProjectionWeights nor ProjectionBias should be present.&quot;</span>);</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; }</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160;</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</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_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160; {</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160; <span class="keyword">auto</span> projectionWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">m_ProjectionWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; ValidateTensorNumDimNumElem(projectionWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot;ProjectionWeights&quot;</span>);</div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160; ValidateDataTypes(projectionWeightsInfo, weightsSupportedTypes, descriptorName);</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160;</div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">m_ProjectionBias</a>)</div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160; {</div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160; <span class="keyword">auto</span> projectionBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">m_ProjectionBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160; ValidateTensorNumDimNumElem(projectionBiasInfo, 1, outputSize, <span class="stringliteral">&quot;ProjectionBias&quot;</span>);</div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160; ValidateDataTypes(projectionBiasInfo, biasSupportedTypes, descriptorName);</div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160; }</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160;</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; }</div><div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((outputInfo.GetQuantizationScale() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#af8f724af7210b52529216feefa993c98">m_HiddenStateScale</a>) &amp;&amp;</div><div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; outputInfo.GetQuantizationOffset() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4556cbd764d4848d8ad0637a9eed580d">m_HiddenStateZeroPoint</a>) {</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(descriptorName +</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; <span class="stringliteral">&quot;: If projection is disabled, output quantization info (scale, offset) &quot;</span></div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; <span class="stringliteral">&quot;should match HiddenStateScale and HiddenStateZeroPoint.&quot;</span>);</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160; }</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160;</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_acefa49d7faf26933e27e473e7bdb4175"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acefa49d7faf26933e27e473e7bdb4175">armnn::QLstmQueueDescriptor::m_CellToForgetWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00588">WorkloadData.hpp:588</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_af3c52626a6f05597d82ed095d0765962"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#af3c52626a6f05597d82ed095d0765962">armnn::QLstmQueueDescriptor::m_ProjectionWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ProjectionWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00594">WorkloadData.hpp:594</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_a2837b4396f20c956952d1a7286cab5f8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a2837b4396f20c956952d1a7286cab5f8">armnn::QLstmDescriptor::m_PeepholeEnabled</a></div><div class="ttdeci">bool m_PeepholeEnabled</div><div class="ttdoc">Enable/disable peephole. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01193">Descriptors.hpp:1193</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a2ba352eb1fdf6dc5ecf7f2e6b6b48f94"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">armnn::QLstmQueueDescriptor::m_ProjectionBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ProjectionBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00595">WorkloadData.hpp:595</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_af8f724af7210b52529216feefa993c98"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#af8f724af7210b52529216feefa993c98">armnn::QLstmDescriptor::m_HiddenStateScale</a></div><div class="ttdeci">float m_HiddenStateScale</div><div class="ttdoc">Hidden State quantization scale. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01209">Descriptors.hpp:1209</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a453a4af385d0c060c9aac990fceaa1ef"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a453a4af385d0c060c9aac990fceaa1ef">armnn::QLstmQueueDescriptor::m_ForgetLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ForgetLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00597">WorkloadData.hpp:597</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a518f0195d0278a892b49649b8860d17f"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a518f0195d0278a892b49649b8860d17f">armnn::QLstmQueueDescriptor::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00598">WorkloadData.hpp:598</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aea142bd50ffb93631c2e08324ec92a1e"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aea142bd50ffb93631c2e08324ec92a1e">armnn::QLstmQueueDescriptor::m_RecurrentToCellWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00585">WorkloadData.hpp:585</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a98d377149071d8842d610cc0734d1cfe"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a98d377149071d8842d610cc0734d1cfe">armnn::QLstmQueueDescriptor::m_RecurrentToInputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00583">WorkloadData.hpp:583</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a332551528a4b3534c2d6c89ce816fcd9"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a332551528a4b3534c2d6c89ce816fcd9">armnn::QLstmQueueDescriptor::m_OutputGateBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_OutputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00593">WorkloadData.hpp:593</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a75980b5795efd899a0c678a06a900c6d"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a75980b5795efd899a0c678a06a900c6d">armnn::QLstmQueueDescriptor::m_CellBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00592">WorkloadData.hpp:592</a></div></div>
+<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters&lt; QLstmDescriptor &gt;::m_Parameters</a></div><div class="ttdeci">QLstmDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00057">WorkloadData.hpp:57</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a6f74071b0e07bbe2cb20a8f78826e084"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a6f74071b0e07bbe2cb20a8f78826e084">armnn::QLstmQueueDescriptor::m_CellToOutputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00589">WorkloadData.hpp:589</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aa3f07e27230d6d99adc2c82ba681df2b"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aa3f07e27230d6d99adc2c82ba681df2b">armnn::QLstmQueueDescriptor::m_OutputLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_OutputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00599">WorkloadData.hpp:599</a></div></div>
+<div class="ttc" id="structarmnn_1_1_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_q_lstm_descriptor_xhtml_a4a8ec49f130084445d44297549254780"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4a8ec49f130084445d44297549254780">armnn::QLstmDescriptor::m_LayerNormEnabled</a></div><div class="ttdeci">bool m_LayerNormEnabled</div><div class="ttdoc">Enable/disable layer normalization. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01197">Descriptors.hpp:1197</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a3ea82566d98c5a657c76c3d851c47848"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a3ea82566d98c5a657c76c3d851c47848">armnn::QLstmQueueDescriptor::m_InputToForgetWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00580">WorkloadData.hpp:580</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_q_lstm_queue_descriptor_xhtml_a5c1c0a7ead7273788976c9e97cffaab7"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a5c1c0a7ead7273788976c9e97cffaab7">armnn::QLstmQueueDescriptor::m_CellToInputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00587">WorkloadData.hpp:587</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_adebc1771e5a1f4b113a7aa594ea74d2c"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#adebc1771e5a1f4b113a7aa594ea74d2c">armnn::QLstmQueueDescriptor::m_RecurrentToOutputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00586">WorkloadData.hpp:586</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_a6c9de81fc65b3c4924cab11907075a17"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a6c9de81fc65b3c4924cab11907075a17">armnn::QLstmDescriptor::m_ProjectionEnabled</a></div><div class="ttdeci">bool m_ProjectionEnabled</div><div class="ttdoc">Enable/disable the projection layer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01195">Descriptors.hpp:1195</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_acb3aade8fae984f7293e222dcbe66030"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#acb3aade8fae984f7293e222dcbe66030">armnn::QLstmQueueDescriptor::m_InputGateBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00590">WorkloadData.hpp:590</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a9cc28aa4fff6ba9a8abdb340c1abdd57"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a9cc28aa4fff6ba9a8abdb340c1abdd57">armnn::QLstmQueueDescriptor::m_InputLayerNormWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00596">WorkloadData.hpp:596</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a45d73e66cbb2b65049e4016c20657ccf"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a45d73e66cbb2b65049e4016c20657ccf">armnn::QLstmQueueDescriptor::m_RecurrentToForgetWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_RecurrentToForgetWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00584">WorkloadData.hpp:584</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_aba3ffe91d818266b8785ce971548eb59"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#aba3ffe91d818266b8785ce971548eb59">armnn::QLstmQueueDescriptor::m_ForgetGateBias</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_ForgetGateBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00591">WorkloadData.hpp:591</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a83dc9086b2e4a4e4cadb66bd874df798"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a83dc9086b2e4a4e4cadb66bd874df798">armnn::QLstmQueueDescriptor::m_InputToOutputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToOutputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00582">WorkloadData.hpp:582</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_ad474e5c51a0b194ef32e812b86c0cbdb"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#ad474e5c51a0b194ef32e812b86c0cbdb">armnn::QLstmDescriptor::m_CifgEnabled</a></div><div class="ttdeci">bool m_CifgEnabled</div><div class="ttdoc">Enable/disable CIFG (coupled input &amp; forget gate). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01191">Descriptors.hpp:1191</a></div></div>
+<div class="ttc" id="classarmnn_1_1_const_cpu_tensor_handle_xhtml_a66e8f43a5b42b500871ed96e15419567"><div class="ttname"><a href="classarmnn_1_1_const_cpu_tensor_handle.xhtml#a66e8f43a5b42b500871ed96e15419567">armnn::ConstCpuTensorHandle::GetTensorInfo</a></div><div class="ttdeci">const TensorInfo &amp; GetTensorInfo() const</div><div class="ttdef"><b>Definition:</b> <a href="_cpu_tensor_handle_8hpp_source.xhtml#l00037">CpuTensorHandle.hpp:37</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a08a1932be591c315a512a877d38b22df"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a08a1932be591c315a512a877d38b22df">armnn::QLstmQueueDescriptor::m_InputToInputWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00579">WorkloadData.hpp:579</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_descriptor_xhtml_a4556cbd764d4848d8ad0637a9eed580d"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.xhtml#a4556cbd764d4848d8ad0637a9eed580d">armnn::QLstmDescriptor::m_HiddenStateZeroPoint</a></div><div class="ttdeci">int32_t m_HiddenStateZeroPoint</div><div class="ttdoc">Hidden State zero point. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l01207">Descriptors.hpp:1207</a></div></div>
+<div class="ttc" id="structarmnn_1_1_q_lstm_queue_descriptor_xhtml_a28ad98d17603fd8b12e046f8ece58970"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml#a28ad98d17603fd8b12e046f8ece58970">armnn::QLstmQueueDescriptor::m_InputToCellWeights</a></div><div class="ttdeci">const ConstCpuTensorHandle * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00581">WorkloadData.hpp:581</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a75980b5795efd899a0c678a06a900c6d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a75980b5795efd899a0c678a06a900c6d">&#9670;&nbsp;</a></span>m_CellBias</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_CellBias</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00592">592</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a518f0195d0278a892b49649b8860d17f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a518f0195d0278a892b49649b8860d17f">&#9670;&nbsp;</a></span>m_CellLayerNormWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_CellLayerNormWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00598">598</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="acefa49d7faf26933e27e473e7bdb4175"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acefa49d7faf26933e27e473e7bdb4175">&#9670;&nbsp;</a></span>m_CellToForgetWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_CellToForgetWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00588">588</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a5c1c0a7ead7273788976c9e97cffaab7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c1c0a7ead7273788976c9e97cffaab7">&#9670;&nbsp;</a></span>m_CellToInputWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_CellToInputWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00587">587</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a6f74071b0e07bbe2cb20a8f78826e084"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6f74071b0e07bbe2cb20a8f78826e084">&#9670;&nbsp;</a></span>m_CellToOutputWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_CellToOutputWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00589">589</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="aba3ffe91d818266b8785ce971548eb59"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aba3ffe91d818266b8785ce971548eb59">&#9670;&nbsp;</a></span>m_ForgetGateBias</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_ForgetGateBias</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00591">591</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a453a4af385d0c060c9aac990fceaa1ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a453a4af385d0c060c9aac990fceaa1ef">&#9670;&nbsp;</a></span>m_ForgetLayerNormWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_ForgetLayerNormWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00597">597</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="acb3aade8fae984f7293e222dcbe66030"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acb3aade8fae984f7293e222dcbe66030">&#9670;&nbsp;</a></span>m_InputGateBias</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_InputGateBias</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00590">590</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a9cc28aa4fff6ba9a8abdb340c1abdd57"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9cc28aa4fff6ba9a8abdb340c1abdd57">&#9670;&nbsp;</a></span>m_InputLayerNormWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_InputLayerNormWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00596">596</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a28ad98d17603fd8b12e046f8ece58970"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a28ad98d17603fd8b12e046f8ece58970">&#9670;&nbsp;</a></span>m_InputToCellWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_InputToCellWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00581">581</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a3ea82566d98c5a657c76c3d851c47848"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ea82566d98c5a657c76c3d851c47848">&#9670;&nbsp;</a></span>m_InputToForgetWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_InputToForgetWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00580">580</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a08a1932be591c315a512a877d38b22df"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a08a1932be591c315a512a877d38b22df">&#9670;&nbsp;</a></span>m_InputToInputWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_InputToInputWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00579">579</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a83dc9086b2e4a4e4cadb66bd874df798"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a83dc9086b2e4a4e4cadb66bd874df798">&#9670;&nbsp;</a></span>m_InputToOutputWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_InputToOutputWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00582">582</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a332551528a4b3534c2d6c89ce816fcd9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a332551528a4b3534c2d6c89ce816fcd9">&#9670;&nbsp;</a></span>m_OutputGateBias</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_OutputGateBias</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00593">593</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="aa3f07e27230d6d99adc2c82ba681df2b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa3f07e27230d6d99adc2c82ba681df2b">&#9670;&nbsp;</a></span>m_OutputLayerNormWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_OutputLayerNormWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00599">599</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a2ba352eb1fdf6dc5ecf7f2e6b6b48f94"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2ba352eb1fdf6dc5ecf7f2e6b6b48f94">&#9670;&nbsp;</a></span>m_ProjectionBias</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_ProjectionBias</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00595">595</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="af3c52626a6f05597d82ed095d0765962"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af3c52626a6f05597d82ed095d0765962">&#9670;&nbsp;</a></span>m_ProjectionWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_ProjectionWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00594">594</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="aea142bd50ffb93631c2e08324ec92a1e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aea142bd50ffb93631c2e08324ec92a1e">&#9670;&nbsp;</a></span>m_RecurrentToCellWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_RecurrentToCellWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00585">585</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a45d73e66cbb2b65049e4016c20657ccf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a45d73e66cbb2b65049e4016c20657ccf">&#9670;&nbsp;</a></span>m_RecurrentToForgetWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_RecurrentToForgetWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00584">584</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="a98d377149071d8842d610cc0734d1cfe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a98d377149071d8842d610cc0734d1cfe">&#9670;&nbsp;</a></span>m_RecurrentToInputWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_RecurrentToInputWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00583">583</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<a id="adebc1771e5a1f4b113a7aa594ea74d2c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adebc1771e5a1f4b113a7aa594ea74d2c">&#9670;&nbsp;</a></span>m_RecurrentToOutputWeights</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a>* m_RecurrentToOutputWeights</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00586">586</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.xhtml#l00022">QLstmLayer::CreateWorkload()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following files:<ul>
+<li>src/backends/backendsCommon/<a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a></li>
+<li>src/backends/backendsCommon/<a class="el" href="_workload_data_8cpp_source.xhtml">WorkloadData.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="namespacearmnn.xhtml">armnn</a></li><li class="navelem"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.xhtml">QLstmQueueDescriptor</a></li>
+ <li class="footer">Generated on Thu Feb 25 2021 17:28:00 for ArmNN by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+ </ul>
+</div>
+</body>
+</html>