Add ConstTensorsAsInput support for Conv3d
* Constant weights and biases are now stored as Constant layers.
* Updated Serializer, Deserializer and unit tests to reflect this.
* Updated TfLiteParser.
* Updated Ref backend to handle constant weights and
bias as inputs rather than reading from member variables.
* Added Conv3d EndToEnd test.
* Added NCDHW DataLayout and unit tests.
Signed-off-by: Matthew Sloyan <matthew.sloyan@arm.com>
Change-Id: I10cdd354ca5f1c748730f92ffdb36bf810f83c8e
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 7e1b74e..84a9d53 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -388,18 +388,15 @@
CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_Convolution2dLayer);
}
-// Build FlatBuffer for Convolution2dLayer
+// Build FlatBuffer for Convolution3dLayer
void SerializerStrategy::SerializeConvolution3dLayer(const armnn::IConnectableLayer* layer,
const armnn::Convolution3dDescriptor& descriptor,
- const std::vector<armnn::ConstTensor>& constants,
const char* name)
{
IgnoreUnused(name);
- const armnn::ConstTensor weights = constants[0];
-
// Create FlatBuffer BaseLayer
- auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Convolution2d);
+ auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Convolution3d);
auto flatBufferDescriptor = CreateConvolution3dDescriptor(m_flatBufferBuilder,
descriptor.m_PadLeft,
@@ -416,21 +413,11 @@
descriptor.m_DilationZ,
descriptor.m_BiasEnabled,
GetFlatBufferDataLayout(descriptor.m_DataLayout));
- auto flatBufferWeightsConstTensorInfo = CreateConstTensorInfo(weights);
- flatbuffers::Offset<serializer::ConstTensor> flatBufferBiasesConstTensorInfo;
- if (constants.size() > 1)
- {
- const armnn::ConstTensor biases = constants[1];
- flatBufferBiasesConstTensorInfo = CreateConstTensorInfo(biases);
- }
-
- // Create the FlatBuffer Convolution2dLayer
+ // Create the FlatBuffer Convolution3dLayer
auto flatBufferLayer = CreateConvolution3dLayer(m_flatBufferBuilder,
flatBufferBaseLayer,
- flatBufferDescriptor,
- flatBufferWeightsConstTensorInfo,
- flatBufferBiasesConstTensorInfo);
+ flatBufferDescriptor);
// Add the AnyLayer to the FlatBufferLayers
CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_Convolution3dLayer);
@@ -2038,7 +2025,6 @@
static_cast<const armnn::Convolution3dDescriptor&>(descriptor);
SerializeConvolution3dLayer(layer,
layerDescriptor,
- constants,
name);
break;
}