aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Flynn <jim.flynn@arm.com>2019-06-24 14:32:41 +0100
committerDavid Monahan <david.monahan@arm.com>2019-06-24 13:56:48 +0000
commit965c7c63ffe069bf3b5e20372e8b3dc3873f8166 (patch)
tree520cc02b37cf17373ca0ea395db9f6f7ed66b106
parentbf0e7226ef0ba5ee3e5c7144368c4c9c379b0330 (diff)
downloadarmnn-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.cpp103
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