9 #include <doctest/doctest.h> 47 CHECK(m_Descriptor.m_Eps == descriptor.
m_Eps);
56 CHECK(m_Descriptor.m_CifgEnabled == descriptor.
m_CifgEnabled);
63 CHECK(m_Descriptor.m_CellClip == descriptor.
m_CellClip);
65 CHECK(m_Descriptor.m_CifgEnabled == descriptor.
m_CifgEnabled);
73 m_InputParams.m_InputToInputWeights,
77 m_InputParams.m_InputToForgetWeights,
81 m_InputParams.m_InputToCellWeights,
85 m_InputParams.m_InputToOutputWeights,
89 m_InputParams.m_RecurrentToInputWeights,
93 m_InputParams.m_RecurrentToForgetWeights,
97 m_InputParams.m_RecurrentToCellWeights,
101 m_InputParams.m_RecurrentToOutputWeights,
112 TEST_CASE(
"CheckConvolution2dLayer")
123 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
124 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
135 TEST_CASE(
"CheckNamedConvolution2dLayer")
137 const char* layerName =
"Convolution2dLayer";
147 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
148 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
159 TEST_CASE(
"CheckConvolution2dLayerWithBiases")
171 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
172 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
175 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
176 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
188 TEST_CASE(
"CheckNamedConvolution2dLayerWithBiases")
190 const char* layerName =
"Convolution2dLayer";
201 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
202 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
205 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
206 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
218 TEST_CASE(
"CheckDepthwiseConvolution2dLayer")
229 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
230 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
241 TEST_CASE(
"CheckNamedDepthwiseConvolution2dLayer")
243 const char* layerName =
"DepthwiseConvolution2dLayer";
253 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
254 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
268 TEST_CASE(
"CheckDepthwiseConvolution2dLayerWithBiases")
280 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
281 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
284 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
285 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
297 TEST_CASE(
"CheckNamedDepthwiseConvolution2dLayerWithBiases")
299 const char* layerName =
"DepthwiseConvolution2dLayer";
310 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
311 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
314 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
315 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
327 TEST_CASE(
"CheckFullyConnectedLayer")
334 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
335 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
351 TEST_CASE(
"CheckNamedFullyConnectedLayer")
353 const char* layerName =
"FullyConnectedLayer";
359 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
360 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
376 TEST_CASE(
"CheckFullyConnectedLayerWithBiases")
383 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
384 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
387 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
388 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
408 TEST_CASE(
"CheckNamedFullyConnectedLayerWithBiases")
410 const char* layerName =
"FullyConnectedLayer";
416 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
417 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
420 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
421 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
441 TEST_CASE(
"CheckBatchNormalizationLayer")
444 descriptor.
m_Eps = 0.0002f;
447 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
448 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
451 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
452 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
455 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
456 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
459 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
460 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
471 TEST_CASE(
"CheckNamedBatchNormalizationLayer")
473 const char* layerName =
"BatchNormalizationLayer";
475 descriptor.
m_Eps = 0.0002f;
478 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
479 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
482 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
483 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
486 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
487 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
490 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
491 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
499 descriptor, mean, variance, beta, gamma, layerName);
503 TEST_CASE(
"CheckConstLayer")
505 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
506 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
517 TEST_CASE(
"CheckNamedConstLayer")
519 const char* layerName =
"ConstantLayer";
520 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
521 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
532 TEST_CASE(
"CheckLstmLayerBasic")
540 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
541 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
544 inputToForgetWeightsData);
546 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
547 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
550 inputToCellWeightsData);
552 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
553 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
556 inputToOutputWeightsData);
558 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
559 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
562 recurrentToForgetWeightsData);
564 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
565 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
568 recurrentToCellWeightsData);
570 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
571 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
574 recurrentToOutputWeightsData);
576 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
577 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
582 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
583 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
588 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
589 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
613 TEST_CASE(
"CheckNamedLstmLayerBasic")
615 const char* layerName =
"LstmLayer";
622 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
623 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
626 inputToForgetWeightsData);
628 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
629 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
632 inputToCellWeightsData);
634 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
635 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
638 inputToOutputWeightsData);
640 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
641 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
644 recurrentToForgetWeightsData);
646 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
647 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
650 recurrentToCellWeightsData);
652 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
653 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
656 recurrentToOutputWeightsData);
658 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
659 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
664 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
665 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
670 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
671 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
695 TEST_CASE(
"CheckLstmLayerCifgDisabled")
703 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
704 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
707 inputToForgetWeightsData);
709 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
710 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
713 inputToCellWeightsData);
715 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
716 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
719 inputToOutputWeightsData);
721 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
722 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
725 recurrentToForgetWeightsData);
727 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
728 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
731 recurrentToCellWeightsData);
733 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
734 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
737 recurrentToOutputWeightsData);
739 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
740 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
745 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
746 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
751 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
752 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
757 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
758 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
761 inputToInputWeightsData);
763 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
764 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
767 recurrentToInputWeightsData);
769 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
770 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
798 TEST_CASE(
"CheckNamedLstmLayerCifgDisabled")
800 const char* layerName =
"LstmLayer";
807 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
808 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
811 inputToForgetWeightsData);
813 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
814 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
817 inputToCellWeightsData);
819 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
820 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
823 inputToOutputWeightsData);
825 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
826 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
829 recurrentToForgetWeightsData);
831 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
832 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
835 recurrentToCellWeightsData);
837 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
838 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
841 recurrentToOutputWeightsData);
843 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
844 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
849 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
850 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
855 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
856 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
861 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
862 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
865 inputToInputWeightsData);
867 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
868 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
871 recurrentToInputWeightsData);
873 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
874 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
903 TEST_CASE(
"CheckLstmLayerPeephole")
912 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
913 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
916 inputToForgetWeightsData);
918 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
919 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
922 inputToCellWeightsData);
924 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
925 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
928 inputToOutputWeightsData);
930 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
931 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
934 recurrentToForgetWeightsData);
936 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
937 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
940 recurrentToCellWeightsData);
942 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
943 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
946 recurrentToOutputWeightsData);
948 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
949 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
954 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
955 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
960 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
961 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
966 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
967 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
970 cellToForgetWeightsData);
972 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
973 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
976 cellToOutputWeightsData);
1000 TEST_CASE(
"CheckLstmLayerPeepholeCifgDisabled")
1009 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1010 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1013 inputToForgetWeightsData);
1015 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1016 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1019 inputToCellWeightsData);
1021 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1022 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1025 inputToOutputWeightsData);
1027 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1028 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1031 recurrentToForgetWeightsData);
1033 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1034 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1037 recurrentToCellWeightsData);
1039 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1040 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1043 recurrentToOutputWeightsData);
1045 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1046 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1049 forgetGateBiasData);
1051 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1052 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1057 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1058 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1061 outputGateBiasData);
1063 std::vector<float> cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1064 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
1067 cellToInputWeightsData);
1069 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1070 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1073 cellToForgetWeightsData);
1075 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1076 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1079 cellToOutputWeightsData);
1081 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1082 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1085 inputToInputWeightsData);
1087 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1088 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1091 recurrentToInputWeightsData);
1093 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1094 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1129 TEST_CASE(
"CheckNamedLstmLayerPeephole")
1131 const char* layerName =
"LstmLayer";
1139 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1140 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1143 inputToForgetWeightsData);
1145 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1146 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1149 inputToCellWeightsData);
1151 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1152 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1155 inputToOutputWeightsData);
1157 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1158 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1161 recurrentToForgetWeightsData);
1163 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1164 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1167 recurrentToCellWeightsData);
1169 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1170 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1173 recurrentToOutputWeightsData);
1175 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1176 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1179 forgetGateBiasData);
1181 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1182 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1187 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1188 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1191 outputGateBiasData);
1193 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1194 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1197 cellToForgetWeightsData);
1199 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1200 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1203 cellToOutputWeightsData);
1228 TEST_CASE(
"CheckLstmLayerProjection")
1237 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1238 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1241 inputToForgetWeightsData);
1243 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1244 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1247 inputToCellWeightsData);
1249 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1250 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1253 inputToOutputWeightsData);
1255 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1256 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1259 recurrentToForgetWeightsData);
1261 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1262 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1265 recurrentToCellWeightsData);
1267 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1268 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1271 recurrentToOutputWeightsData);
1273 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1274 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1277 forgetGateBiasData);
1279 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1280 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1285 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1286 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1289 outputGateBiasData);
1291 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1292 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1295 projectionBiasData);
1297 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1298 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1301 projectionWeightsData);
1325 TEST_CASE(
"CheckNamedLstmLayerProjection")
1327 const char* layerName =
"LstmLayer";
1335 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1336 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1339 inputToForgetWeightsData);
1341 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1342 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1345 inputToCellWeightsData);
1347 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1348 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1351 inputToOutputWeightsData);
1353 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1354 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1357 recurrentToForgetWeightsData);
1359 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1360 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1363 recurrentToCellWeightsData);
1365 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1366 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1369 recurrentToOutputWeightsData);
1371 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1372 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1375 forgetGateBiasData);
1377 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1378 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1383 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1384 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1387 outputGateBiasData);
1389 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1390 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1393 projectionBiasData);
1395 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1396 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1399 projectionWeightsData);
1423 TEST_CASE(
"CheckQLstmLayerBasic")
1431 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1432 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1435 inputToForgetWeightsData);
1437 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1438 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1441 inputToCellWeightsData);
1443 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1444 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1447 inputToOutputWeightsData);
1449 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1450 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1453 recurrentToForgetWeightsData);
1455 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1456 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1459 recurrentToCellWeightsData);
1461 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1462 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1465 recurrentToOutputWeightsData);
1467 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1468 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1471 forgetGateBiasData);
1473 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1474 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1479 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1480 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1483 outputGateBiasData);
1504 TEST_CASE(
"CheckNamedQLstmLayerBasic")
1506 const char* layerName =
"QLstmLayer";
1513 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1514 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1517 inputToForgetWeightsData);
1519 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1520 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1523 inputToCellWeightsData);
1525 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1526 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1529 inputToOutputWeightsData);
1531 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1532 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1535 recurrentToForgetWeightsData);
1537 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1538 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1541 recurrentToCellWeightsData);
1543 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1544 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1547 recurrentToOutputWeightsData);
1549 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1550 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1553 forgetGateBiasData);
1555 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1556 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1561 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1562 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1565 outputGateBiasData);
1586 TEST_CASE(
"CheckQLstmLayerCifgDisabled")
1594 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1595 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1598 inputToForgetWeightsData);
1600 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1601 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1604 inputToCellWeightsData);
1606 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1607 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1610 inputToOutputWeightsData);
1612 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1613 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1616 recurrentToForgetWeightsData);
1618 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1619 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1622 recurrentToCellWeightsData);
1624 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1625 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1628 recurrentToOutputWeightsData);
1630 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1631 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1634 forgetGateBiasData);
1636 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1637 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1642 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1643 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1646 outputGateBiasData);
1649 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1650 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1653 inputToInputWeightsData);
1655 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1656 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1659 recurrentToInputWeightsData);
1661 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1662 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1693 TEST_CASE(
"CheckQLstmLayerCifgDisabledPeepholeEnabled")
1702 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1703 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1706 inputToForgetWeightsData);
1708 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1709 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1712 inputToCellWeightsData);
1714 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1715 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1718 inputToOutputWeightsData);
1720 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1721 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1724 recurrentToForgetWeightsData);
1726 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1727 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1730 recurrentToCellWeightsData);
1732 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1733 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1736 recurrentToOutputWeightsData);
1738 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1739 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1742 forgetGateBiasData);
1744 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1745 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1750 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1751 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1754 outputGateBiasData);
1757 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1758 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1761 inputToInputWeightsData);
1763 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1764 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1767 recurrentToInputWeightsData);
1769 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1770 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1776 std::vector<int16_t> cellToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1777 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
1780 cellToInputWeightsData);
1782 std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1783 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1786 cellToForgetWeightsData);
1788 std::vector<int16_t> cellToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1789 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1792 cellToOutputWeightsData);
1825 TEST_CASE(
"CheckQLstmLayerCifgEnabledPeepholeEnabled")
1834 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1835 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1838 inputToForgetWeightsData);
1840 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1841 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1844 inputToCellWeightsData);
1846 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1847 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1850 inputToOutputWeightsData);
1852 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1853 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1856 recurrentToForgetWeightsData);
1858 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1859 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1862 recurrentToCellWeightsData);
1864 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1865 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1868 recurrentToOutputWeightsData);
1870 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1871 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1874 forgetGateBiasData);
1876 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1877 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1882 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1883 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1886 outputGateBiasData);
1889 std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1890 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1893 cellToForgetWeightsData);
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};
1899 cellToOutputWeightsData);
1926 TEST_CASE(
"CheckQLstmLayerProjectionEnabled")
1935 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1936 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1939 inputToForgetWeightsData);
1941 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1942 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1945 inputToCellWeightsData);
1947 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1948 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1951 inputToOutputWeightsData);
1953 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1954 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1957 recurrentToForgetWeightsData);
1959 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1960 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1963 recurrentToCellWeightsData);
1965 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1966 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1969 recurrentToOutputWeightsData);
1971 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1972 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1975 forgetGateBiasData);
1977 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1978 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1983 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1984 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1987 outputGateBiasData);
1990 std::vector<uint8_t> projectionWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1991 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1994 projectionWeightsData);
1996 std::vector<int32_t> projectionBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1997 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
2000 projectionBiasData);
2027 TEST_CASE(
"CheckQLstmLayerCifgDisabledLayerNormEnabled")
2036 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2037 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2040 inputToForgetWeightsData);
2042 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2043 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2046 inputToCellWeightsData);
2048 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2049 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2052 inputToOutputWeightsData);
2054 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2055 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2058 recurrentToForgetWeightsData);
2060 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2061 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2064 recurrentToCellWeightsData);
2066 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2067 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2070 recurrentToOutputWeightsData);
2072 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2073 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2076 forgetGateBiasData);
2078 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2079 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2084 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2085 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2088 outputGateBiasData);
2091 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2092 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2095 inputToInputWeightsData);
2097 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2098 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2101 recurrentToInputWeightsData);
2103 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2104 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2110 std::vector<int16_t> inputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2111 std::vector<unsigned int> inputLayerNormWeightsDimensions = {1, 1, 3, 3};
2114 inputLayerNormWeightsData);
2116 std::vector<int16_t> forgetLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2117 std::vector<unsigned int> forgetLayerNormWeightsDimensions = {1, 1, 3, 3};
2120 forgetLayerNormWeightsData);
2122 std::vector<int16_t> cellLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2123 std::vector<unsigned int> cellLayerNormWeightsDimensions = {1, 1, 3, 3};
2126 cellLayerNormWeightsData);
2128 std::vector<int16_t> outputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2129 std::vector<unsigned int> outputLayerNormWeightsDimensions = {1, 1, 3, 3};
2132 outputLayerNormWeightsData);
2167 TEST_CASE(
"CheckQuantizedLstmLayer")
2169 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2170 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2173 inputToInputWeightsData);
2175 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2176 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2179 inputToForgetWeightsData);
2181 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2182 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2185 inputToCellWeightsData);
2187 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2188 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2191 inputToOutputWeightsData);
2194 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2195 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2198 recurrentToInputWeightsData);
2200 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2201 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2204 recurrentToForgetWeightsData);
2206 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2207 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2210 recurrentToCellWeightsData);
2212 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2213 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2216 recurrentToOutputWeightsData);
2219 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2220 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2225 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2226 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2229 forgetGateBiasData);
2231 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2232 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2237 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2238 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2241 outputGateBiasData);
2268 TEST_CASE(
"CheckNamedQuantizedLstmLayer")
2270 const char* layerName =
"LstmLayer";
2271 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2272 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2275 inputToInputWeightsData);
2277 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2278 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2281 inputToForgetWeightsData);
2283 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2284 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2287 inputToCellWeightsData);
2289 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2290 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2293 inputToOutputWeightsData);
2296 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2297 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2300 recurrentToInputWeightsData);
2302 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2303 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2306 recurrentToForgetWeightsData);
2308 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2309 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2312 recurrentToCellWeightsData);
2314 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2315 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2318 recurrentToOutputWeightsData);
2321 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2322 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2327 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2328 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2331 forgetGateBiasData);
2333 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2334 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2339 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2340 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2343 outputGateBiasData);
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.
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.
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.
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.
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...
void CheckConstTensorPtrs(const std::string &name, const ConstTensor *expected, const ConstTensor *actual)
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &fullyConnectedDescriptor, const char *name=nullptr)
bool m_ProjectionEnabled
Enable/disable the projection layer.
void CheckInputParameters(const QuantizedLstmInputParams ¶ms)
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
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
virtual ARMNN_NO_DEPRECATE_WARN_END void ExecuteStrategy(IStrategy &strategy) const =0
Apply a visitor to this layer.
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.