diff options
author | Cathal Corbett <cathal.corbett@arm.com> | 2021-10-22 11:12:07 +0100 |
---|---|---|
committer | David Monahan <david.monahan@arm.com> | 2021-11-08 19:05:11 +0000 |
commit | 5b8093c17044e8eaaaa42d96ba4902dee5791be4 (patch) | |
tree | 7f49f91e76f171041fe51c2c078b9271aa220b48 /src/armnn/test/ConstTensorLayerVisitor.cpp | |
parent | d69cb904415621b066599dc20164bdb71558dc14 (diff) | |
download | armnn-5b8093c17044e8eaaaa42d96ba4902dee5791be4.tar.gz |
IVGCVSW-6420: Constant flag in tensor info is not set correctly
!android-nn-driver:6532
!armnn-internal-tests:372451
* Made fix to 2 out of 3 ConstTensor() constructors in Tensor.hpp to
throw InvalidArgumentException when TensorInfo isConstant parameter
is false.
* Added new ConstTensor() constructor in Tensor.cpp to accept vector<>.data()
using template<typename MemoryType>.
* Fixed runtime->GetOutputTensorInfo()/GetInputTensorInfo() methods and
called submethods to return TensorInfo& rather than TensorInfo.
* Fixed all failing unit tests for CpuRef/CpuAcc/GpuAcc to ensure any
ConstTensor created has it's TensorInfo isConstant set to true.
* Added unit tests in TensorTest.cpp to ensure ConstTensor constructors
throw InvalidArgumentException when TensorInfo isConstat parameter is
false.
* Added unit test to ensure an empty ConstTensor constructor will set
TensorInfo isConatant to true.
* Indentation fixes.
* Fix to arm_tensor.i to add isConstant parameter to TensorInfo
constructor. Added methods IsConstant() and SetConstant().
* Fix to const_tensor.py to throw ValueError when TensorInfo
isConstant is set to false when constructing a ConstTensor.
* Fixed PyArmnn unit tests to set TensorInfo isConstant to
True when ConstTensor is used.
* Added unit tests in test_const_tensor.py to ensure ConstTensor
constructors throw ValueError when TensorInfo isConstat parameter
is false.
Signed-off-by: Cathal Corbett <cathal.corbett@arm.com>
Change-Id: I44e440dd0422c366d31bbdbc77ad2b4db0bde148
Diffstat (limited to 'src/armnn/test/ConstTensorLayerVisitor.cpp')
-rw-r--r-- | src/armnn/test/ConstTensorLayerVisitor.cpp | 922 |
1 files changed, 565 insertions, 357 deletions
diff --git a/src/armnn/test/ConstTensorLayerVisitor.cpp b/src/armnn/test/ConstTensorLayerVisitor.cpp index e21e777409..cbc97b3c0e 100644 --- a/src/armnn/test/ConstTensorLayerVisitor.cpp +++ b/src/armnn/test/ConstTensorLayerVisitor.cpp @@ -122,7 +122,7 @@ TEST_CASE("CheckConvolution2dLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional()); @@ -146,7 +146,7 @@ TEST_CASE("CheckNamedConvolution2dLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName); @@ -170,11 +170,11 @@ TEST_CASE("CheckConvolution2dLayerWithBiases") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> biasDimensions = {1, 1, 3, 3}; - ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData); + ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32, 0.0f, 0, true), biasData); Optional<ConstTensor> optionalBiases(biases); TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases); @@ -200,11 +200,11 @@ TEST_CASE("CheckNamedConvolution2dLayerWithBiases") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> biasDimensions = {1, 1, 3, 3}; - ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData); + ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32, 0.0f, 0, true), biasData); Optional<ConstTensor> optionalBiases(biases); TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName); @@ -228,7 +228,7 @@ TEST_CASE("CheckDepthwiseConvolution2dLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional()); @@ -252,7 +252,7 @@ TEST_CASE("CheckNamedDepthwiseConvolution2dLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName); @@ -279,11 +279,11 @@ TEST_CASE("CheckDepthwiseConvolution2dLayerWithBiases") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> biasDimensions = {1, 1, 3, 3}; - ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData); + ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32, 0.0f, 0, true), biasData); Optional<ConstTensor> optionalBiases(biases); TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases); @@ -309,11 +309,11 @@ TEST_CASE("CheckNamedDepthwiseConvolution2dLayerWithBiases") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> biasDimensions = {1, 1, 3, 3}; - ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData); + ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32, 0.0f, 0, true), biasData); Optional<ConstTensor> optionalBiases(biases); TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName); @@ -333,7 +333,7 @@ TEST_CASE("CheckFullyConnectedLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestConstantLayerVisitor weightsVisitor(weights); TestFullyConnectedLayerVistor visitor(descriptor); @@ -358,7 +358,7 @@ TEST_CASE("CheckNamedFullyConnectedLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestConstantLayerVisitor weightsVisitor(weights); TestFullyConnectedLayerVistor visitor(descriptor, layerName); @@ -382,11 +382,11 @@ TEST_CASE("CheckFullyConnectedLayerWithBiases") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> biasDimensions = {1, 1, 3, 3}; - ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData); + ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32, 0.0f, 0, true), biasData); TestConstantLayerVisitor weightsVisitor(weights); TestConstantLayerVisitor biasesVisitor(biases); @@ -415,11 +415,11 @@ TEST_CASE("CheckNamedFullyConnectedLayerWithBiases") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> biasDimensions = {1, 1, 3, 3}; - ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData); + ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32, 0.0f, 0, true), biasData); TestConstantLayerVisitor weightsVisitor(weights); TestConstantLayerVisitor biasesVisitor(biases); @@ -446,19 +446,19 @@ TEST_CASE("CheckBatchNormalizationLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3}; - ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData); + ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32, 0.0f, 0, true), varianceData); std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> betaDimensions = {1, 1, 3, 3}; - ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData); + ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32, 0.0f, 0, true), betaData); std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3}; - ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData); + ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32, 0.0f, 0, true), gammaData); TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma); @@ -477,19 +477,19 @@ TEST_CASE("CheckNamedBatchNormalizationLayer") std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); std::vector<float> varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> varianceDimensions = {1, 1, 3, 3}; - ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData); + ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32, 0.0f, 0, true), varianceData); std::vector<float> betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> betaDimensions = {1, 1, 3, 3}; - ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData); + ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32, 0.0f, 0, true), betaData); std::vector<float> gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> gammaDimensions = {1, 1, 3, 3}; - ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData); + ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32, 0.0f, 0, true), gammaData); TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma, layerName); @@ -504,7 +504,7 @@ TEST_CASE("CheckConstLayer") { std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestConstantLayerVisitor visitor(input); @@ -519,7 +519,7 @@ TEST_CASE("CheckNamedConstLayer") const char* layerName = "ConstantLayer"; std::vector<float> data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> dimensions = {1, 1, 3, 3}; - ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data); + ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32, 0.0f, 0, true), data); TestConstantLayerVisitor visitor(input, layerName); @@ -540,47 +540,56 @@ TEST_CASE("CheckLstmLayerBasic") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; @@ -613,47 +622,56 @@ TEST_CASE("CheckNamedLstmLayerBasic") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; @@ -685,64 +703,76 @@ TEST_CASE("CheckLstmLayerCifgDisabled") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToInputWeightsData); std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputGateBiasData); - LstmInputParams params; + LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; params.m_InputToCellWeights = &inputToCellWeights; params.m_InputToOutputWeights = &inputToOutputWeights; @@ -777,62 +807,74 @@ TEST_CASE("CheckNamedLstmLayerCifgDisabled") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToInputWeightsData); std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputGateBiasData); LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; @@ -870,59 +912,70 @@ TEST_CASE("CheckLstmLayerPeephole") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToForgetWeights( - TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData); + TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellToForgetWeightsData); std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToOutputWeights( - TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData); + TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellToOutputWeightsData); - LstmInputParams params; + LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; params.m_InputToCellWeights = &inputToCellWeights; params.m_InputToOutputWeights = &inputToOutputWeights; @@ -956,77 +1009,92 @@ TEST_CASE("CheckLstmLayerPeepholeCifgDisabled") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); std::vector<float> cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToInputWeights( - TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32), cellToInputWeightsData); + TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellToInputWeightsData); std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToForgetWeights( - TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData); + TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellToForgetWeightsData); std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToOutputWeights( - TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData); + TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellToOutputWeightsData); std::vector<float> inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToInputWeightsData); std::vector<float> recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<float> inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputGateBiasData); LstmInputParams params; // Basic params @@ -1071,57 +1139,68 @@ TEST_CASE("CheckNamedLstmLayerPeephole") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); std::vector<float> cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToForgetWeights( - TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData); + TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellToForgetWeightsData); std::vector<float> cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToOutputWeights( - TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData); + TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellToOutputWeightsData); LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; @@ -1158,59 +1237,70 @@ TEST_CASE("CheckLstmLayerProjection") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3}; ConstTensor projectionBias( - TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData); + TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + projectionBiasData); std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3}; ConstTensor projectionWeights( - TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData); + TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + projectionWeightsData); - LstmInputParams params; + LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; params.m_InputToCellWeights = &inputToCellWeights; params.m_InputToOutputWeights = &inputToOutputWeights; @@ -1245,57 +1335,68 @@ TEST_CASE("CheckNamedLstmLayerProjection") std::vector<float> inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<float> inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToCellWeightsData); std::vector<float> inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<float> recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<float> recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<float> recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<float> forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + forgetGateBiasData); std::vector<float> cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + cellBiasData); std::vector<float> outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + outputGateBiasData); std::vector<float> projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3}; ConstTensor projectionBias( - TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData); + TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32, 0.0f, 0, true), + projectionBiasData); std::vector<float> projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3}; ConstTensor projectionWeights( - TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData); + TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32, 0.0f, 0, true), + projectionWeightsData); LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; @@ -1330,47 +1431,56 @@ TEST_CASE("CheckQLstmLayerBasic") std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; @@ -1403,47 +1513,56 @@ TEST_CASE("CheckNamedQLstmLayerBasic") std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); LstmInputParams params; params.m_InputToForgetWeights = &inputToForgetWeights; @@ -1475,63 +1594,75 @@ TEST_CASE("CheckQLstmLayerCifgDisabled") std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); // CIFG disabled params std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToInputWeightsData); std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + inputGateBiasData); LstmInputParams params; @@ -1571,79 +1702,94 @@ TEST_CASE("CheckQLstmLayerCifgDisabledPeepholeEnabled") std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); // CIFG disabled params std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToInputWeightsData); std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + inputGateBiasData); // Peephole enabled, CIFG disabled params std::vector<int16_t> cellToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToInputWeights( - TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::QSymmS16), cellToInputWeightsData); + TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + cellToInputWeightsData); std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToForgetWeights( - TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::QSymmS16), cellToForgetWeightsData); + TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + cellToForgetWeightsData); std::vector<int16_t> cellToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToOutputWeights( - TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::QSymmS16), cellToOutputWeightsData); + TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + cellToOutputWeightsData); LstmInputParams params; @@ -1688,58 +1834,69 @@ TEST_CASE("CheckQLstmLayerCifgEnabledPeepholeEnabled") std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); // Peephole enabled and CIFG enabled params std::vector<int16_t> cellToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToForgetWeights( - TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::QSymmS16), cellToForgetWeightsData); + TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + cellToForgetWeightsData); std::vector<int16_t> cellToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellToOutputWeights( - TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::QSymmS16), cellToOutputWeightsData); + TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + cellToOutputWeightsData); LstmInputParams params; @@ -1778,58 +1935,69 @@ TEST_CASE("CheckQLstmLayerProjectionEnabled") std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); // Projection enabled params std::vector<uint8_t> projectionWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> projectionWeightsDimensions = {1, 1, 3, 3}; - ConstTensor projectionWeights(TensorInfo( - 4, projectionWeightsDimensions.data(), DataType::QSymmS8), projectionWeightsData); + ConstTensor projectionWeights( + TensorInfo(4, projectionWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + projectionWeightsData); std::vector<int32_t> projectionBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> projectionBiasDimensions = {1, 1, 3, 3}; - ConstTensor projectionBias(TensorInfo( - 4, projectionBiasDimensions.data(), DataType::Signed32), projectionBiasData); + ConstTensor projectionBias( + TensorInfo(4, projectionBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + projectionBiasData); LstmInputParams params; @@ -1868,84 +2036,100 @@ TEST_CASE("CheckQLstmLayerCifgDisabledLayerNormEnabled") std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); // CIFG disabled params std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToInputWeightsData); std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + inputGateBiasData); // Layer Norm enabled, CIFG disabled params std::vector<int16_t> inputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputLayerNormWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputLayerNormWeights( - TensorInfo(4, inputLayerNormWeightsDimensions.data(), DataType::QSymmS16), inputLayerNormWeightsData); + TensorInfo(4, inputLayerNormWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + inputLayerNormWeightsData); std::vector<int16_t> forgetLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetLayerNormWeightsDimensions = {1, 1, 3, 3}; ConstTensor forgetLayerNormWeights( - TensorInfo(4, forgetLayerNormWeightsDimensions.data(), DataType::QSymmS16), forgetLayerNormWeightsData); + TensorInfo(4, forgetLayerNormWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + forgetLayerNormWeightsData); std::vector<int16_t> cellLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellLayerNormWeightsDimensions = {1, 1, 3, 3}; ConstTensor cellLayerNormWeights( - TensorInfo(4, cellLayerNormWeightsDimensions.data(), DataType::QSymmS16), cellLayerNormWeightsData); + TensorInfo(4, cellLayerNormWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + cellLayerNormWeightsData); std::vector<int16_t> outputLayerNormWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputLayerNormWeightsDimensions = {1, 1, 3, 3}; ConstTensor outputLayerNormWeights( - TensorInfo(4, outputLayerNormWeightsDimensions.data(), DataType::QSymmS16), outputLayerNormWeightsData); + TensorInfo(4, outputLayerNormWeightsDimensions.data(), DataType::QSymmS16, 0.0f, 0, true), + outputLayerNormWeightsData); LstmInputParams params; @@ -1985,64 +2169,76 @@ TEST_CASE("CheckQuantizedLstmLayer") std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToInputWeightsData); std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QSymmS8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + inputGateBiasData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); QuantizedLstmInputParams params; @@ -2075,64 +2271,76 @@ TEST_CASE("CheckNamedQuantizedLstmLayer") std::vector<uint8_t> inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToInputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToInputWeights( - TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8), inputToInputWeightsData); + TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + inputToInputWeightsData); std::vector<uint8_t> inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToForgetWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToForgetWeights( - TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8), inputToForgetWeightsData); + TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + inputToForgetWeightsData); std::vector<uint8_t> inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToCellWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToCellWeights( - TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8), inputToCellWeightsData); + TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + inputToCellWeightsData); std::vector<uint8_t> inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputToOutputWeightsDimensions = {1, 1, 3, 3}; ConstTensor inputToOutputWeights( - TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8), inputToOutputWeightsData); + TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + inputToOutputWeightsData); std::vector<uint8_t> recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToInputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToInputWeights(TensorInfo( - 4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToInputWeightsData); + ConstTensor recurrentToInputWeights( + TensorInfo(4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + recurrentToInputWeightsData); std::vector<uint8_t> recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToForgetWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToForgetWeights(TensorInfo( - 4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8), recurrentToForgetWeightsData); + ConstTensor recurrentToForgetWeights( + TensorInfo(4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + recurrentToForgetWeightsData); std::vector<uint8_t> recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToCellWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToCellWeights(TensorInfo( - 4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8), recurrentToCellWeightsData); + ConstTensor recurrentToCellWeights( + TensorInfo(4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + recurrentToCellWeightsData); std::vector<uint8_t> recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> recurrentToOutputWeightsDimensions = {1, 1, 3, 3}; - ConstTensor recurrentToOutputWeights(TensorInfo( - 4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToOutputWeightsData); + ConstTensor recurrentToOutputWeights( + TensorInfo(4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8, 0.0f, 0, true), + recurrentToOutputWeightsData); std::vector<int32_t> inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> inputGateBiasDimensions = {1, 1, 3, 3}; ConstTensor inputGateBias( - TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData); + TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + inputGateBiasData); std::vector<int32_t> forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> forgetGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor forgetGateBias(TensorInfo( - 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData); + ConstTensor forgetGateBias( + TensorInfo(4, forgetGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + forgetGateBiasData); std::vector<int32_t> cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> cellBiasDimensions = {1, 1, 3, 3}; - ConstTensor cellBias(TensorInfo( - 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData); + ConstTensor cellBias( + TensorInfo(4, cellBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + cellBiasData); std::vector<int32_t> outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<unsigned int> outputGateBiasDimensions = {1, 1, 3, 3}; - ConstTensor outputGateBias(TensorInfo( - 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData); + ConstTensor outputGateBias( + TensorInfo(4, outputGateBiasDimensions.data(), DataType::Signed32, 0.0f, 0, true), + outputGateBiasData); QuantizedLstmInputParams params; |