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")
124 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
125 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
141 TEST_CASE(
"CheckNamedConvolution2dLayer")
143 const char* layerName =
"Convolution2dLayer";
153 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
154 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
171 TEST_CASE(
"CheckConvolution2dLayerWithBiases")
183 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
184 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
187 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
188 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
208 TEST_CASE(
"CheckNamedConvolution2dLayerWithBiases")
210 const char* layerName =
"Convolution2dLayer";
221 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
222 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
225 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
226 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
246 TEST_CASE(
"CheckDepthwiseConvolution2dLayer")
257 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
258 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
274 TEST_CASE(
"CheckNamedDepthwiseConvolution2dLayer")
276 const char* layerName =
"DepthwiseConvolution2dLayer";
286 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
287 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
303 TEST_CASE(
"CheckDepthwiseConvolution2dLayerWithBiases")
315 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
316 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
319 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
320 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
340 TEST_CASE(
"CheckNamedDepthwiseConvolution2dLayerWithBiases")
342 const char* layerName =
"DepthwiseConvolution2dLayer";
353 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
354 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
357 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
358 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
378 TEST_CASE(
"CheckFullyConnectedLayer")
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};
402 TEST_CASE(
"CheckNamedFullyConnectedLayer")
404 const char* layerName =
"FullyConnectedLayer";
410 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
411 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
427 TEST_CASE(
"CheckFullyConnectedLayerWithBiases")
434 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
435 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
438 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
439 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
459 TEST_CASE(
"CheckNamedFullyConnectedLayerWithBiases")
461 const char* layerName =
"FullyConnectedLayer";
467 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
468 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
471 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
472 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
492 TEST_CASE(
"CheckBatchNormalizationLayer")
495 descriptor.
m_Eps = 0.0002f;
498 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
499 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
502 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
503 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
506 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
507 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
510 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
511 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
522 TEST_CASE(
"CheckNamedBatchNormalizationLayer")
524 const char* layerName =
"BatchNormalizationLayer";
526 descriptor.
m_Eps = 0.0002f;
529 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
530 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
533 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
534 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
537 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
538 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
541 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
542 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
550 descriptor, mean, variance, beta, gamma, layerName);
554 TEST_CASE(
"CheckConstLayer")
556 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
557 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
568 TEST_CASE(
"CheckNamedConstLayer")
570 const char* layerName =
"ConstantLayer";
571 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
572 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
583 TEST_CASE(
"CheckLstmLayerBasic")
591 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
592 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
595 inputToForgetWeightsData);
597 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
598 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
601 inputToCellWeightsData);
603 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
604 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
607 inputToOutputWeightsData);
609 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
610 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
613 recurrentToForgetWeightsData);
615 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
616 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
619 recurrentToCellWeightsData);
621 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
622 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
625 recurrentToOutputWeightsData);
627 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
628 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
633 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
634 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
639 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
640 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
664 TEST_CASE(
"CheckNamedLstmLayerBasic")
666 const char* layerName =
"LstmLayer";
673 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
674 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
677 inputToForgetWeightsData);
679 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
680 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
683 inputToCellWeightsData);
685 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
686 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
689 inputToOutputWeightsData);
691 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
692 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
695 recurrentToForgetWeightsData);
697 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
698 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
701 recurrentToCellWeightsData);
703 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
704 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
707 recurrentToOutputWeightsData);
709 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
710 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
715 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
716 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
721 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
722 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
746 TEST_CASE(
"CheckLstmLayerCifgDisabled")
754 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
755 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
758 inputToForgetWeightsData);
760 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
761 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
764 inputToCellWeightsData);
766 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
767 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
770 inputToOutputWeightsData);
772 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
773 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
776 recurrentToForgetWeightsData);
778 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
779 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
782 recurrentToCellWeightsData);
784 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
785 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
788 recurrentToOutputWeightsData);
790 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
791 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
796 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
797 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
802 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
803 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
808 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
809 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
812 inputToInputWeightsData);
814 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
815 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
818 recurrentToInputWeightsData);
820 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
821 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
849 TEST_CASE(
"CheckNamedLstmLayerCifgDisabled")
851 const char* layerName =
"LstmLayer";
858 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
859 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
862 inputToForgetWeightsData);
864 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
865 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
868 inputToCellWeightsData);
870 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
871 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
874 inputToOutputWeightsData);
876 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
877 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
880 recurrentToForgetWeightsData);
882 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
883 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
886 recurrentToCellWeightsData);
888 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
889 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
892 recurrentToOutputWeightsData);
894 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
895 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
900 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
901 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
906 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
907 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
912 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
913 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
916 inputToInputWeightsData);
918 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
919 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
922 recurrentToInputWeightsData);
924 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
925 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
954 TEST_CASE(
"CheckLstmLayerPeephole")
963 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
964 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
967 inputToForgetWeightsData);
969 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
970 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
973 inputToCellWeightsData);
975 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
976 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
979 inputToOutputWeightsData);
981 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
982 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
985 recurrentToForgetWeightsData);
987 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
988 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
991 recurrentToCellWeightsData);
993 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
994 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
997 recurrentToOutputWeightsData);
999 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1000 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1003 forgetGateBiasData);
1005 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1006 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1011 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1012 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1015 outputGateBiasData);
1017 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1018 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1021 cellToForgetWeightsData);
1023 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1024 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1027 cellToOutputWeightsData);
1051 TEST_CASE(
"CheckLstmLayerPeepholeCifgDisabled")
1060 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1061 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1064 inputToForgetWeightsData);
1066 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1067 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1070 inputToCellWeightsData);
1072 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1073 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1076 inputToOutputWeightsData);
1078 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1079 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1082 recurrentToForgetWeightsData);
1084 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1085 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1088 recurrentToCellWeightsData);
1090 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1091 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1094 recurrentToOutputWeightsData);
1096 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1097 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1100 forgetGateBiasData);
1102 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1103 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1108 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1109 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1112 outputGateBiasData);
1114 std::vector<float> cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1115 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
1118 cellToInputWeightsData);
1120 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1121 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1124 cellToForgetWeightsData);
1126 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1127 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1130 cellToOutputWeightsData);
1132 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1133 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1136 inputToInputWeightsData);
1138 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1139 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1142 recurrentToInputWeightsData);
1144 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1145 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1180 TEST_CASE(
"CheckNamedLstmLayerPeephole")
1182 const char* layerName =
"LstmLayer";
1190 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1191 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1194 inputToForgetWeightsData);
1196 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1197 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1200 inputToCellWeightsData);
1202 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1203 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1206 inputToOutputWeightsData);
1208 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1209 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1212 recurrentToForgetWeightsData);
1214 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1215 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1218 recurrentToCellWeightsData);
1220 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1221 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1224 recurrentToOutputWeightsData);
1226 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1227 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1230 forgetGateBiasData);
1232 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1233 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1238 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1239 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1242 outputGateBiasData);
1244 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1245 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1248 cellToForgetWeightsData);
1250 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1251 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1254 cellToOutputWeightsData);
1279 TEST_CASE(
"CheckLstmLayerProjection")
1288 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1289 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1292 inputToForgetWeightsData);
1294 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1295 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1298 inputToCellWeightsData);
1300 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1301 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1304 inputToOutputWeightsData);
1306 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1307 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1310 recurrentToForgetWeightsData);
1312 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1313 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1316 recurrentToCellWeightsData);
1318 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1319 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1322 recurrentToOutputWeightsData);
1324 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1325 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1328 forgetGateBiasData);
1330 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1331 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1336 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1337 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1340 outputGateBiasData);
1342 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1343 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1346 projectionBiasData);
1348 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1349 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1352 projectionWeightsData);
1376 TEST_CASE(
"CheckNamedLstmLayerProjection")
1378 const char* layerName =
"LstmLayer";
1386 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1387 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1390 inputToForgetWeightsData);
1392 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1393 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1396 inputToCellWeightsData);
1398 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1399 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1402 inputToOutputWeightsData);
1404 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1405 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1408 recurrentToForgetWeightsData);
1410 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1411 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1414 recurrentToCellWeightsData);
1416 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1417 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1420 recurrentToOutputWeightsData);
1422 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1423 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1426 forgetGateBiasData);
1428 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1429 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1434 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1435 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1438 outputGateBiasData);
1440 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1441 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1444 projectionBiasData);
1446 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1447 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1450 projectionWeightsData);
1474 TEST_CASE(
"CheckQLstmLayerBasic")
1482 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1483 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1486 inputToForgetWeightsData);
1488 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1489 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1492 inputToCellWeightsData);
1494 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1495 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1498 inputToOutputWeightsData);
1500 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1501 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1504 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};
1510 recurrentToCellWeightsData);
1512 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1513 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1516 recurrentToOutputWeightsData);
1518 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1519 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1522 forgetGateBiasData);
1524 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1525 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1530 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1531 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1534 outputGateBiasData);
1555 TEST_CASE(
"CheckNamedQLstmLayerBasic")
1557 const char* layerName =
"QLstmLayer";
1564 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1565 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1568 inputToForgetWeightsData);
1570 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1571 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1574 inputToCellWeightsData);
1576 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1577 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1580 inputToOutputWeightsData);
1582 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1583 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1586 recurrentToForgetWeightsData);
1588 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1589 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1592 recurrentToCellWeightsData);
1594 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1595 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1598 recurrentToOutputWeightsData);
1600 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1601 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1604 forgetGateBiasData);
1606 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1607 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1612 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1613 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1616 outputGateBiasData);
1637 TEST_CASE(
"CheckQLstmLayerCifgDisabled")
1645 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1646 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1649 inputToForgetWeightsData);
1651 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1652 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1655 inputToCellWeightsData);
1657 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1658 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1661 inputToOutputWeightsData);
1663 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1664 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1667 recurrentToForgetWeightsData);
1669 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1670 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1673 recurrentToCellWeightsData);
1675 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1676 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1679 recurrentToOutputWeightsData);
1681 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1682 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1685 forgetGateBiasData);
1687 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1688 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1693 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1694 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1697 outputGateBiasData);
1700 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1701 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1704 inputToInputWeightsData);
1706 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1707 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1710 recurrentToInputWeightsData);
1712 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1713 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1744 TEST_CASE(
"CheckQLstmLayerCifgDisabledPeepholeEnabled")
1753 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1754 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1757 inputToForgetWeightsData);
1759 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1760 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1763 inputToCellWeightsData);
1765 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1766 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1769 inputToOutputWeightsData);
1771 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1772 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1775 recurrentToForgetWeightsData);
1777 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1778 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1781 recurrentToCellWeightsData);
1783 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1784 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1787 recurrentToOutputWeightsData);
1789 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1790 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1793 forgetGateBiasData);
1795 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1796 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1801 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1802 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1805 outputGateBiasData);
1808 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1809 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1812 inputToInputWeightsData);
1814 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1815 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1818 recurrentToInputWeightsData);
1820 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1821 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1827 std::vector<int16_t> cellToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1828 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
1831 cellToInputWeightsData);
1833 std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1834 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1837 cellToForgetWeightsData);
1839 std::vector<int16_t> cellToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1840 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1843 cellToOutputWeightsData);
1876 TEST_CASE(
"CheckQLstmLayerCifgEnabledPeepholeEnabled")
1885 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1886 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1889 inputToForgetWeightsData);
1891 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1892 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1895 inputToCellWeightsData);
1897 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1898 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1901 inputToOutputWeightsData);
1903 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1904 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1907 recurrentToForgetWeightsData);
1909 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1910 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1913 recurrentToCellWeightsData);
1915 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1916 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1919 recurrentToOutputWeightsData);
1921 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1922 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1925 forgetGateBiasData);
1927 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1928 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1933 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1934 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1937 outputGateBiasData);
1940 std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1941 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1944 cellToForgetWeightsData);
1946 std::vector<int16_t> cellToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1947 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1950 cellToOutputWeightsData);
1977 TEST_CASE(
"CheckQLstmLayerProjectionEnabled")
1986 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1987 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1990 inputToForgetWeightsData);
1992 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1993 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1996 inputToCellWeightsData);
1998 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1999 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2002 inputToOutputWeightsData);
2004 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2005 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2008 recurrentToForgetWeightsData);
2010 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2011 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2014 recurrentToCellWeightsData);
2016 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2017 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2020 recurrentToOutputWeightsData);
2022 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2023 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2026 forgetGateBiasData);
2028 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2029 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2034 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2035 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2038 outputGateBiasData);
2041 std::vector<uint8_t> projectionWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2042 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
2045 projectionWeightsData);
2047 std::vector<int32_t> projectionBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2048 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
2051 projectionBiasData);
2078 TEST_CASE(
"CheckQLstmLayerCifgDisabledLayerNormEnabled")
2087 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2088 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2091 inputToForgetWeightsData);
2093 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2094 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2097 inputToCellWeightsData);
2099 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2100 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2103 inputToOutputWeightsData);
2105 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2106 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2109 recurrentToForgetWeightsData);
2111 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2112 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2115 recurrentToCellWeightsData);
2117 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2118 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2121 recurrentToOutputWeightsData);
2123 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2124 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2127 forgetGateBiasData);
2129 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2130 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2135 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2136 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2139 outputGateBiasData);
2142 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2143 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2146 inputToInputWeightsData);
2148 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2149 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2152 recurrentToInputWeightsData);
2154 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2155 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2161 std::vector<int16_t> inputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2162 std::vector<unsigned int> inputLayerNormWeightsDimensions = {1, 1, 3, 3};
2165 inputLayerNormWeightsData);
2167 std::vector<int16_t> forgetLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2168 std::vector<unsigned int> forgetLayerNormWeightsDimensions = {1, 1, 3, 3};
2171 forgetLayerNormWeightsData);
2173 std::vector<int16_t> cellLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2174 std::vector<unsigned int> cellLayerNormWeightsDimensions = {1, 1, 3, 3};
2177 cellLayerNormWeightsData);
2179 std::vector<int16_t> outputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2180 std::vector<unsigned int> outputLayerNormWeightsDimensions = {1, 1, 3, 3};
2183 outputLayerNormWeightsData);
2218 TEST_CASE(
"CheckQuantizedLstmLayer")
2220 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2221 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2224 inputToInputWeightsData);
2226 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2227 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2230 inputToForgetWeightsData);
2232 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2233 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2236 inputToCellWeightsData);
2238 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2239 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2242 inputToOutputWeightsData);
2245 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2246 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2249 recurrentToInputWeightsData);
2251 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2252 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2255 recurrentToForgetWeightsData);
2257 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2258 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2261 recurrentToCellWeightsData);
2263 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2264 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2267 recurrentToOutputWeightsData);
2270 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2271 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2276 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2277 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2280 forgetGateBiasData);
2282 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2283 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};
2292 outputGateBiasData);
2319 TEST_CASE(
"CheckNamedQuantizedLstmLayer")
2321 const char* layerName =
"LstmLayer";
2322 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2323 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
2326 inputToInputWeightsData);
2328 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2329 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
2332 inputToForgetWeightsData);
2334 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2335 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
2338 inputToCellWeightsData);
2340 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2341 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
2344 inputToOutputWeightsData);
2347 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2348 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
2351 recurrentToInputWeightsData);
2353 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2354 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
2357 recurrentToForgetWeightsData);
2359 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2360 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
2363 recurrentToCellWeightsData);
2365 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2366 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
2369 recurrentToOutputWeightsData);
2372 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2373 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
2378 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2379 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
2382 forgetGateBiasData);
2384 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2385 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
2390 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
2391 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
2394 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).
IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &convolution2dDescriptor, const char *name=nullptr)
IConnectableLayer * AddDepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const char *name=nullptr)
uint32_t m_PadRight
Padding right value in the width dimension.
Copyright (c) 2021 ARM Limited and Contributors.
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).
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 * 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.