diff options
author | Jan Eilers <jan.eilers@arm.com> | 2021-04-06 17:29:03 +0100 |
---|---|---|
committer | Jan Eilers <jan.eilers@arm.com> | 2021-04-21 11:18:29 +0000 |
commit | 7612bd6cc385dfbf54f831a6349f3a9363c6d0a2 (patch) | |
tree | be63c7085e8802285473d10da8a7258a2600a378 /src/armnn/test/UtilsTests.cpp | |
parent | 4af561666b0ce5c12164447a5f7eb9722abb85f8 (diff) | |
download | armnn-7612bd6cc385dfbf54f831a6349f3a9363c6d0a2.tar.gz |
IVGCVSW-5842 Remove cross-wiring in depthwise
* Reading tensor infos won't allow a permutation vector anymore.
The permutation only changed the quantization dimension not the
shape and was therefore misleading
* The permutation of the full tensor info is now performed in
armnnUtils::Permuted
* Changed TfLite Parser depthwise parsing function
* Added unit tests to TfLite Parser with more random data
* Changed TfLite Delegate depthwise parsing function
* Added unit test to the delegate with per channel quantization
!android-nn-driver:5412
Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: I1f985ee69547bcaf16a72201e00a6b6fe1ef9a97
Diffstat (limited to 'src/armnn/test/UtilsTests.cpp')
-rw-r--r-- | src/armnn/test/UtilsTests.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/armnn/test/UtilsTests.cpp b/src/armnn/test/UtilsTests.cpp index f0198cb9d4..a813feaf7f 100644 --- a/src/armnn/test/UtilsTests.cpp +++ b/src/armnn/test/UtilsTests.cpp @@ -249,22 +249,24 @@ BOOST_AUTO_TEST_CASE(CyclicalGraphTopologicalSortTest) BOOST_AUTO_TEST_CASE(PermuteQuantizationDim) { - std::vector<float> scales; + std::vector<float> scales {1.0f, 1.0f}; // Set QuantizationDim to be index 1 - const armnn::TensorInfo info({ 1, 2, 3, 4 }, armnn::DataType::Float32, scales, 1U); - BOOST_CHECK(info.GetQuantizationDim().value() == 1U); + const armnn::TensorInfo perChannelInfo({ 1, 2, 3, 4 }, armnn::DataType::Float32, scales, 1U); + BOOST_CHECK(perChannelInfo.GetQuantizationDim().value() == 1U); // Permute so that index 1 moves to final index i.e. index 3 armnn::PermutationVector mappings({ 0, 3, 2, 1 }); - auto permutedPerChannel = armnnUtils::Permuted(info, mappings, true); - auto permuted = armnnUtils::Permuted(info, mappings); + auto permutedPerChannel = armnnUtils::Permuted(perChannelInfo, mappings); // Check that QuantizationDim is in index 3 BOOST_CHECK(permutedPerChannel.GetQuantizationDim().value() == 3U); - // Check previous implementation unchanged - BOOST_CHECK(permuted.GetQuantizationDim().value() == 1U); + // Even if there is only a single scale the quantization dim still exists and needs to be permuted + std::vector<float> scale {1.0f}; + const armnn::TensorInfo perChannelInfo1({ 1, 2, 3, 4 }, armnn::DataType::Float32, scale, 1U); + auto permuted = armnnUtils::Permuted(perChannelInfo1, mappings); + BOOST_CHECK(permuted.GetQuantizationDim().value() == 3U); } #if defined(ARMNNREF_ENABLED) |