ArmNN
 20.05
LstmTestImpl.hpp File Reference

Go to the source code of this file.

Functions

LayerTestResult< float, 2 > LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< float, 2 > LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< float, 2 > LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< float, 2 > LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNormTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< int16_t, 2 > LstmLayerInt16NoCifgNoPeepholeNoProjectionTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< int16_t, 2 > LstmLayerInt16WithCifgWithPeepholeNoProjectionTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< int16_t, 2 > LstmLayerInt16NoCifgWithPeepholeWithProjectionTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< int16_t, 2 > LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< uint8_t, 2 > QuantizedLstmTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< int8_t, 2 > QLstmTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 

Function Documentation

◆ LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest()

LayerTestResult<float, 2> LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2163 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2166 {
2167  armnn::TensorInfo inputDesc({2, 2}, armnn::DataType::Float32);
2168  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2169  {2., 3., 3., 4.}));
2170 
2171  armnn::TensorInfo outputDesc({2, 4}, armnn::DataType::Float32);
2172  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2173  {{-0.02973187f, 0.1229473f, 0.20885126f, -0.15358765f,
2174  -0.0185422f, 0.11281417f, 0.24466537f, -0.1826292f}}));
2175 
2176  return LstmNoCifgNoPeepholeNoProjectionTestImpl<armnn::DataType::Float32>(
2177  workloadFactory, memoryManager, input, expectedOutput);
2178 }

◆ LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest()

LayerTestResult<float, 2> LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2141 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2144 {
2145  armnn::TensorInfo inputDesc({ 2, 5 }, armnn::DataType::Float32);
2146  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2147  {0.787926f, 0.151646f, 0.071352f, 0.118426f, 0.458058f,
2148  0.295743f, 0.544053f, 0.690064f, 0.858138f, 0.497181f}));
2149 
2150  armnn::TensorInfo outputDesc({ 2, 16 }, armnn::DataType::Float32);
2151  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2152  {-0.00396806f, 0.029352f, -0.00279226f, 0.0159977f, -0.00835576f,
2153  -0.0211779f, 0.0283512f, -0.0114597f, 0.00907307f, -0.0244004f,
2154  -0.0152191f, -0.0259063f, 0.00914318f, 0.00415118f, 0.017147f,
2155  0.0134203f, -0.013869f, 0.0287268f, -0.00334693f, 0.00733398f, -0.0287926f,
2156  -0.0186926f, 0.0193662f, -0.0115437f, 0.00422612f, -0.0345232f,
2157  0.00223253f, -0.00957321f, 0.0210624f, 0.013331f, 0.0150954f,
2158  0.02168f}));
2159  return LstmLayerNoCifgWithPeepholeWithProjectionTestImpl<armnn::DataType::Float32>(
2160  workloadFactory, memoryManager, input, expectedOutput);
2161 }

◆ LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNormTest()

LayerTestResult<float, 2> LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNormTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2180 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2183 {
2184  armnn::TensorInfo inputDesc({ 2, 5 }, armnn::DataType::Float32);
2185  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2186  {0.7f, 0.8f, 0.1f, 0.2f, 0.3f, //batch 0
2187  0.3f, 0.2f, 0.9f, 0.8f, 0.1f})); //batch 1
2188 
2189  armnn::TensorInfo outputDesc({ 2, 3 }, armnn::DataType::Float32);
2190  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2191  { 0.0244077f, 0.128027f, -0.00170918f, //batch 0
2192  -0.00692428f, 0.0848741f, 0.063445f})); //batch 1
2193  return LstmLayerNoCifgWithPeepholeWithProjectionWithLayerNormTestImpl<armnn::DataType::Float32>(
2194  workloadFactory, memoryManager, input, expectedOutput);
2195 }

◆ LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest()

LayerTestResult<float, 2> LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2125 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2128 {
2129  armnn::TensorInfo inputDesc({ 2, 2 }, armnn::DataType::Float32);
2130  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2131  { 2., 3., 3., 4. }));
2132 
2133  armnn::TensorInfo outputDesc({ 2, 4 }, armnn::DataType::Float32);
2134  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2135  {-0.36444446f, -0.00352185f, 0.12886585f, -0.05163646f,
2136  -0.42734814f, -0.00478661f, 0.13455015f, -0.03560682f}));
2137  return LstmLayerWithCifgWithPeepholeNoProjectionTestImpl<armnn::DataType::Float32>(
2138  workloadFactory, memoryManager, input, expectedOutput);
2139 }

◆ LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest()

LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2300 of file LstmTestImpl.cpp.

References armnn::QSymmS16.

Referenced by BOOST_AUTO_TEST_CASE().

2303 {
2304  const float qScale = 1.0f;
2305  const int32_t qOffset = 0;
2306 
2307  const armnn::DataType datatype = armnn::DataType::QSymmS16; // datatype & constants set to QSymm16
2308 
2309  armnn::TensorInfo inputDesc({2, 2}, datatype);
2310  boost::multi_array<int16_t , 2> input =
2311  MakeTensor<int16_t , 2>(inputDesc,
2312  armnnUtils::QuantizedVector<int16_t>({ 2.f, 3.f, 3.f, 4.f }, qScale, qOffset));
2313 
2314  armnn::TensorInfo outputDesc({2, 4}, datatype);
2315  boost::multi_array<int16_t, 2> expectedOutput =
2316  MakeTensor<int16_t, 2>(
2317  outputDesc,
2318  armnnUtils::QuantizedVector<int16_t>(
2319  {
2320  -0.02973187f, 0.12294730f, 0.20885126f, -0.15358765f,
2321  -0.01854220f, 0.11281417f, 0.24466537f, -0.18262920f
2322  },
2323  qScale, qOffset));
2324 
2325  return LstmNoCifgNoPeepholeNoProjectionTestImpl<datatype>(
2326  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, datatype);
2327 }
DataType
Definition: Types.hpp:32

◆ LstmLayerInt16NoCifgNoPeepholeNoProjectionTest()

LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2197 of file LstmTestImpl.cpp.

References armnn::QAsymmU8, and armnn::QSymmS16.

Referenced by BOOST_AUTO_TEST_CASE().

2200 {
2201  const float qScale = 1.0f;
2202  const int32_t qOffset = 0;
2203 
2204  const armnn::DataType datatype = armnn::DataType::QSymmS16;
2205  const armnn::DataType constantDatatype = armnn::DataType::QAsymmU8;
2206 
2207  armnn::TensorInfo inputDesc({2, 2}, datatype);
2208  boost::multi_array<int16_t , 2> input = MakeTensor<int16_t , 2>(
2209  inputDesc,
2210  armnnUtils::QuantizedVector<int16_t>({ 2.f, 3.f, 3.f, 4.f }, qScale, qOffset));
2211 
2212  armnn::TensorInfo outputDesc({2, 4}, datatype);
2213  boost::multi_array<int16_t, 2> expectedOutput = MakeTensor<int16_t, 2>(
2214  outputDesc,
2215  armnnUtils::QuantizedVector<int16_t>(
2216  {
2217  -0.02973187f, 0.12294730f, 0.20885126f, -0.15358765f,
2218  -0.01854220f, 0.11281417f, 0.24466537f, -0.18262920f
2219  },
2220  qScale, qOffset));
2221 
2222  return LstmNoCifgNoPeepholeNoProjectionTestImpl<datatype>(
2223  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, constantDatatype);
2224 
2225 }
DataType
Definition: Types.hpp:32

◆ LstmLayerInt16NoCifgWithPeepholeWithProjectionTest()

LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgWithPeepholeWithProjectionTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2258 of file LstmTestImpl.cpp.

References armnn::QAsymmU8, and armnn::QSymmS16.

Referenced by BOOST_AUTO_TEST_CASE().

2261 {
2262  const float qScale = 2.0f;
2263  const int32_t qOffset = 0;
2264 
2265  const armnn::DataType datatype = armnn::DataType::QSymmS16;
2266  const armnn::DataType constantDatatype = armnn::DataType::QAsymmU8;
2267 
2268  armnn::TensorInfo inputDesc({ 2, 5 }, datatype);
2269  boost::multi_array<int16_t, 2> input =
2270  MakeTensor<int16_t, 2>(
2271  inputDesc,
2272  armnnUtils::QuantizedVector<int16_t>(
2273  {
2274  0.787926f, 0.151646f, 0.071352f, 0.118426f, 0.458058f,
2275  0.295743f, 0.544053f, 0.690064f, 0.858138f, 0.497181f
2276  },
2277  qScale, qOffset));
2278 
2279  armnn::TensorInfo outputDesc({ 2, 16 }, datatype);
2280  boost::multi_array<int16_t, 2> expectedOutput =
2281  MakeTensor<int16_t, 2>(
2282  outputDesc,
2283  armnnUtils::QuantizedVector<int16_t>(
2284  {
2285  -0.00396806f, 0.02935200f, -0.00279226f, 0.01599770f,
2286  -0.00835576f, -0.02117790f, 0.02835120f, -0.01145970f,
2287  0.00907307f, -0.02440040f, -0.01521910f, -0.02590630f,
2288  0.00914318f, 0.00415118f, 0.01714700f, 0.01342030f,
2289  -0.01386900f, 0.02872680f, -0.00334693f, 0.00733398f,
2290  -0.02879260f, -0.01869260f, 0.01936620f, -0.01154370f,
2291  0.00422612f, -0.03452320f, 0.00223253f, -0.00957321f,
2292  0.02106240f, 0.01333100f, 0.01509540f, 0.02168000f
2293  },
2294  qScale, qOffset));
2295 
2296  return LstmLayerNoCifgWithPeepholeWithProjectionTestImpl<datatype>(
2297  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, constantDatatype);
2298 }
DataType
Definition: Types.hpp:32

◆ LstmLayerInt16WithCifgWithPeepholeNoProjectionTest()

LayerTestResult<int16_t, 2> LstmLayerInt16WithCifgWithPeepholeNoProjectionTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2227 of file LstmTestImpl.cpp.

References armnn::QAsymmU8, and armnn::QSymmS16.

Referenced by BOOST_AUTO_TEST_CASE().

2230 {
2231  const float qScale = 1.0f;
2232  const int32_t qOffset = 0;
2233 
2234  const armnn::DataType datatype = armnn::DataType::QSymmS16;
2235  const armnn::DataType constantDatatype = armnn::DataType::QAsymmU8;
2236 
2237  armnn::TensorInfo inputDesc({ 2, 2 }, datatype);
2238  boost::multi_array<int16_t, 2> input =
2239  MakeTensor<int16_t, 2>(
2240  inputDesc,
2241  armnnUtils::QuantizedVector<int16_t>({ 2.f, 3.f, 3.f, 4.f }, qScale, qOffset));
2242 
2243  armnn::TensorInfo outputDesc({ 2, 4 }, datatype);
2244  boost::multi_array<int16_t, 2> expectedOutput =
2245  MakeTensor<int16_t, 2>(
2246  outputDesc,
2247  armnnUtils::QuantizedVector<int16_t>(
2248  {
2249  -0.36444446f, -0.00352185f, 0.12886585f, -0.05163646f,
2250  -0.42734814f, -0.00478661f, 0.13455015f, -0.03560682f
2251  },
2252  qScale, qOffset));
2253 
2254  return LstmLayerWithCifgWithPeepholeNoProjectionTestImpl<datatype>(
2255  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, constantDatatype);
2256 }
DataType
Definition: Types.hpp:32

◆ QLstmTest()

LayerTestResult<int8_t, 2> QLstmTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2349 of file LstmTestImpl.cpp.

References armnn::QAsymmS8.

Referenced by BOOST_AUTO_TEST_CASE().

2352 {
2353  armnn::TensorInfo inputDesc({2, 5}, armnn::DataType::QAsymmS8);
2354  boost::multi_array<int8_t, 2> input = MakeTensor<int8_t, 2>(inputDesc, std::vector<int8_t>(
2355  {90, 102, 13, 26, 38, 102, 13, 26, 51, 64}));
2356 
2357  armnn::TensorInfo outputDesc({2, 4}, armnn::DataType::QAsymmS8);
2358  boost::multi_array<int8_t, 2> expectedOutput = MakeTensor<int8_t, 2>(outputDesc, std::vector<int8_t>(
2359  {-15, 21, 14, 20, -15, 15, 5, 27}));
2360 
2361  return QLstmTestImpl(workloadFactory, memoryManager, input, expectedOutput);
2362 }

◆ QuantizedLstmTest()

LayerTestResult<uint8_t, 2> QuantizedLstmTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager 
)

Definition at line 2333 of file LstmTestImpl.cpp.

References armnn::QAsymmU8.

2336 {
2337  armnn::TensorInfo inputDesc({2, 2}, armnn::DataType::QAsymmU8);
2338  boost::multi_array<uint8_t, 2> input = MakeTensor<uint8_t, 2>(inputDesc, std::vector<uint8_t>(
2339  {166, 179, 50, 150}));
2340 
2341  armnn::TensorInfo outputDesc({2, 4}, armnn::DataType::QAsymmU8);
2342  boost::multi_array<uint8_t, 2> expectedOutput = MakeTensor<uint8_t, 2>(outputDesc, std::vector<uint8_t>(
2343  {140, 151, 146, 112, 136, 156, 142, 112 }));
2344 
2345  return QuantizedLstmTestImpl(workloadFactory, memoryManager, input, expectedOutput);
2346 }