ArmNN
 20.11
LstmQueueDescriptor Struct Reference

#include <WorkloadData.hpp>

Inheritance diagram for LstmQueueDescriptor:
QueueDescriptorWithParameters< LstmDescriptor > QueueDescriptor

Public Member Functions

 LstmQueueDescriptor ()
 
void Validate (const WorkloadInfo &workloadInfo) const
 
- Public Member Functions inherited from QueueDescriptor
void ValidateInputsOutputs (const std::string &descName, unsigned int numExpectedIn, unsigned int numExpectedOut) const
 
template<typename T >
const T * GetAdditionalInformation () const
 

Public Attributes

const ConstCpuTensorHandlem_InputToInputWeights
 
const ConstCpuTensorHandlem_InputToForgetWeights
 
const ConstCpuTensorHandlem_InputToCellWeights
 
const ConstCpuTensorHandlem_InputToOutputWeights
 
const ConstCpuTensorHandlem_RecurrentToInputWeights
 
const ConstCpuTensorHandlem_RecurrentToForgetWeights
 
const ConstCpuTensorHandlem_RecurrentToCellWeights
 
const ConstCpuTensorHandlem_RecurrentToOutputWeights
 
const ConstCpuTensorHandlem_CellToInputWeights
 
const ConstCpuTensorHandlem_CellToForgetWeights
 
const ConstCpuTensorHandlem_CellToOutputWeights
 
const ConstCpuTensorHandlem_InputGateBias
 
const ConstCpuTensorHandlem_ForgetGateBias
 
const ConstCpuTensorHandlem_CellBias
 
const ConstCpuTensorHandlem_OutputGateBias
 
const ConstCpuTensorHandlem_ProjectionWeights
 
const ConstCpuTensorHandlem_ProjectionBias
 
const ConstCpuTensorHandlem_InputLayerNormWeights
 
const ConstCpuTensorHandlem_ForgetLayerNormWeights
 
const ConstCpuTensorHandlem_CellLayerNormWeights
 
const ConstCpuTensorHandlem_OutputLayerNormWeights
 
- Public Attributes inherited from QueueDescriptorWithParameters< LstmDescriptor >
LstmDescriptor m_Parameters
 
- Public Attributes inherited from QueueDescriptor
std::vector< ITensorHandle * > m_Inputs
 
std::vector< ITensorHandle * > m_Outputs
 
void * m_AdditionalInfoObject
 

Additional Inherited Members

- Protected Member Functions inherited from QueueDescriptorWithParameters< LstmDescriptor >
 ~QueueDescriptorWithParameters ()=default
 
 QueueDescriptorWithParameters ()=default
 
 QueueDescriptorWithParameters (QueueDescriptorWithParameters const &)=default
 
QueueDescriptorWithParametersoperator= (QueueDescriptorWithParameters const &)=default
 
- Protected Member Functions inherited from QueueDescriptor
 ~QueueDescriptor ()=default
 
 QueueDescriptor ()
 
 QueueDescriptor (QueueDescriptor const &)=default
 
QueueDescriptoroperator= (QueueDescriptor const &)=default
 

Detailed Description

Definition at line 387 of file WorkloadData.hpp.

Constructor & Destructor Documentation

◆ LstmQueueDescriptor()

LstmQueueDescriptor ( )
inline

Definition at line 389 of file WorkloadData.hpp.

390  : m_InputToInputWeights(nullptr)
391  , m_InputToForgetWeights(nullptr)
392  , m_InputToCellWeights(nullptr)
393  , m_InputToOutputWeights(nullptr)
394  , m_RecurrentToInputWeights(nullptr)
395  , m_RecurrentToForgetWeights(nullptr)
396  , m_RecurrentToCellWeights(nullptr)
397  , m_RecurrentToOutputWeights(nullptr)
398  , m_CellToInputWeights(nullptr)
399  , m_CellToForgetWeights(nullptr)
400  , m_CellToOutputWeights(nullptr)
401  , m_InputGateBias(nullptr)
402  , m_ForgetGateBias(nullptr)
403  , m_CellBias(nullptr)
404  , m_OutputGateBias(nullptr)
405  , m_ProjectionWeights(nullptr)
406  , m_ProjectionBias(nullptr)
407  , m_InputLayerNormWeights(nullptr)
408  , m_ForgetLayerNormWeights(nullptr)
409  , m_CellLayerNormWeights(nullptr)
410  , m_OutputLayerNormWeights(nullptr)
411  {
412  }
const ConstCpuTensorHandle * m_RecurrentToForgetWeights
const ConstCpuTensorHandle * m_CellToOutputWeights
const ConstCpuTensorHandle * m_InputToCellWeights
const ConstCpuTensorHandle * m_InputToOutputWeights
const ConstCpuTensorHandle * m_ProjectionBias
const ConstCpuTensorHandle * m_OutputGateBias
const ConstCpuTensorHandle * m_CellToInputWeights
const ConstCpuTensorHandle * m_CellLayerNormWeights
const ConstCpuTensorHandle * m_CellToForgetWeights
const ConstCpuTensorHandle * m_CellBias
const ConstCpuTensorHandle * m_RecurrentToInputWeights
const ConstCpuTensorHandle * m_InputLayerNormWeights
const ConstCpuTensorHandle * m_OutputLayerNormWeights
const ConstCpuTensorHandle * m_ForgetGateBias
const ConstCpuTensorHandle * m_InputToInputWeights
const ConstCpuTensorHandle * m_RecurrentToOutputWeights
const ConstCpuTensorHandle * m_ForgetLayerNormWeights
const ConstCpuTensorHandle * m_InputGateBias
const ConstCpuTensorHandle * m_RecurrentToCellWeights
const ConstCpuTensorHandle * m_ProjectionWeights
const ConstCpuTensorHandle * m_InputToForgetWeights

Member Function Documentation

◆ Validate()

void Validate ( const WorkloadInfo workloadInfo) const

Definition at line 1832 of file WorkloadData.cpp.

References armnn::BFloat16, armnn::Float16, armnn::Float32, WorkloadInfo::m_InputTensorInfos, WorkloadInfo::m_OutputTensorInfos, and armnn::QSymmS16.

1833 {
1834  // ported from android/ml/nn/common/operations/LSTM.cpp CheckInputTensorDimensions()
1835 
1836  const std::string descriptorName{"LstmQueueDescriptor"};
1837 
1838  // check dimensions of all inputs and outputs
1839  if (workloadInfo.m_InputTensorInfos.size() != 3)
1840  {
1841  throw InvalidArgumentException(descriptorName + ": Invalid number of inputs.");
1842  }
1843  if (workloadInfo.m_OutputTensorInfos.size() != 4)
1844  {
1845  throw InvalidArgumentException(descriptorName + ": Invalid number of outputs.");
1846  }
1847 
1848  std::vector<DataType> supportedTypes =
1849  {
1854  };
1855 
1856  // check for supported type of one input and match them with all the other input and output
1857  ValidateDataTypes(workloadInfo.m_InputTensorInfos[0], supportedTypes, descriptorName);
1858 
1859  // type matches all other inputs
1860  for (uint32_t i = 1u; i < workloadInfo.m_InputTensorInfos.size(); ++i)
1861  {
1862  ValidateTensorDataTypesMatch(workloadInfo.m_InputTensorInfos[0],
1863  workloadInfo.m_InputTensorInfos[i],
1864  descriptorName,
1865  "input_0",
1866  "input_" + std::to_string(i));
1867  }
1868  // type matches all other outputs
1869  for (uint32_t i = 0u; i < workloadInfo.m_OutputTensorInfos.size(); ++i)
1870  {
1871  ValidateTensorDataTypesMatch(workloadInfo.m_InputTensorInfos[0],
1872  workloadInfo.m_OutputTensorInfos[i],
1873  "LstmQueueDescriptor",
1874  "input_0",
1875  "output_" + std::to_string(i));
1876  }
1877 
1878  // Making sure clipping parameters have valid values.
1879  // == 0 means no clipping
1880  // > 0 means clipping
1881  if (m_Parameters.m_ClippingThresCell < 0.0f)
1882  {
1883  throw InvalidArgumentException(descriptorName + ": negative cell clipping threshold is invalid");
1884  }
1885  if (m_Parameters.m_ClippingThresProj < 0.0f)
1886  {
1887  throw InvalidArgumentException(descriptorName + ": negative projection clipping threshold is invalid");
1888  }
1889 
1890 
1891  // Inferring batch size, number of outputs and number of cells from the inputs.
1892  const uint32_t n_input = workloadInfo.m_InputTensorInfos[0].GetShape()[1];
1893  const uint32_t n_batch = workloadInfo.m_InputTensorInfos[0].GetShape()[0];
1894  ValidatePointer(m_InputToOutputWeights, "Null pointer check", "InputToOutputWeights");
1895  const uint32_t n_cell = m_InputToOutputWeights->GetShape()[0];
1896  ValidatePointer(m_RecurrentToOutputWeights, "Null pointer check", "RecurrentToOutputWeights");
1897  const uint32_t n_output = m_RecurrentToOutputWeights->GetShape()[1];
1898 
1899  // input tensor
1900  ValidateTensorNumDimNumElem(workloadInfo.m_InputTensorInfos[0], 2, (n_batch * n_input),
1901  descriptorName + " input_0");
1902  // outputStateInTensor
1903  ValidateTensorNumDimNumElem(workloadInfo.m_InputTensorInfos[1], 2, (n_batch * n_output),
1904  descriptorName + " input_1");
1905  // outputStateInTensor
1906  ValidateTensorNumDimNumElem(workloadInfo.m_InputTensorInfos[2], 2, (n_batch * n_cell),
1907  descriptorName + " input_2");
1908  // scratchBufferTensor
1909  unsigned int scratchBufferSize = m_Parameters.m_CifgEnabled ? n_cell * 3 : n_cell * 4;
1910  ValidateTensorNumDimNumElem(workloadInfo.m_OutputTensorInfos[0], 2, (n_batch * scratchBufferSize),
1911  descriptorName + " output_0");
1912  // outputStateOutTensor
1913  ValidateTensorNumDimNumElem(workloadInfo.m_OutputTensorInfos[1], 2, (n_batch * n_output),
1914  descriptorName + " output_1");
1915  // cellStateOutTensor
1916  ValidateTensorNumDimNumElem(workloadInfo.m_OutputTensorInfos[2], 2, (n_batch * n_cell),
1917  descriptorName + " output_2");
1918  // outputTensor
1919  ValidateTensorNumDimNumElem(workloadInfo.m_OutputTensorInfos[3], 2, (n_batch * n_output),
1920  descriptorName + " output_3");
1921 
1922 
1923  // check that dimensions of inputs/outputs and QueueDescriptor data match with each other
1924  if ( m_InputToInputWeights )
1925  {
1926  ValidateTensorNumDimNumElem(m_InputToInputWeights->GetTensorInfo(), 2,
1927  (n_cell * n_input), "InputLayerNormWeights");
1928  }
1929 
1930  ValidatePointer(m_InputToForgetWeights, "Null pointer check", "InputToForgetWeights");
1931  ValidateTensorNumDimNumElem(m_InputToForgetWeights->GetTensorInfo(), 2,
1932  (n_cell * n_input), "InputToForgetWeights");
1933 
1934  ValidatePointer(m_InputToCellWeights, "Null pointer check", "InputToCellWeights");
1935  ValidateTensorNumDimNumElem(m_InputToCellWeights->GetTensorInfo(), 2,
1936  (n_cell * n_input), "InputToCellWeights");
1937 
1939  {
1940  ValidateTensorNumDimNumElem(m_RecurrentToInputWeights->GetTensorInfo(), 2,
1941  (n_cell * n_output), "RecurrentToInputWeights");
1942  }
1943 
1944  ValidatePointer(m_RecurrentToForgetWeights, "Null pointer check", "RecurrentToForgetWeights");
1945  ValidateTensorNumDimNumElem(m_RecurrentToForgetWeights->GetTensorInfo(), 2,
1946  (n_cell * n_output), "RecurrentToForgetWeights");
1947 
1948  ValidatePointer(m_RecurrentToCellWeights, "Null pointer check", "RecurrentToCellWeights");
1949  ValidateTensorNumDimNumElem(m_RecurrentToCellWeights->GetTensorInfo(), 2,
1950  (n_cell * n_output), "RecurrentToCellWeights");
1951 
1952  // Make sure the input-gate's parameters are either both present (regular
1953  // LSTM) or not at all (CIFG-LSTM). And CifgEnable is set accordingly.
1954  bool cifg_weights_all_or_none = ((m_InputToInputWeights && m_RecurrentToInputWeights &&
1958  if (!cifg_weights_all_or_none)
1959  {
1960  throw InvalidArgumentException(descriptorName + ": Input-Gate's parameters InputToInputWeights and "
1961  "RecurrentToInputWeights must either both be present (regular LSTM) "
1962  "or both not present (CIFG-LSTM). In addition CifgEnable must be set "
1963  "accordingly.");
1964  }
1965 
1966  if ( m_CellToInputWeights )
1967  {
1968  ValidateTensorNumDimNumElem(m_CellToInputWeights->GetTensorInfo(), 1,
1969  n_cell, "CellToInputWeights");
1970  }
1971  if ( m_CellToForgetWeights )
1972  {
1973  ValidateTensorNumDimNumElem(m_CellToForgetWeights->GetTensorInfo(), 1,
1974  n_cell, "CellToForgetWeights");
1975  }
1976  if ( m_CellToOutputWeights )
1977  {
1978  ValidateTensorNumDimNumElem(m_CellToOutputWeights->GetTensorInfo(), 1,
1979  n_cell, "CellToOutputWeights");
1980  }
1981 
1982  // Making sure the peephole weights are there all or none. And PeepholeEnable is set accordingly.
1983  bool peephole_weights_all_or_none =
1988  if (!peephole_weights_all_or_none)
1989  {
1990  throw InvalidArgumentException(descriptorName + ": Invalid combination of peephole parameters.");
1991  }
1992 
1993  // Make sure the input gate bias is present only when not a CIFG-LSTM.
1995  {
1996  if (m_InputGateBias)
1997  {
1998  throw InvalidArgumentException(descriptorName + ": InputGateBias is present and CIFG-LSTM is enabled.");
1999  }
2000  }
2001  else
2002  {
2003  if (!m_InputGateBias)
2004  {
2005  throw InvalidArgumentException(descriptorName + ": If CIFG-LSTM is disabled InputGateBias "
2006  "must be present.");
2007  }
2008  ValidateTensorNumDimNumElem(m_InputGateBias->GetTensorInfo(), 1,
2009  n_cell, "InputGateBias");
2010  }
2011 
2012  ValidatePointer(m_ForgetGateBias, "Null pointer check", "ForgetGateBias");
2013  ValidateTensorNumDimNumElem(m_ForgetGateBias->GetTensorInfo(), 1, n_cell, "ForgetGateBias");
2014 
2015  ValidatePointer(m_CellBias, "Null pointer check", "CellBias");
2016  ValidateTensorNumDimNumElem(m_CellBias->GetTensorInfo(), 1, n_cell, "CellBias");
2017 
2018  ValidatePointer(m_OutputGateBias, "Null pointer check", "OutputGateBias");
2019  ValidateTensorNumDimNumElem(m_OutputGateBias->GetTensorInfo(), 1, n_cell, "OutputGateBias");
2020 
2021  if (m_ProjectionWeights)
2022  {
2023  ValidateTensorNumDimNumElem(m_ProjectionWeights->GetTensorInfo(), 2,
2024  (n_cell * n_output), "ProjectionWeights");
2025  }
2026  if (m_ProjectionBias)
2027  {
2028  ValidateTensorNumDimNumElem(m_ProjectionBias->GetTensorInfo(), 1, n_output, "ProjectionBias");
2029  }
2030 
2031  // Making sure the projection tensors are consistent:
2032  // 1) If projection weight is not present, then projection bias should not be
2033  // present.
2034  // 2) If projection weight is present, then projection bias is optional.
2035  bool projecton_tensors_consistent = ((!m_ProjectionWeights && !m_ProjectionBias &&
2041  if (!projecton_tensors_consistent)
2042  {
2043  throw InvalidArgumentException(descriptorName + ": Projection tensors are inconsistent.");
2044  }
2045 
2046  // The four layer normalization weights either all have values or none of them have values. Additionally, if
2047  // CIFG is used, input layer normalization weights tensor is omitted and the other layer normalization weights
2048  // either all have values or none of them have values. Layer normalization is used when the values of all the
2049  // layer normalization weights are present
2051  {
2052  ValidateTensorNumDimNumElem(m_InputLayerNormWeights->GetTensorInfo(), 1, n_cell, "InputLayerNormWeights");
2053  }
2055  {
2056  ValidateTensorNumDimNumElem(m_ForgetLayerNormWeights->GetTensorInfo(), 1, n_cell, "ForgetLayerNormWeights");
2057  }
2059  {
2060  ValidateTensorNumDimNumElem(m_CellLayerNormWeights->GetTensorInfo(), 1, n_cell, "CellLayerNormWeights");
2061  }
2063  {
2064  ValidateTensorNumDimNumElem(m_OutputLayerNormWeights->GetTensorInfo(), 1, n_cell, "OutputLayerNormWeights");
2065  }
2066 
2068  {
2070  {
2072  {
2073  throw InvalidArgumentException(descriptorName + ": Layer normalisation is enabled and CIFG-LSTM is "
2074  "disabled but InputLayerNormWeights are not present");
2075  }
2076  ValidateTensorNumDimNumElem(m_InputLayerNormWeights->GetTensorInfo(),
2077  1, n_cell, "InputLayerNormWeights");
2078  }
2079  else if (m_InputLayerNormWeights)
2080  {
2081  throw InvalidArgumentException(descriptorName + ":InputLayerNormWeights are present while CIFG is "
2082  "enabled");
2083  }
2084 
2085  ValidatePointer(m_ForgetLayerNormWeights, "Null pointer check layer normalisation enabled",
2086  "ForgetLayerNormWeights");
2087  ValidateTensorNumDimNumElem(m_ForgetLayerNormWeights->GetTensorInfo(), 1, n_cell, "ForgetLayerNormWeights");
2088 
2089  ValidatePointer(m_OutputLayerNormWeights, "Null pointer check layer normalisation enabled",
2090  "OutputLayerNormWeights");
2091  ValidateTensorNumDimNumElem(m_OutputLayerNormWeights->GetTensorInfo(), 1, n_cell, "OutputLayerNormWeights");
2092 
2093  ValidatePointer(m_CellLayerNormWeights, "Null pointer check layer normalisation enabled",
2094  "CellLayerNormWeights");
2095  ValidateTensorNumDimNumElem(m_CellLayerNormWeights->GetTensorInfo(), 1, n_cell, "CellLayerNormWeights");
2096  }
2098  {
2099  throw InvalidArgumentException(descriptorName + ": Layer normalisation is disabled but one or more layer "
2100  "normalisation weights are present.");
2101  }
2102 }
bool m_ProjectionEnabled
Enable/disable the projection layer.
float m_ClippingThresProj
Clipping threshold value for the projection.
const ConstCpuTensorHandle * m_RecurrentToForgetWeights
const ConstCpuTensorHandle * m_CellToOutputWeights
const ConstCpuTensorHandle * m_InputToCellWeights
const ConstCpuTensorHandle * m_InputToOutputWeights
const ConstCpuTensorHandle * m_ProjectionBias
const ConstCpuTensorHandle * m_OutputGateBias
const ConstCpuTensorHandle * m_CellToInputWeights
const ConstCpuTensorHandle * m_CellLayerNormWeights
const ConstCpuTensorHandle * m_CellToForgetWeights
const ConstCpuTensorHandle * m_CellBias
const ConstCpuTensorHandle * m_RecurrentToInputWeights
std::vector< TensorInfo > m_InputTensorInfos
const ConstCpuTensorHandle * m_InputLayerNormWeights
const ConstCpuTensorHandle * m_OutputLayerNormWeights
const ConstCpuTensorHandle * m_ForgetGateBias
TensorShape GetShape() const override
Get the number of elements for each dimension ordered from slowest iterating dimension to fastest ite...
const ConstCpuTensorHandle * m_InputToInputWeights
bool m_PeepholeEnabled
Enable/disable peephole.
std::vector< TensorInfo > m_OutputTensorInfos
float m_ClippingThresCell
Clipping threshold value for the cell state.
bool m_CifgEnabled
Enable/disable cifg (coupled input & forget gate).
const ConstCpuTensorHandle * m_RecurrentToOutputWeights
const ConstCpuTensorHandle * m_ForgetLayerNormWeights
const ConstCpuTensorHandle * m_InputGateBias
bool m_LayerNormEnabled
Enable/disable layer normalization.
const ConstCpuTensorHandle * m_RecurrentToCellWeights
const TensorInfo & GetTensorInfo() const
const ConstCpuTensorHandle * m_ProjectionWeights
const ConstCpuTensorHandle * m_InputToForgetWeights

Member Data Documentation

◆ m_CellBias

const ConstCpuTensorHandle* m_CellBias

Definition at line 427 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_CellLayerNormWeights

const ConstCpuTensorHandle* m_CellLayerNormWeights

Definition at line 433 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_CellToForgetWeights

const ConstCpuTensorHandle* m_CellToForgetWeights

Definition at line 423 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_CellToInputWeights

const ConstCpuTensorHandle* m_CellToInputWeights

Definition at line 422 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_CellToOutputWeights

const ConstCpuTensorHandle* m_CellToOutputWeights

Definition at line 424 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_ForgetGateBias

const ConstCpuTensorHandle* m_ForgetGateBias

Definition at line 426 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_ForgetLayerNormWeights

const ConstCpuTensorHandle* m_ForgetLayerNormWeights

Definition at line 432 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_InputGateBias

const ConstCpuTensorHandle* m_InputGateBias

Definition at line 425 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_InputLayerNormWeights

const ConstCpuTensorHandle* m_InputLayerNormWeights

Definition at line 431 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_InputToCellWeights

const ConstCpuTensorHandle* m_InputToCellWeights

Definition at line 416 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_InputToForgetWeights

const ConstCpuTensorHandle* m_InputToForgetWeights

Definition at line 415 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_InputToInputWeights

const ConstCpuTensorHandle* m_InputToInputWeights

Definition at line 414 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_InputToOutputWeights

const ConstCpuTensorHandle* m_InputToOutputWeights

Definition at line 417 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_OutputGateBias

const ConstCpuTensorHandle* m_OutputGateBias

Definition at line 428 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_OutputLayerNormWeights

const ConstCpuTensorHandle* m_OutputLayerNormWeights

Definition at line 434 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_ProjectionBias

const ConstCpuTensorHandle* m_ProjectionBias

Definition at line 430 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_ProjectionWeights

const ConstCpuTensorHandle* m_ProjectionWeights

Definition at line 429 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_RecurrentToCellWeights

const ConstCpuTensorHandle* m_RecurrentToCellWeights

Definition at line 420 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_RecurrentToForgetWeights

const ConstCpuTensorHandle* m_RecurrentToForgetWeights

Definition at line 419 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_RecurrentToInputWeights

const ConstCpuTensorHandle* m_RecurrentToInputWeights

Definition at line 418 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().

◆ m_RecurrentToOutputWeights

const ConstCpuTensorHandle* m_RecurrentToOutputWeights

Definition at line 421 of file WorkloadData.hpp.

Referenced by LstmLayer::CreateWorkload().


The documentation for this struct was generated from the following files: