aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAron Virginas-Tar <Aron.Virginas-Tar@arm.com>2019-06-21 14:20:11 +0100
committerÁron Virginás-Tar <aron.virginas-tar@arm.com>2019-06-21 14:30:24 +0000
commit5e1b0cf8a7519afb49874a83429ef9939a249f0d (patch)
tree5c5153572cbc5ddba779af24f0bb81350e0ec4d5
parentcb549301bc4c5a405e02c1f433537557423d2e36 (diff)
downloadarmnn-5e1b0cf8a7519afb49874a83429ef9939a249f0d.tar.gz
IVGCVSW-3330 Parse dilation parameters for DepthwiseConvolution2d in Deserializer
* Added code for reading parameters dilationX and dilationY to Deserializer::ParseDepthwiseConvolution() * Updated serialization unit tests to check for dilation params for both Convolution2d and DepthwiseConvolution2d Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> Change-Id: Id03629866009e799cf7daf8b7bdafc73d158d9bb
-rw-r--r--src/armnnDeserializer/Deserializer.cpp4
-rw-r--r--src/armnnSerializer/test/SerializerTests.cpp120
2 files changed, 76 insertions, 48 deletions
diff --git a/src/armnnDeserializer/Deserializer.cpp b/src/armnnDeserializer/Deserializer.cpp
index 0569d8b000..452ef8e5ae 100644
--- a/src/armnnDeserializer/Deserializer.cpp
+++ b/src/armnnDeserializer/Deserializer.cpp
@@ -1046,7 +1046,9 @@ void Deserializer::ParseDepthwiseConvolution2d(GraphPtr graph, unsigned int laye
descriptor.m_PadTop = serializerDescriptor->padTop();
descriptor.m_PadBottom = serializerDescriptor->padBottom();
descriptor.m_StrideX = serializerDescriptor->strideX();
- descriptor.m_StrideY = serializerDescriptor->strideY();;
+ descriptor.m_StrideY = serializerDescriptor->strideY();
+ descriptor.m_DilationX = serializerDescriptor->dilationX();
+ descriptor.m_DilationY = serializerDescriptor->dilationY();
descriptor.m_BiasEnabled = serializerDescriptor->biasEnabled();;
descriptor.m_DataLayout = ToDataLayout(serializerDescriptor->dataLayout());
diff --git a/src/armnnSerializer/test/SerializerTests.cpp b/src/armnnSerializer/test/SerializerTests.cpp
index 448778b118..c1918c79f6 100644
--- a/src/armnnSerializer/test/SerializerTests.cpp
+++ b/src/armnnSerializer/test/SerializerTests.cpp
@@ -421,47 +421,56 @@ BOOST_AUTO_TEST_CASE(SerializeConvolution2d)
const std::vector<armnn::TensorInfo>& inputInfos,
const std::vector<armnn::TensorInfo>& outputInfos,
const armnn::Convolution2dDescriptor& descriptor,
- const armnn::ConstTensor& weight,
- const armnn::Optional<armnn::ConstTensor>& bias)
- : LayerVerifierBase(layerName, inputInfos, outputInfos)
- , m_Descriptor(descriptor)
- , m_Weight(weight)
- , m_Bias(bias) {}
+ const armnn::ConstTensor& weights,
+ const armnn::Optional<armnn::ConstTensor>& biases) :
+ LayerVerifierBase(layerName, inputInfos, outputInfos),
+ m_Descriptor(descriptor),
+ m_Weights(weights),
+ m_Biases(biases)
+ {}
void VisitConvolution2dLayer(const armnn::IConnectableLayer* layer,
const armnn::Convolution2dDescriptor& descriptor,
- const armnn::ConstTensor& weight,
- const armnn::Optional<armnn::ConstTensor>& bias,
+ const armnn::ConstTensor& weights,
+ const armnn::Optional<armnn::ConstTensor>& biases,
const char* name) override
{
VerifyNameAndConnections(layer, name);
VerifyDescriptor(descriptor);
- CompareConstTensor(weight, m_Weight);
+ // check weights
+ CompareConstTensor(weights, m_Weights);
- BOOST_TEST(bias.has_value() == m_Bias.has_value());
- if (bias.has_value() && m_Bias.has_value())
+ // check biases
+ BOOST_CHECK(biases.has_value() == descriptor.m_BiasEnabled);
+ BOOST_CHECK(m_Biases.has_value() == m_Descriptor.m_BiasEnabled);
+
+ BOOST_CHECK(biases.has_value() == m_Biases.has_value());
+
+ if (biases.has_value() && m_Biases.has_value())
{
- CompareConstTensor(bias.value(), m_Bias.value());
+ CompareConstTensor(biases.value(), m_Biases.value());
}
}
private:
void VerifyDescriptor(const armnn::Convolution2dDescriptor& descriptor)
{
- BOOST_TEST(descriptor.m_PadLeft == m_Descriptor.m_PadLeft);
- BOOST_TEST(descriptor.m_PadRight == m_Descriptor.m_PadRight);
- BOOST_TEST(descriptor.m_PadTop == m_Descriptor.m_PadTop);
- BOOST_TEST(descriptor.m_PadBottom == m_Descriptor.m_PadBottom);
- BOOST_TEST(descriptor.m_StrideX == m_Descriptor.m_StrideX);
- BOOST_TEST(descriptor.m_StrideY == m_Descriptor.m_StrideY);
- BOOST_TEST(descriptor.m_BiasEnabled == m_Descriptor.m_BiasEnabled);
- BOOST_TEST(GetDataLayoutName(descriptor.m_DataLayout) == GetDataLayoutName(m_Descriptor.m_DataLayout));
+ BOOST_CHECK(descriptor.m_PadLeft == m_Descriptor.m_PadLeft);
+ BOOST_CHECK(descriptor.m_PadRight == m_Descriptor.m_PadRight);
+ BOOST_CHECK(descriptor.m_PadTop == m_Descriptor.m_PadTop);
+ BOOST_CHECK(descriptor.m_PadBottom == m_Descriptor.m_PadBottom);
+ BOOST_CHECK(descriptor.m_StrideX == m_Descriptor.m_StrideX);
+ BOOST_CHECK(descriptor.m_StrideY == m_Descriptor.m_StrideY);
+ BOOST_CHECK(descriptor.m_DilationX == m_Descriptor.m_DilationX);
+ BOOST_CHECK(descriptor.m_DilationY == m_Descriptor.m_DilationY);
+ BOOST_CHECK(descriptor.m_BiasEnabled == m_Descriptor.m_BiasEnabled);
+ BOOST_CHECK(descriptor.m_DataLayout == m_Descriptor.m_DataLayout);
}
- armnn::Convolution2dDescriptor m_Descriptor;
- armnn::ConstTensor m_Weight;
- armnn::Optional<armnn::ConstTensor> m_Bias;
+ armnn::Convolution2dDescriptor m_Descriptor;
+ armnn::ConstTensor m_Weights;
+ armnn::Optional<armnn::ConstTensor> m_Biases;
};
const std::string layerName("convolution2d");
@@ -484,6 +493,8 @@ BOOST_AUTO_TEST_CASE(SerializeConvolution2d)
descriptor.m_PadBottom = 1;
descriptor.m_StrideX = 2;
descriptor.m_StrideY = 2;
+ descriptor.m_DilationX = 2;
+ descriptor.m_DilationY = 2;
descriptor.m_BiasEnabled = true;
descriptor.m_DataLayout = armnn::DataLayout::NHWC;
@@ -518,47 +529,56 @@ BOOST_AUTO_TEST_CASE(SerializeDepthwiseConvolution2d)
const std::vector<armnn::TensorInfo>& inputInfos,
const std::vector<armnn::TensorInfo>& outputInfos,
const armnn::DepthwiseConvolution2dDescriptor& descriptor,
- const armnn::ConstTensor& weight,
- const armnn::Optional<armnn::ConstTensor>& bias)
- : LayerVerifierBase(layerName, inputInfos, outputInfos)
- , m_Descriptor(descriptor)
- , m_Weight(weight)
- , m_Bias(bias) {}
+ const armnn::ConstTensor& weights,
+ const armnn::Optional<armnn::ConstTensor>& biases) :
+ LayerVerifierBase(layerName, inputInfos, outputInfos),
+ m_Descriptor(descriptor),
+ m_Weights(weights),
+ m_Biases(biases)
+ {}
void VisitDepthwiseConvolution2dLayer(const armnn::IConnectableLayer* layer,
const armnn::DepthwiseConvolution2dDescriptor& descriptor,
- const armnn::ConstTensor& weight,
- const armnn::Optional<armnn::ConstTensor>& bias,
+ const armnn::ConstTensor& weights,
+ const armnn::Optional<armnn::ConstTensor>& biases,
const char* name) override
{
VerifyNameAndConnections(layer, name);
VerifyDescriptor(descriptor);
- CompareConstTensor(weight, m_Weight);
+ // check weights
+ CompareConstTensor(weights, m_Weights);
- BOOST_TEST(bias.has_value() == m_Bias.has_value());
- if (bias.has_value() && m_Bias.has_value())
+ // check biases
+ BOOST_CHECK(biases.has_value() == descriptor.m_BiasEnabled);
+ BOOST_CHECK(m_Biases.has_value() == m_Descriptor.m_BiasEnabled);
+
+ BOOST_CHECK(biases.has_value() == m_Biases.has_value());
+
+ if (biases.has_value() && m_Biases.has_value())
{
- CompareConstTensor(bias.value(), m_Bias.value());
+ CompareConstTensor(biases.value(), m_Biases.value());
}
}
private:
void VerifyDescriptor(const armnn::DepthwiseConvolution2dDescriptor& descriptor)
{
- BOOST_TEST(descriptor.m_PadLeft == m_Descriptor.m_PadLeft);
- BOOST_TEST(descriptor.m_PadRight == m_Descriptor.m_PadRight);
- BOOST_TEST(descriptor.m_PadTop == m_Descriptor.m_PadTop);
- BOOST_TEST(descriptor.m_PadBottom == m_Descriptor.m_PadBottom);
- BOOST_TEST(descriptor.m_StrideX == m_Descriptor.m_StrideX);
- BOOST_TEST(descriptor.m_StrideY == m_Descriptor.m_StrideY);
- BOOST_TEST(descriptor.m_BiasEnabled == m_Descriptor.m_BiasEnabled);
- BOOST_TEST(GetDataLayoutName(descriptor.m_DataLayout) == GetDataLayoutName(m_Descriptor.m_DataLayout));
+ BOOST_CHECK(descriptor.m_PadLeft == m_Descriptor.m_PadLeft);
+ BOOST_CHECK(descriptor.m_PadRight == m_Descriptor.m_PadRight);
+ BOOST_CHECK(descriptor.m_PadTop == m_Descriptor.m_PadTop);
+ BOOST_CHECK(descriptor.m_PadBottom == m_Descriptor.m_PadBottom);
+ BOOST_CHECK(descriptor.m_StrideX == m_Descriptor.m_StrideX);
+ BOOST_CHECK(descriptor.m_StrideY == m_Descriptor.m_StrideY);
+ BOOST_CHECK(descriptor.m_DilationX == m_Descriptor.m_DilationX);
+ BOOST_CHECK(descriptor.m_DilationY == m_Descriptor.m_DilationY);
+ BOOST_CHECK(descriptor.m_BiasEnabled == m_Descriptor.m_BiasEnabled);
+ BOOST_CHECK(descriptor.m_DataLayout == m_Descriptor.m_DataLayout);
}
armnn::DepthwiseConvolution2dDescriptor m_Descriptor;
- armnn::ConstTensor m_Weight;
- armnn::Optional<armnn::ConstTensor> m_Bias;
+ armnn::ConstTensor m_Weights;
+ armnn::Optional<armnn::ConstTensor> m_Biases;
};
const std::string layerName("depwiseConvolution2d");
@@ -575,8 +595,14 @@ BOOST_AUTO_TEST_CASE(SerializeDepthwiseConvolution2d)
armnn::ConstTensor biases(biasesInfo, biasesData);
armnn::DepthwiseConvolution2dDescriptor descriptor;
- descriptor.m_StrideX = 1;
- descriptor.m_StrideY = 1;
+ descriptor.m_PadLeft = 1;
+ descriptor.m_PadRight = 1;
+ descriptor.m_PadTop = 1;
+ descriptor.m_PadBottom = 1;
+ descriptor.m_StrideX = 2;
+ descriptor.m_StrideY = 2;
+ descriptor.m_DilationX = 2;
+ descriptor.m_DilationY = 2;
descriptor.m_BiasEnabled = true;
descriptor.m_DataLayout = armnn::DataLayout::NHWC;