diff options
author | Jim Flynn <jim.flynn@arm.com> | 2019-06-24 14:32:41 +0100 |
---|---|---|
committer | David Monahan <david.monahan@arm.com> | 2019-06-24 13:56:48 +0000 |
commit | 965c7c63ffe069bf3b5e20372e8b3dc3873f8166 (patch) | |
tree | 520cc02b37cf17373ca0ea395db9f6f7ed66b106 | |
parent | bf0e7226ef0ba5ee3e5c7144368c4c9c379b0330 (diff) | |
download | armnn-965c7c63ffe069bf3b5e20372e8b3dc3873f8166.tar.gz |
IVGCVSW-3343 Add backward compatibility deserialisation test for pad value
Change-Id: Ic0f4745e26ce177dad26c60d3b84c450240d2c7b
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
-rw-r--r-- | src/armnnSerializer/test/SerializerTests.cpp | 103 |
1 files changed, 80 insertions, 23 deletions
diff --git a/src/armnnSerializer/test/SerializerTests.cpp b/src/armnnSerializer/test/SerializerTests.cpp index c1918c79f6..8b1594e141 100644 --- a/src/armnnSerializer/test/SerializerTests.cpp +++ b/src/armnnSerializer/test/SerializerTests.cpp @@ -1691,34 +1691,34 @@ BOOST_AUTO_TEST_CASE(SerializeNormalization) deserializedNetwork->Accept(verifier); } -BOOST_AUTO_TEST_CASE(SerializePad) +class PadLayerVerifier : public LayerVerifierBase { - class PadLayerVerifier : public LayerVerifierBase +public: + PadLayerVerifier(const std::string& layerName, + const std::vector<armnn::TensorInfo>& inputInfos, + const std::vector<armnn::TensorInfo>& outputInfos, + const armnn::PadDescriptor& descriptor) + : LayerVerifierBase(layerName, inputInfos, outputInfos), m_Descriptor(descriptor) {} + + void VisitPadLayer(const armnn::IConnectableLayer* layer, + const armnn::PadDescriptor& descriptor, + const char* name) override { - public: - PadLayerVerifier(const std::string& layerName, - const std::vector<armnn::TensorInfo>& inputInfos, - const std::vector<armnn::TensorInfo>& outputInfos, - const armnn::PadDescriptor& descriptor) - : LayerVerifierBase(layerName, inputInfos, outputInfos) - , m_Descriptor(descriptor) {} + VerifyNameAndConnections(layer, name); + VerifyDescriptor(descriptor); + } - void VisitPadLayer(const armnn::IConnectableLayer* layer, - const armnn::PadDescriptor& descriptor, - const char* name) override - { - VerifyNameAndConnections(layer, name); - VerifyDescriptor(descriptor); - } +private: + void VerifyDescriptor(const armnn::PadDescriptor& descriptor) + { + BOOST_TEST(descriptor.m_PadList == m_Descriptor.m_PadList); + } - private: - void VerifyDescriptor(const armnn::PadDescriptor& descriptor) - { - BOOST_TEST(descriptor.m_PadList == m_Descriptor.m_PadList); - } + armnn::PadDescriptor m_Descriptor; +}; - armnn::PadDescriptor m_Descriptor; - }; +BOOST_AUTO_TEST_CASE(SerializePad) +{ const std::string layerName("pad"); const armnn::TensorInfo inputTensorInfo = armnn::TensorInfo({1, 2, 3, 4}, armnn::DataType::Float32); @@ -1744,6 +1744,63 @@ BOOST_AUTO_TEST_CASE(SerializePad) deserializedNetwork->Accept(verifier); } +BOOST_AUTO_TEST_CASE(CheckSerializePadBackwardCompatibility) +{ + // The PadDescriptor is being extended with a float PadValue (so a value other than 0 + // can be used to pad the tensor. + // + // This test contains a binary representation of a simple input->pad->output network + // prior to this change to test that the descriptor has been updated in a backward + // compatible way with respect to Deserialization of older binary dumps + unsigned int size = 532; + const unsigned char padModel[] = { + 0x10,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x10,0x00,0x04,0x00,0x08,0x00,0x0C,0x00,0x0A,0x00,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x54,0x01,0x00,0x00, + 0x6C,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0xD0,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x0B,0x04,0x00,0x00,0x00,0x96,0xFF,0xFF,0xFF, + 0x04,0x00,0x00,0x00,0x9E,0xFF,0xFF,0xFF,0x04,0x00,0x00,0x00,0x72,0xFF,0xFF,0xFF,0x02,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0xFF,0xFF,0xFF, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x16,0x0C,0x00,0x00,0x00, + 0x08,0x00,0x0E,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x00,0x00,0x06,0x00,0x08,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x18,0x00,0x04,0x00, + 0x08,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x0E,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x14,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x70,0x61,0x64,0x00, + 0x01,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x08,0x00,0x08,0x00, + 0x00,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x52,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x07,0x00,0x08,0x00,0x08,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x04,0x00,0x00,0x00,0xF6,0xFF,0xFF,0xFF,0x0C,0x00,0x00,0x00,0x00,0x00,0x06,0x00, + 0x0A,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x14,0x00,0x00,0x00, + 0x04,0x00,0x08,0x00,0x0C,0x00,0x10,0x00,0x0E,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x08,0x00,0x0A,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x10,0x00,0x08,0x00,0x07,0x00,0x0C,0x00,0x0A,0x00,0x00,0x00, + 0x00,0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0 }; + + std::stringstream ss; + for (unsigned int i = 0; i < size; ++i) + { + ss << padModel[i]; + } + std::string padNetwork = ss.str(); + armnn::INetworkPtr deserializedNetwork = DeserializeNetwork(padNetwork); + BOOST_CHECK(deserializedNetwork); + + const std::string layerName("pad"); + const armnn::TensorInfo inputTensorInfo = armnn::TensorInfo({1, 2, 3, 4}, armnn::DataType::Float32); + const armnn::TensorInfo outputTensorInfo = armnn::TensorInfo({1, 3, 5, 7}, armnn::DataType::Float32); + + armnn::PadDescriptor desc({{0, 0}, {1, 0}, {1, 1}, {1, 2}}); + + PadLayerVerifier verifier(layerName, {inputTensorInfo}, {outputTensorInfo}, desc); + deserializedNetwork->Accept(verifier); +} + BOOST_AUTO_TEST_CASE(SerializePermute) { class PermuteLayerVerifier : public LayerVerifierBase |