9 #include <doctest/doctest.h> 47 CHECK(m_Descriptor.m_Eps == descriptor.
m_Eps);
56 CHECK(m_Descriptor.m_CifgEnabled == descriptor.
m_CifgEnabled);
65 if (expected ==
nullptr)
67 CHECK_MESSAGE(actual ==
nullptr, name +
" actual should have been a nullptr");
71 CHECK_MESSAGE(actual !=
nullptr, name +
" actual should have been set");
72 if (actual !=
nullptr)
81 CheckConstTensorPtrs(
"ProjectionBias", m_InputParams.m_ProjectionBias, inputParams.
m_ProjectionBias);
82 CheckConstTensorPtrs(
"ProjectionWeights", m_InputParams.m_ProjectionWeights, inputParams.
m_ProjectionWeights);
83 CheckConstTensorPtrs(
"OutputGateBias", m_InputParams.m_OutputGateBias, inputParams.
m_OutputGateBias);
84 CheckConstTensorPtrs(
"InputToInputWeights",
86 CheckConstTensorPtrs(
"InputToForgetWeights",
88 CheckConstTensorPtrs(
"InputToCellWeights", m_InputParams.m_InputToCellWeights, inputParams.
m_InputToCellWeights);
101 CheckConstTensorPtrs(
103 CheckConstTensorPtrs(
105 CheckConstTensorPtrs(
"InputGateBias", m_InputParams.m_InputGateBias, inputParams.
m_InputGateBias);
106 CheckConstTensorPtrs(
"ForgetGateBias", m_InputParams.m_ForgetGateBias, inputParams.
m_ForgetGateBias);
107 CheckConstTensorPtrs(
"CellBias", m_InputParams.m_CellBias, inputParams.
m_CellBias);
114 if (expected ==
nullptr)
116 CHECK_MESSAGE(actual ==
nullptr, name +
" actual should have been a nullptr");
120 CHECK_MESSAGE(actual !=
nullptr, name +
" actual should have been set");
121 if (actual !=
nullptr)
130 CHECK(m_Descriptor.m_CellClip == descriptor.
m_CellClip);
132 CHECK(m_Descriptor.m_CifgEnabled == descriptor.
m_CifgEnabled);
139 CheckConstTensorPtrs(
"InputToInputWeights",
140 m_InputParams.m_InputToInputWeights,
143 CheckConstTensorPtrs(
"InputToForgetWeights",
144 m_InputParams.m_InputToForgetWeights,
147 CheckConstTensorPtrs(
"InputToCellWeights",
148 m_InputParams.m_InputToCellWeights,
151 CheckConstTensorPtrs(
"InputToOutputWeights",
152 m_InputParams.m_InputToOutputWeights,
155 CheckConstTensorPtrs(
"RecurrentToInputWeights",
156 m_InputParams.m_RecurrentToInputWeights,
159 CheckConstTensorPtrs(
"RecurrentToForgetWeights",
160 m_InputParams.m_RecurrentToForgetWeights,
163 CheckConstTensorPtrs(
"RecurrentToCellWeights",
164 m_InputParams.m_RecurrentToCellWeights,
167 CheckConstTensorPtrs(
"RecurrentToOutputWeights",
168 m_InputParams.m_RecurrentToOutputWeights,
171 CheckConstTensorPtrs(
"CellToInputWeights",
172 m_InputParams.m_CellToInputWeights,
175 CheckConstTensorPtrs(
"CellToForgetWeights",
176 m_InputParams.m_CellToForgetWeights,
179 CheckConstTensorPtrs(
"CellToOutputWeights",
180 m_InputParams.m_CellToOutputWeights,
183 CheckConstTensorPtrs(
"ProjectionWeights", m_InputParams.m_ProjectionWeights, inputParams.
m_ProjectionWeights);
184 CheckConstTensorPtrs(
"ProjectionBias", m_InputParams.m_ProjectionBias, inputParams.
m_ProjectionBias);
186 CheckConstTensorPtrs(
"InputGateBias", m_InputParams.m_InputGateBias, inputParams.
m_InputGateBias);
187 CheckConstTensorPtrs(
"ForgetGateBias", m_InputParams.m_ForgetGateBias, inputParams.
m_ForgetGateBias);
188 CheckConstTensorPtrs(
"CellBias", m_InputParams.m_CellBias, inputParams.
m_CellBias);
189 CheckConstTensorPtrs(
"OutputGateBias", m_InputParams.m_OutputGateBias, inputParams.
m_OutputGateBias);
191 CheckConstTensorPtrs(
"InputLayerNormWeights",
192 m_InputParams.m_InputLayerNormWeights,
195 CheckConstTensorPtrs(
"ForgetLayerNormWeights",
196 m_InputParams.m_ForgetLayerNormWeights,
199 CheckConstTensorPtrs(
"CellLayerNormWeights",
200 m_InputParams.m_CellLayerNormWeights,
203 CheckConstTensorPtrs(
"OutputLayerNormWeights",
204 m_InputParams.m_OutputLayerNormWeights,
212 if (expected ==
nullptr)
214 CHECK_MESSAGE(actual ==
nullptr, name +
" actual should have been a nullptr");
218 CHECK_MESSAGE(actual !=
nullptr, name +
" actual should have been set");
219 if (actual !=
nullptr)
228 CheckConstTensorPtrs(
"InputToInputWeights",
229 m_InputParams.m_InputToInputWeights,
232 CheckConstTensorPtrs(
"InputToForgetWeights",
233 m_InputParams.m_InputToForgetWeights,
236 CheckConstTensorPtrs(
"InputToCellWeights",
237 m_InputParams.m_InputToCellWeights,
240 CheckConstTensorPtrs(
"InputToOutputWeights",
241 m_InputParams.m_InputToOutputWeights,
244 CheckConstTensorPtrs(
"RecurrentToInputWeights",
245 m_InputParams.m_RecurrentToInputWeights,
248 CheckConstTensorPtrs(
"RecurrentToForgetWeights",
249 m_InputParams.m_RecurrentToForgetWeights,
252 CheckConstTensorPtrs(
"RecurrentToCellWeights",
253 m_InputParams.m_RecurrentToCellWeights,
256 CheckConstTensorPtrs(
"RecurrentToOutputWeights",
257 m_InputParams.m_RecurrentToOutputWeights,
260 CheckConstTensorPtrs(
"InputGateBias", m_InputParams.m_InputGateBias, inputParams.
m_InputGateBias);
261 CheckConstTensorPtrs(
"ForgetGateBias", m_InputParams.m_ForgetGateBias, inputParams.
m_ForgetGateBias);
262 CheckConstTensorPtrs(
"CellBias", m_InputParams.m_CellBias, inputParams.
m_CellBias);
263 CheckConstTensorPtrs(
"OutputGateBias", m_InputParams.m_OutputGateBias, inputParams.
m_OutputGateBias);
268 TEST_CASE(
"CheckConvolution2dLayer")
279 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
280 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
291 TEST_CASE(
"CheckNamedConvolution2dLayer")
293 const char* layerName =
"Convolution2dLayer";
303 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
304 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
315 TEST_CASE(
"CheckConvolution2dLayerWithBiases")
327 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
328 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
331 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
332 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
344 TEST_CASE(
"CheckNamedConvolution2dLayerWithBiases")
346 const char* layerName =
"Convolution2dLayer";
357 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
358 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
361 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
362 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
374 TEST_CASE(
"CheckDepthwiseConvolution2dLayer")
385 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
386 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
397 TEST_CASE(
"CheckNamedDepthwiseConvolution2dLayer")
399 const char* layerName =
"DepthwiseConvolution2dLayer";
409 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
410 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
424 TEST_CASE(
"CheckDepthwiseConvolution2dLayerWithBiases")
436 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
437 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
440 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
441 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
453 TEST_CASE(
"CheckNamedDepthwiseConvolution2dLayerWithBiases")
455 const char* layerName =
"DepthwiseConvolution2dLayer";
466 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
467 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
470 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
471 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
483 TEST_CASE(
"CheckFullyConnectedLayer")
490 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
491 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
503 weightsLayer->
Accept(weightsVisitor);
507 TEST_CASE(
"CheckNamedFullyConnectedLayer")
509 const char* layerName =
"FullyConnectedLayer";
515 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
516 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
528 weightsLayer->
Accept(weightsVisitor);
532 TEST_CASE(
"CheckFullyConnectedLayerWithBiases")
539 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
540 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
543 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
544 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
559 weightsLayer->
Accept(weightsVisitor);
560 biasesLayer->
Accept(biasesVisitor);
564 TEST_CASE(
"CheckNamedFullyConnectedLayerWithBiases")
566 const char* layerName =
"FullyConnectedLayer";
572 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
573 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
576 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
577 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
592 weightsLayer->
Accept(weightsVisitor);
593 biasesLayer->
Accept(biasesVisitor);
597 TEST_CASE(
"CheckBatchNormalizationLayer")
600 descriptor.
m_Eps = 0.0002f;
603 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
604 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
607 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
608 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
611 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
612 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
615 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
616 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
627 TEST_CASE(
"CheckNamedBatchNormalizationLayer")
629 const char* layerName =
"BatchNormalizationLayer";
631 descriptor.
m_Eps = 0.0002f;
634 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
635 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
638 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
639 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
642 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
643 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
646 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
647 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
655 descriptor, mean, variance, beta, gamma, layerName);
659 TEST_CASE(
"CheckConstLayer")
661 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
662 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
673 TEST_CASE(
"CheckNamedConstLayer")
675 const char* layerName =
"ConstantLayer";
676 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
677 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
688 TEST_CASE(
"CheckLstmLayerBasic")
696 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
697 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
701 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
702 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
706 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
707 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
711 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
712 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
714 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
716 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
717 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
719 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
721 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
722 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
724 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
726 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
727 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
731 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
732 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
736 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
737 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
760 TEST_CASE(
"CheckNamedLstmLayerBasic")
762 const char* layerName =
"LstmLayer";
769 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
770 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
774 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
775 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
779 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
780 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
784 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
785 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
787 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
789 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
790 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
792 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
794 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
795 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
797 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
799 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
800 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
804 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
805 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
809 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
810 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
833 TEST_CASE(
"CheckLstmLayerCifgDisabled")
841 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
842 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
846 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
847 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
851 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
852 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
856 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
857 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
859 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
861 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
862 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
864 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
866 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
867 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
869 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
871 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
872 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
876 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
877 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
881 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
882 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
886 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
887 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
891 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
892 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
894 4, recurrentToInputWeightsDimensions.data(),
DataType::Float32), recurrentToInputWeightsData);
896 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
897 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
924 TEST_CASE(
"CheckNamedLstmLayerCifgDisabled")
926 const char* layerName =
"LstmLayer";
933 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
934 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
938 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
939 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
943 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
944 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
948 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
949 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
951 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
953 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
954 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
956 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
958 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
959 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
961 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
963 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
964 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
968 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
969 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
973 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
974 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
978 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
979 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
983 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
984 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
986 4, recurrentToInputWeightsDimensions.data(),
DataType::Float32), recurrentToInputWeightsData);
988 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
989 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1017 TEST_CASE(
"CheckLstmLayerPeephole")
1026 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1027 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1031 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1032 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1036 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1037 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1041 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1042 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1044 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1046 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1047 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1049 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1051 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1052 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1054 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1056 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1057 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1061 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1062 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1066 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1067 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1071 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1072 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1076 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1077 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1103 TEST_CASE(
"CheckLstmLayerPeepholeCifgDisabled")
1112 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1113 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1117 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1118 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1122 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1123 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1127 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1128 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1130 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1132 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1133 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1135 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1137 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1138 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1140 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1142 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1143 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1147 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1148 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1152 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1153 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1157 std::vector<float> cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1158 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
1162 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1163 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1167 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1168 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1172 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1173 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1177 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1178 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1180 4, recurrentToInputWeightsDimensions.data(),
DataType::Float32), recurrentToInputWeightsData);
1182 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1183 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1217 TEST_CASE(
"CheckNamedLstmLayerPeephole")
1219 const char* layerName =
"LstmLayer";
1227 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1228 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1232 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1233 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1237 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1238 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1242 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1243 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1245 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1247 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1248 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1250 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1252 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1253 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1255 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1257 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1258 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1262 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1263 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1267 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1268 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1272 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1273 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1277 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1278 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1305 TEST_CASE(
"CheckLstmLayerProjection")
1314 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1315 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1319 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1320 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1324 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1325 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1329 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1330 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1332 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1334 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1335 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1337 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1339 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1340 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1342 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1344 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1345 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1349 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1350 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1354 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1355 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1359 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1360 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1364 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1365 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1391 TEST_CASE(
"CheckNamedLstmLayerProjection")
1393 const char* layerName =
"LstmLayer";
1401 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1402 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1406 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1407 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1411 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1412 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1416 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1417 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1419 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1421 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1422 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1424 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1426 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1427 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1429 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1431 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1432 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1436 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1437 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1441 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1442 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1446 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1447 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1451 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1452 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1478 TEST_CASE(
"CheckQLstmLayerBasic")
1486 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1487 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1491 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1492 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1496 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1497 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1501 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1502 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1504 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
1506 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1507 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1509 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
1511 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1512 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1514 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
1516 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1517 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1521 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1522 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1526 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1527 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1550 TEST_CASE(
"CheckNamedQLstmLayerBasic")
1552 const char* layerName =
"QLstmLayer";
1559 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1560 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1564 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1565 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1569 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1570 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1574 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1575 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1577 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
1579 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1580 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1582 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
1584 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1585 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1587 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
1589 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1590 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1594 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1595 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1599 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1600 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1623 TEST_CASE(
"CheckQLstmLayerCifgDisabled")
1631 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1632 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1636 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1637 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1641 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1642 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1646 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1647 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1649 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
1651 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1652 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1654 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
1656 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1657 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1659 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
1661 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1662 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1666 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1667 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1671 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1672 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1677 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1678 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1682 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1683 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1685 4, recurrentToInputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToInputWeightsData);
1687 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1688 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1718 TEST_CASE(
"CheckQLstmLayerCifgDisabledPeepholeEnabled")
1727 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1728 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1732 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1733 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1737 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1738 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1742 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1743 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1745 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
1747 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1748 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1750 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
1752 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1753 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1755 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
1757 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1758 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1762 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1763 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1767 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1768 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1773 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1774 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1778 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1779 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1781 4, recurrentToInputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToInputWeightsData);
1783 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1784 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1789 std::vector<int16_t> cellToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1790 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
1794 std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1795 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1799 std::vector<int16_t> cellToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1800 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1835 TEST_CASE(
"CheckQLstmLayerCifgEnabledPeepholeEnabled")
1844 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1845 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1849 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1850 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1854 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1855 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1859 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1860 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1862 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
1864 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1865 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1867 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
1869 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1870 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1872 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
1874 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1875 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1879 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1880 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1884 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1885 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1890 std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1891 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1895 std::vector<int16_t> cellToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1896 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1925 TEST_CASE(
"CheckQLstmLayerProjectionEnabled")
1934 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1935 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1939 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1940 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1944 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1945 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1949 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1950 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1952 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
1954 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1955 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1957 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
1959 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1960 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1962 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
1964 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1965 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1969 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1970 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1974 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1975 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1980 std::vector<uint8_t> projectionWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1981 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1983 4, projectionWeightsDimensions.data(),
DataType::QSymmS8), projectionWeightsData);
1985 std::vector<int32_t> projectionBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1986 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
2015 TEST_CASE(
"CheckQLstmLayerCifgDisabledLayerNormEnabled")
2024 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2025 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2029 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2030 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2034 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2035 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2039 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2040 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2042 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
2044 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2045 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2047 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
2049 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2050 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2052 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
2054 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2055 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2059 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2060 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2064 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2065 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2070 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2071 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2075 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2076 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2078 4, recurrentToInputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToInputWeightsData);
2080 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2081 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2086 std::vector<int16_t> inputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2087 std::vector<unsigned int> inputLayerNormWeightsDimensions = {1, 1, 3, 3};
2091 std::vector<int16_t> forgetLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2092 std::vector<unsigned int> forgetLayerNormWeightsDimensions = {1, 1, 3, 3};
2096 std::vector<int16_t> cellLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2097 std::vector<unsigned int> cellLayerNormWeightsDimensions = {1, 1, 3, 3};
2101 std::vector<int16_t> outputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2102 std::vector<unsigned int> outputLayerNormWeightsDimensions = {1, 1, 3, 3};
2139 TEST_CASE(
"CheckQuantizedLstmLayer")
2141 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2142 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2146 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2147 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2151 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2152 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2156 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2157 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2162 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2163 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2165 4, recurrentToInputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToInputWeightsData);
2167 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2168 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2170 4, recurrentToForgetWeightsDimensions.data(),
DataType::QSymmS8), recurrentToForgetWeightsData);
2172 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2173 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2175 4, recurrentToCellWeightsDimensions.data(),
DataType::QSymmS8), recurrentToCellWeightsData);
2177 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2178 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2180 4, recurrentToOutputWeightsDimensions.data(),
DataType::QSymmS8), recurrentToOutputWeightsData);
2183 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2184 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2188 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2189 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2193 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2194 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2198 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2199 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2228 TEST_CASE(
"CheckNamedQuantizedLstmLayer")
2230 const char* layerName =
"LstmLayer";
2231 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2232 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2236 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2237 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2241 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2242 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2246 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2247 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2252 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2253 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2255 4, recurrentToInputWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToInputWeightsData);
2257 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2258 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2260 4, recurrentToForgetWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToForgetWeightsData);
2262 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2263 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2265 4, recurrentToCellWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToCellWeightsData);
2267 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2268 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2270 4, recurrentToOutputWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToOutputWeightsData);
2273 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2274 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2278 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2279 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2283 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2284 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2288 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2289 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
TEST_SUITE("TestConstTensorLayerVisitor")
void CheckDescriptor(const BatchNormalizationDescriptor &descriptor)
void CheckDescriptor(const QLstmDescriptor &descriptor)
uint32_t m_PadBottom
Padding bottom value in the height dimension.
bool m_BiasEnabled
Enable/disable bias.
void CheckConstTensorPtrs(const std::string &name, const ConstTensor *expected, const ConstTensor *actual)
bool m_ProjectionEnabled
Enable/disable the projection layer.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
bool m_BiasEnabled
Enable/disable bias.
uint32_t m_PadBottom
Padding bottom value in the height dimension.
float m_ClippingThresProj
Clipping threshold value for the projection.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
bool m_TransposeWeightMatrix
Enable/disable transpose weight matrix.
void CheckDescriptor(const FullyConnectedDescriptor &descriptor)
bool m_PeepholeEnabled
Enable/disable peephole.
A Convolution2dDescriptor for the Convolution2dLayer.
uint32_t m_PadLeft
Padding left value in the width dimension.
IConnectableLayer * AddQuantizedLstmLayer(const QuantizedLstmInputParams ¶ms, const char *name=nullptr)
IConnectableLayer * AddConstantLayer(const ConstTensor &input, const char *name=nullptr)
float m_Eps
Value to add to the variance. Used to avoid dividing by zero.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
uint32_t m_PadRight
Padding right value in the width dimension.
Copyright (c) 2021 ARM Limited and Contributors.
IConnectableLayer * AddDepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
Private implementation of INetwork.
void CheckConstTensors(const ConstTensor &expected, const ConstTensor &actual)
uint32_t m_PadTop
Padding top value in the height dimension.
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
IConnectableLayer * AddQLstmLayer(const QLstmDescriptor &descriptor, const LstmInputParams ¶ms, const char *name=nullptr)
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
void CheckInputParameters(const LstmInputParams &inputParams)
bool m_LayerNormEnabled
Enable/disable layer normalization.
An LstmDescriptor for the LstmLayer.
uint32_t m_PadTop
Padding top value in the height dimension.
void CheckDescriptor(const LstmDescriptor &descriptor)
float m_ProjectionClip
Clipping threshold value for the projection.
A FullyConnectedDescriptor for the FullyConnectedLayer.
bool m_BiasEnabled
Enable/disable bias.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
bool m_PeepholeEnabled
Enable/disable peephole.
void CheckDescriptor(const Convolution2dDescriptor &convolution2dDescriptor)
A QLstmDescriptor for the QLstmLayer.
void CheckInputParameters(const LstmInputParams &inputParams)
void CheckInputParameters(const QuantizedLstmInputParams &inputParams)
uint32_t m_ActivationFunc
The activation function to use.
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
void CheckDescriptor(const DepthwiseConvolution2dDescriptor &convolution2dDescriptor)
float m_ClippingThresCell
Clipping threshold value for the cell state.
float m_CellClip
Clipping threshold value for the cell state.
bool m_CifgEnabled
Enable/disable cifg (coupled input & forget gate).
EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &fullyConnectedDescriptor, const char *name=nullptr)
virtual void Accept(ILayerVisitor &visitor) const =0
Apply a visitor to this layer.
bool m_ProjectionEnabled
Enable/disable the projection layer.
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
void CheckConstTensorPtrs(const std::string &name, const ConstTensor *expected, const ConstTensor *actual)
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
IConnectableLayer * AddBatchNormalizationLayer(const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr)
virtual int Connect(IInputSlot &destination)=0
void CheckConstTensorPtrs(const std::string &name, const ConstTensor *expected, const ConstTensor *actual)
IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
IConnectableLayer * AddLstmLayer(const LstmDescriptor &descriptor, const LstmInputParams ¶ms, const char *name=nullptr)
bool m_CifgEnabled
Enable/disable CIFG (coupled input & forget gate).
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
uint32_t m_PadLeft
Padding left value in the width dimension.
uint32_t m_PadRight
Padding right value in the width dimension.
bool m_ConstantWeights
Enable/disable constant weights and biases.