IVGCVSW-6510 Serialization + Deserialization implementation
Subtask of story: IVGCVSW-6164 Add a Pooling3d FrontEnd and Ref Implementation
* Add serialization support
* Add deserialization support
* Add corresponding unit tests
Change-Id: I7cce5421f0a9b7c47a03524e733f3315131ba125
Signed-off-by: Tamas Nyiri <tamas.nyiri@arm.com>
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index a9f7b7d..4249e08 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -1079,6 +1079,39 @@
CreateAnyLayer(fbPooling2dLayer.o, serializer::Layer::Layer_Pooling2dLayer);
}
+void SerializerStrategy::SerializePooling3dLayer(const armnn::IConnectableLayer* layer,
+ const armnn::Pooling3dDescriptor& pooling3dDescriptor,
+ const char* name)
+{
+ IgnoreUnused(name);
+
+ auto fbPooling3dBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Pooling3d);
+ auto fbPooling3dDescriptor = serializer::CreatePooling3dDescriptor(
+ m_flatBufferBuilder,
+ GetFlatBufferPoolingAlgorithm(pooling3dDescriptor.m_PoolType),
+ pooling3dDescriptor.m_PadLeft,
+ pooling3dDescriptor.m_PadRight,
+ pooling3dDescriptor.m_PadTop,
+ pooling3dDescriptor.m_PadBottom,
+ pooling3dDescriptor.m_PadFront,
+ pooling3dDescriptor.m_PadBack,
+ pooling3dDescriptor.m_PoolWidth,
+ pooling3dDescriptor.m_PoolHeight,
+ pooling3dDescriptor.m_PoolDepth,
+ pooling3dDescriptor.m_StrideX,
+ pooling3dDescriptor.m_StrideY,
+ pooling3dDescriptor.m_StrideZ,
+ GetFlatBufferOutputShapeRounding(pooling3dDescriptor.m_OutputShapeRounding),
+ GetFlatBufferPaddingMethod(pooling3dDescriptor.m_PaddingMethod),
+ GetFlatBufferDataLayout(pooling3dDescriptor.m_DataLayout));
+
+ auto fbPooling3dLayer = serializer::CreatePooling3dLayer(m_flatBufferBuilder,
+ fbPooling3dBaseLayer,
+ fbPooling3dDescriptor);
+
+ CreateAnyLayer(fbPooling3dLayer.o, serializer::Layer::Layer_Pooling3dLayer);
+}
+
void SerializerStrategy::SerializePreluLayer(const armnn::IConnectableLayer* layer,
const char* name)
{
@@ -2208,6 +2241,13 @@
SerializePooling2dLayer(layer, layerDescriptor, name);
break;
}
+ case armnn::LayerType::Pooling3d :
+ {
+ const armnn::Pooling3dDescriptor& layerDescriptor =
+ static_cast<const armnn::Pooling3dDescriptor&>(descriptor);
+ SerializePooling3dLayer(layer, layerDescriptor, name);
+ break;
+ }
case armnn::LayerType::Prelu :
{
SerializePreluLayer(layer, name);