ArmNN
 20.08
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)
 
LayerTestResult< int8_t, 2 > QLstmTest1 (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< int8_t, 2 > QLstmTest2 (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 2700 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2703 {
2704  armnn::TensorInfo inputDesc({2, 2}, armnn::DataType::Float32);
2705  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2706  {2., 3., 3., 4.}));
2707 
2708  armnn::TensorInfo outputDesc({2, 4}, armnn::DataType::Float32);
2709  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2710  {{-0.02973187f, 0.1229473f, 0.20885126f, -0.15358765f,
2711  -0.0185422f, 0.11281417f, 0.24466537f, -0.1826292f}}));
2712 
2713  return LstmNoCifgNoPeepholeNoProjectionTestImpl<armnn::DataType::Float32>(
2714  workloadFactory, memoryManager, input, expectedOutput);
2715 }

◆ LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest()

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

Definition at line 2678 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2681 {
2682  armnn::TensorInfo inputDesc({ 2, 5 }, armnn::DataType::Float32);
2683  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2684  {0.787926f, 0.151646f, 0.071352f, 0.118426f, 0.458058f,
2685  0.295743f, 0.544053f, 0.690064f, 0.858138f, 0.497181f}));
2686 
2687  armnn::TensorInfo outputDesc({ 2, 16 }, armnn::DataType::Float32);
2688  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2689  {-0.00396806f, 0.029352f, -0.00279226f, 0.0159977f, -0.00835576f,
2690  -0.0211779f, 0.0283512f, -0.0114597f, 0.00907307f, -0.0244004f,
2691  -0.0152191f, -0.0259063f, 0.00914318f, 0.00415118f, 0.017147f,
2692  0.0134203f, -0.013869f, 0.0287268f, -0.00334693f, 0.00733398f, -0.0287926f,
2693  -0.0186926f, 0.0193662f, -0.0115437f, 0.00422612f, -0.0345232f,
2694  0.00223253f, -0.00957321f, 0.0210624f, 0.013331f, 0.0150954f,
2695  0.02168f}));
2696  return LstmLayerNoCifgWithPeepholeWithProjectionTestImpl<armnn::DataType::Float32>(
2697  workloadFactory, memoryManager, input, expectedOutput);
2698 }

◆ LstmLayerFloat32NoCifgWithPeepholeWithProjectionWithLayerNormTest()

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

Definition at line 2717 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2720 {
2721  armnn::TensorInfo inputDesc({ 2, 5 }, armnn::DataType::Float32);
2722  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2723  {0.7f, 0.8f, 0.1f, 0.2f, 0.3f, //batch 0
2724  0.3f, 0.2f, 0.9f, 0.8f, 0.1f})); //batch 1
2725 
2726  armnn::TensorInfo outputDesc({ 2, 3 }, armnn::DataType::Float32);
2727  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2728  { 0.0244077f, 0.128027f, -0.00170918f, //batch 0
2729  -0.00692428f, 0.0848741f, 0.063445f})); //batch 1
2730  return LstmLayerNoCifgWithPeepholeWithProjectionWithLayerNormTestImpl<armnn::DataType::Float32>(
2731  workloadFactory, memoryManager, input, expectedOutput);
2732 }

◆ LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest()

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

Definition at line 2662 of file LstmTestImpl.cpp.

References armnn::Float32.

Referenced by BOOST_AUTO_TEST_CASE().

2665 {
2666  armnn::TensorInfo inputDesc({ 2, 2 }, armnn::DataType::Float32);
2667  boost::multi_array<float, 2> input = MakeTensor<float, 2>(inputDesc, std::vector<float>(
2668  { 2., 3., 3., 4. }));
2669 
2670  armnn::TensorInfo outputDesc({ 2, 4 }, armnn::DataType::Float32);
2671  boost::multi_array<float, 2> expectedOutput = MakeTensor<float, 2>(outputDesc, std::vector<float>(
2672  {-0.36444446f, -0.00352185f, 0.12886585f, -0.05163646f,
2673  -0.42734814f, -0.00478661f, 0.13455015f, -0.03560682f}));
2674  return LstmLayerWithCifgWithPeepholeNoProjectionTestImpl<armnn::DataType::Float32>(
2675  workloadFactory, memoryManager, input, expectedOutput);
2676 }

◆ LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest()

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

Definition at line 2837 of file LstmTestImpl.cpp.

References armnn::QSymmS16.

Referenced by BOOST_AUTO_TEST_CASE().

2840 {
2841  const float qScale = 1.0f;
2842  const int32_t qOffset = 0;
2843 
2844  const armnn::DataType datatype = armnn::DataType::QSymmS16; // datatype & constants set to QSymm16
2845 
2846  armnn::TensorInfo inputDesc({2, 2}, datatype);
2847  boost::multi_array<int16_t , 2> input =
2848  MakeTensor<int16_t , 2>(inputDesc,
2849  armnnUtils::QuantizedVector<int16_t>({ 2.f, 3.f, 3.f, 4.f }, qScale, qOffset));
2850 
2851  armnn::TensorInfo outputDesc({2, 4}, datatype);
2852  boost::multi_array<int16_t, 2> expectedOutput =
2853  MakeTensor<int16_t, 2>(
2854  outputDesc,
2855  armnnUtils::QuantizedVector<int16_t>(
2856  {
2857  -0.02973187f, 0.12294730f, 0.20885126f, -0.15358765f,
2858  -0.01854220f, 0.11281417f, 0.24466537f, -0.18262920f
2859  },
2860  qScale, qOffset));
2861 
2862  return LstmNoCifgNoPeepholeNoProjectionTestImpl<datatype>(
2863  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, datatype);
2864 }
DataType
Definition: Types.hpp:32

◆ LstmLayerInt16NoCifgNoPeepholeNoProjectionTest()

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

Definition at line 2734 of file LstmTestImpl.cpp.

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

Referenced by BOOST_AUTO_TEST_CASE().

2737 {
2738  const float qScale = 1.0f;
2739  const int32_t qOffset = 0;
2740 
2741  const armnn::DataType datatype = armnn::DataType::QSymmS16;
2742  const armnn::DataType constantDatatype = armnn::DataType::QAsymmU8;
2743 
2744  armnn::TensorInfo inputDesc({2, 2}, datatype);
2745  boost::multi_array<int16_t , 2> input = MakeTensor<int16_t , 2>(
2746  inputDesc,
2747  armnnUtils::QuantizedVector<int16_t>({ 2.f, 3.f, 3.f, 4.f }, qScale, qOffset));
2748 
2749  armnn::TensorInfo outputDesc({2, 4}, datatype);
2750  boost::multi_array<int16_t, 2> expectedOutput = MakeTensor<int16_t, 2>(
2751  outputDesc,
2752  armnnUtils::QuantizedVector<int16_t>(
2753  {
2754  -0.02973187f, 0.12294730f, 0.20885126f, -0.15358765f,
2755  -0.01854220f, 0.11281417f, 0.24466537f, -0.18262920f
2756  },
2757  qScale, qOffset));
2758 
2759  return LstmNoCifgNoPeepholeNoProjectionTestImpl<datatype>(
2760  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, constantDatatype);
2761 
2762 }
DataType
Definition: Types.hpp:32

◆ LstmLayerInt16NoCifgWithPeepholeWithProjectionTest()

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

Definition at line 2795 of file LstmTestImpl.cpp.

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

Referenced by BOOST_AUTO_TEST_CASE().

2798 {
2799  const float qScale = 2.0f;
2800  const int32_t qOffset = 0;
2801 
2802  const armnn::DataType datatype = armnn::DataType::QSymmS16;
2803  const armnn::DataType constantDatatype = armnn::DataType::QAsymmU8;
2804 
2805  armnn::TensorInfo inputDesc({ 2, 5 }, datatype);
2806  boost::multi_array<int16_t, 2> input =
2807  MakeTensor<int16_t, 2>(
2808  inputDesc,
2809  armnnUtils::QuantizedVector<int16_t>(
2810  {
2811  0.787926f, 0.151646f, 0.071352f, 0.118426f, 0.458058f,
2812  0.295743f, 0.544053f, 0.690064f, 0.858138f, 0.497181f
2813  },
2814  qScale, qOffset));
2815 
2816  armnn::TensorInfo outputDesc({ 2, 16 }, datatype);
2817  boost::multi_array<int16_t, 2> expectedOutput =
2818  MakeTensor<int16_t, 2>(
2819  outputDesc,
2820  armnnUtils::QuantizedVector<int16_t>(
2821  {
2822  -0.00396806f, 0.02935200f, -0.00279226f, 0.01599770f,
2823  -0.00835576f, -0.02117790f, 0.02835120f, -0.01145970f,
2824  0.00907307f, -0.02440040f, -0.01521910f, -0.02590630f,
2825  0.00914318f, 0.00415118f, 0.01714700f, 0.01342030f,
2826  -0.01386900f, 0.02872680f, -0.00334693f, 0.00733398f,
2827  -0.02879260f, -0.01869260f, 0.01936620f, -0.01154370f,
2828  0.00422612f, -0.03452320f, 0.00223253f, -0.00957321f,
2829  0.02106240f, 0.01333100f, 0.01509540f, 0.02168000f
2830  },
2831  qScale, qOffset));
2832 
2833  return LstmLayerNoCifgWithPeepholeWithProjectionTestImpl<datatype>(
2834  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, constantDatatype);
2835 }
DataType
Definition: Types.hpp:32

◆ LstmLayerInt16WithCifgWithPeepholeNoProjectionTest()

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

Definition at line 2764 of file LstmTestImpl.cpp.

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

Referenced by BOOST_AUTO_TEST_CASE().

2767 {
2768  const float qScale = 1.0f;
2769  const int32_t qOffset = 0;
2770 
2771  const armnn::DataType datatype = armnn::DataType::QSymmS16;
2772  const armnn::DataType constantDatatype = armnn::DataType::QAsymmU8;
2773 
2774  armnn::TensorInfo inputDesc({ 2, 2 }, datatype);
2775  boost::multi_array<int16_t, 2> input =
2776  MakeTensor<int16_t, 2>(
2777  inputDesc,
2778  armnnUtils::QuantizedVector<int16_t>({ 2.f, 3.f, 3.f, 4.f }, qScale, qOffset));
2779 
2780  armnn::TensorInfo outputDesc({ 2, 4 }, datatype);
2781  boost::multi_array<int16_t, 2> expectedOutput =
2782  MakeTensor<int16_t, 2>(
2783  outputDesc,
2784  armnnUtils::QuantizedVector<int16_t>(
2785  {
2786  -0.36444446f, -0.00352185f, 0.12886585f, -0.05163646f,
2787  -0.42734814f, -0.00478661f, 0.13455015f, -0.03560682f
2788  },
2789  qScale, qOffset));
2790 
2791  return LstmLayerWithCifgWithPeepholeNoProjectionTestImpl<datatype>(
2792  workloadFactory, memoryManager, input, expectedOutput, qScale, qOffset, constantDatatype);
2793 }
DataType
Definition: Types.hpp:32

◆ QLstmTest()

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

Definition at line 2886 of file LstmTestImpl.cpp.

References armnn::QAsymmS8.

Referenced by BOOST_AUTO_TEST_CASE().

2889 {
2890  armnn::TensorInfo inputDesc({2, 5}, armnn::DataType::QAsymmS8);
2891  boost::multi_array<int8_t, 2> input = MakeTensor<int8_t, 2>(inputDesc, std::vector<int8_t>(
2892  {90, 102, 13, 26, 38, 102, 13, 26, 51, 64}));
2893 
2894  armnn::TensorInfo outputDesc({2, 4}, armnn::DataType::QAsymmS8);
2895  boost::multi_array<int8_t, 2> expectedOutput = MakeTensor<int8_t, 2>(outputDesc, std::vector<int8_t>(
2896  {-15, 21, 14, 20, -15, 15, 5, 27}));
2897 
2898  return QLstmTestImpl(workloadFactory, memoryManager, input, expectedOutput);
2899 }

◆ QLstmTest1()

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

Definition at line 2901 of file LstmTestImpl.cpp.

References armnn::QAsymmS8.

Referenced by BOOST_AUTO_TEST_CASE().

2904 {
2905  armnn::TensorInfo inputDesc({2, 5}, armnn::DataType::QAsymmS8);
2906  boost::multi_array<int8_t, 2> input = MakeTensor<int8_t, 2>(inputDesc, std::vector<int8_t>(
2907  {90, 102, 13, 26, 38, 102, 13, 26, 51, 64}));
2908 
2909  armnn::TensorInfo outputDesc({2, 3}, armnn::DataType::QAsymmS8);
2910  boost::multi_array<int8_t, 2> expectedOutput = MakeTensor<int8_t, 2>(outputDesc, std::vector<int8_t>(
2911  {127, 127, -108, -67, 127, 127}));
2912 
2913  return QLstmTestImpl1(workloadFactory, memoryManager, input, expectedOutput);
2914 }

◆ QLstmTest2()

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

Definition at line 2916 of file LstmTestImpl.cpp.

References armnn::QAsymmS8.

Referenced by BOOST_AUTO_TEST_CASE().

2919 {
2920  armnn::TensorInfo inputDesc({2, 5}, armnn::DataType::QAsymmS8);
2921  boost::multi_array<int8_t, 2> input = MakeTensor<int8_t, 2>(inputDesc, std::vector<int8_t>(
2922  {90, 102, 13, 26, 38, 102, 13, 26, 51, 64}));
2923 
2924  armnn::TensorInfo outputDesc({2, 3}, armnn::DataType::QAsymmS8);
2925  boost::multi_array<int8_t, 2> expectedOutput = MakeTensor<int8_t, 2>(outputDesc, std::vector<int8_t>(
2926  {127, 127, 127, -128, 127, 127}));
2927 
2928  return QLstmTestImpl2(workloadFactory, memoryManager, input, expectedOutput);
2929 }

◆ QuantizedLstmTest()

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

Definition at line 2870 of file LstmTestImpl.cpp.

References armnn::QAsymmU8.

2873 {
2874  armnn::TensorInfo inputDesc({2, 2}, armnn::DataType::QAsymmU8);
2875  boost::multi_array<uint8_t, 2> input = MakeTensor<uint8_t, 2>(inputDesc, std::vector<uint8_t>(
2876  {166, 179, 50, 150}));
2877 
2878  armnn::TensorInfo outputDesc({2, 4}, armnn::DataType::QAsymmU8);
2879  boost::multi_array<uint8_t, 2> expectedOutput = MakeTensor<uint8_t, 2>(outputDesc, std::vector<uint8_t>(
2880  {140, 151, 146, 112, 136, 156, 142, 112 }));
2881 
2882  return QuantizedLstmTestImpl(workloadFactory, memoryManager, input, expectedOutput);
2883 }