9 #include <boost/test/unit_test.hpp> 65 if (expected ==
nullptr)
67 BOOST_CHECK_MESSAGE(actual ==
nullptr, name +
" actual should have been a nullptr");
71 BOOST_CHECK_MESSAGE(actual !=
nullptr, name +
" actual should have been set");
72 if (actual !=
nullptr)
81 CheckConstTensorPtrs(
"ProjectionBias", m_InputParams.m_ProjectionBias, inputParams.
m_ProjectionBias);
82 CheckConstTensorPtrs(
"ProjectionWeights", m_InputParams.m_ProjectionWeights, inputParams.
m_ProjectionWeights);
83 CheckConstTensorPtrs(
"OutputGateBias", m_InputParams.m_OutputGateBias, inputParams.
m_OutputGateBias);
84 CheckConstTensorPtrs(
"InputToInputWeights",
86 CheckConstTensorPtrs(
"InputToForgetWeights",
88 CheckConstTensorPtrs(
"InputToCellWeights", m_InputParams.m_InputToCellWeights, inputParams.
m_InputToCellWeights);
101 CheckConstTensorPtrs(
103 CheckConstTensorPtrs(
105 CheckConstTensorPtrs(
"InputGateBias", m_InputParams.m_InputGateBias, inputParams.
m_InputGateBias);
106 CheckConstTensorPtrs(
"ForgetGateBias", m_InputParams.m_ForgetGateBias, inputParams.
m_ForgetGateBias);
107 CheckConstTensorPtrs(
"CellBias", m_InputParams.m_CellBias, inputParams.
m_CellBias);
114 if (expected ==
nullptr)
116 BOOST_CHECK_MESSAGE(actual ==
nullptr, name +
" actual should have been a nullptr");
120 BOOST_CHECK_MESSAGE(actual !=
nullptr, name +
" actual should have been set");
121 if (actual !=
nullptr)
130 CheckConstTensorPtrs(
"InputToInputWeights",
131 m_InputParams.m_InputToInputWeights,
134 CheckConstTensorPtrs(
"InputToForgetWeights",
135 m_InputParams.m_InputToForgetWeights,
138 CheckConstTensorPtrs(
"InputToCellWeights",
139 m_InputParams.m_InputToCellWeights,
142 CheckConstTensorPtrs(
"InputToOutputWeights",
143 m_InputParams.m_InputToOutputWeights,
146 CheckConstTensorPtrs(
"RecurrentToInputWeights",
147 m_InputParams.m_RecurrentToInputWeights,
150 CheckConstTensorPtrs(
"RecurrentToForgetWeights",
151 m_InputParams.m_RecurrentToForgetWeights,
154 CheckConstTensorPtrs(
"RecurrentToCellWeights",
155 m_InputParams.m_RecurrentToCellWeights,
158 CheckConstTensorPtrs(
"RecurrentToOutputWeights",
159 m_InputParams.m_RecurrentToOutputWeights,
162 CheckConstTensorPtrs(
"InputGateBias", m_InputParams.m_InputGateBias, inputParams.
m_InputGateBias);
163 CheckConstTensorPtrs(
"ForgetGateBias", m_InputParams.m_ForgetGateBias, inputParams.
m_ForgetGateBias);
164 CheckConstTensorPtrs(
"CellBias", m_InputParams.m_CellBias, inputParams.
m_CellBias);
165 CheckConstTensorPtrs(
"OutputGateBias", m_InputParams.m_OutputGateBias, inputParams.
m_OutputGateBias);
181 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
182 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
195 const char* layerName =
"Convolution2dLayer";
205 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
206 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
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};
233 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
234 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
248 const char* layerName =
"Convolution2dLayer";
259 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
260 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
263 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
264 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
287 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
288 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
301 const char* layerName =
"DepthwiseConvolution2dLayer";
311 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
312 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
338 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
339 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
342 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
343 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
357 const char* layerName =
"DepthwiseConvolution2dLayer";
368 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
369 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
372 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
373 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
390 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
391 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
404 const char* layerName =
"FullyConnectedLayer";
408 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
409 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
426 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
427 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
430 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
431 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
445 const char* layerName =
"FullyConnectedLayer";
450 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
451 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
454 std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
455 std::vector<unsigned int> biasDimensions = {1, 1, 3, 3};
470 descriptor.
m_Eps = 0.0002f;
473 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
474 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
477 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
478 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
481 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
482 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
485 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
486 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
499 const char* layerName =
"BatchNormalizationLayer";
501 descriptor.
m_Eps = 0.0002f;
504 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
505 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
508 std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
509 std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3};
512 std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
513 std::vector<unsigned int> betaDimensions = {1, 1, 3, 3};
516 std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
517 std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3};
525 descriptor, mean, variance, beta, gamma, layerName);
531 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
532 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
545 const char* layerName =
"ConstantLayer";
546 std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
547 std::vector<unsigned int> dimensions = {1, 1, 3, 3};
566 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
567 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
571 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
572 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
576 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
577 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
581 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
582 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
584 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
586 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
587 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
589 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
591 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
592 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
594 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
596 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
597 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
601 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
602 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
606 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
607 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
632 const char* layerName =
"LstmLayer";
639 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
640 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
644 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
645 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
649 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
650 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
654 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
655 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
657 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
659 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
660 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
662 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
664 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
665 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
667 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
669 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
670 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
674 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
675 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
679 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
680 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
711 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
712 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
716 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
717 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
721 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
722 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
726 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
727 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
729 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
731 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
732 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
734 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
736 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
737 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
739 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
741 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
742 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
746 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
747 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};
756 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
757 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
761 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
762 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
764 4, recurrentToInputWeightsDimensions.data(),
DataType::Float32), recurrentToInputWeightsData);
766 std::vector<float> cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
767 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
771 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
772 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
802 const char* layerName =
"LstmLayer";
809 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
810 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
814 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
815 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
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};
824 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
825 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
827 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
829 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
830 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
832 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
834 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
835 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
837 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
839 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
840 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
844 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
845 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
849 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
850 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
854 std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
855 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
859 std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
860 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
862 4, recurrentToInputWeightsDimensions.data(),
DataType::Float32), recurrentToInputWeightsData);
864 std::vector<float> cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
865 std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3};
869 std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
870 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
908 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
909 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
913 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
914 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
918 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
919 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
923 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
924 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
926 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
928 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
929 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
931 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
933 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
934 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
936 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
938 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
939 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
943 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
944 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
948 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
949 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
953 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
954 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
958 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
959 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
987 const char* layerName =
"LstmLayer";
995 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
996 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1000 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1001 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1005 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1006 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1010 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1011 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1013 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1015 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1016 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1018 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1020 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1021 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1023 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1025 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1026 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1030 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1031 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1035 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1036 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1040 std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1041 std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3};
1045 std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1046 std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3};
1082 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1083 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1087 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1088 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1092 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1093 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1097 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1098 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1100 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1102 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1103 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1105 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1107 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1108 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1110 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1112 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1113 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1117 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1118 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1122 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1123 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1127 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1128 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1132 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1133 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1161 const char* layerName =
"LstmLayer";
1169 std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1170 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1174 std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1175 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1179 std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1180 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1184 std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1185 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1187 4, recurrentToForgetWeightsDimensions.data(),
DataType::Float32), recurrentToForgetWeightsData);
1189 std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1190 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1192 4, recurrentToCellWeightsDimensions.data(),
DataType::Float32), recurrentToCellWeightsData);
1194 std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1195 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1197 4, recurrentToOutputWeightsDimensions.data(),
DataType::Float32), recurrentToOutputWeightsData);
1199 std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1200 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1204 std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1205 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1209 std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1210 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1214 std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1215 std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3};
1219 std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
1220 std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3};
1248 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1249 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1253 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1254 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1258 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1259 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1263 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1264 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1269 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1270 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1272 4, recurrentToInputWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToInputWeightsData);
1274 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1275 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1277 4, recurrentToForgetWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToForgetWeightsData);
1279 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1280 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1282 4, recurrentToCellWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToCellWeightsData);
1284 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1285 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1287 4, recurrentToOutputWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToOutputWeightsData);
1290 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1291 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1295 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1296 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1300 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1301 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1305 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1306 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
1337 const char* layerName =
"LstmLayer";
1338 std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1339 std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3};
1343 std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1344 std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3};
1348 std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1349 std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3};
1353 std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1354 std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3};
1359 std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1360 std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3};
1362 4, recurrentToInputWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToInputWeightsData);
1364 std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1365 std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3};
1367 4, recurrentToForgetWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToForgetWeightsData);
1369 std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1370 std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3};
1372 4, recurrentToCellWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToCellWeightsData);
1374 std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1375 std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3};
1377 4, recurrentToOutputWeightsDimensions.data(),
DataType::QAsymmU8), recurrentToOutputWeightsData);
1380 std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1381 std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3};
1385 std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1386 std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3};
1390 std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1391 std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3};
1395 std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
1396 std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3};
void CheckDescriptor(const BatchNormalizationDescriptor &descriptor)
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
uint32_t m_PadBottom
Padding bottom value in the height dimension.
bool m_BiasEnabled
Enable/disable bias.
void CheckConstTensorPtrs(const std::string &name, const ConstTensor *expected, const ConstTensor *actual)
bool m_ProjectionEnabled
Enable/disable the projection layer.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
bool m_BiasEnabled
Enable/disable bias.
uint32_t m_PadBottom
Padding bottom value in the height dimension.
float m_ClippingThresProj
Clipping threshold value for the projection.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
bool m_TransposeWeightMatrix
Enable/disable transpose weight matrix.
void CheckDescriptor(const FullyConnectedDescriptor &descriptor)
A Convolution2dDescriptor for the Convolution2dLayer.
uint32_t m_PadLeft
Padding left value in the width dimension.
IConnectableLayer * AddDepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Adds a 2D depthwise convolution layer to the network.
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) 2020 ARM Limited.
IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &fullyConnectedDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Adds a fully connected layer to the network.
BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)
void CheckConstTensors(const ConstTensor &expected, const ConstTensor &actual)
IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Adds a 2D convolution layer to the network.
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.
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
An LstmDescriptor for the LstmLayer.
uint32_t m_PadTop
Padding top value in the height dimension.
void CheckDescriptor(const LstmDescriptor &descriptor)
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)
void CheckInputParameters(const LstmInputParams &inputParams)
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
void CheckInputParameters(const QuantizedLstmInputParams &inputParams)
uint32_t m_ActivationFunc
The activation function to use.
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
void CheckDescriptor(const DepthwiseConvolution2dDescriptor &convolution2dDescriptor)
float m_ClippingThresCell
Clipping threshold value for the cell state.
Private implementation of INetwork.
BOOST_AUTO_TEST_SUITE_END()
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...
IConnectableLayer * AddBatchNormalizationLayer(const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr) override
Adds a batch normalization layer to the network.
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
virtual void Accept(ILayerVisitor &visitor) const =0
Apply a visitor to this layer.
IConnectableLayer * AddConstantLayer(const ConstTensor &input, const char *name=nullptr) override
Adds a layer with no inputs and a single output, which always corresponds to the passed in constant t...
void CheckConstTensorPtrs(const std::string &name, const ConstTensor *expected, const ConstTensor *actual)
IConnectableLayer * AddLstmLayer(const LstmDescriptor &descriptor, const LstmInputParams ¶ms, const char *name=nullptr) override
Add a Lstm layer to the network.
IConnectableLayer * AddQuantizedLstmLayer(const QuantizedLstmInputParams ¶ms, const char *name=nullptr) override
Add a QuantizedLstm layer to the network.
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.