From 5d7b0a314b3e354a6cbcf15f5dd78b50f1e02774 Mon Sep 17 00:00:00 2001 From: Matthew Sloyan Date: Mon, 18 Oct 2021 13:07:49 +0100 Subject: 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 Change-Id: I10cdd354ca5f1c748730f92ffdb36bf810f83c8e --- src/armnnSerializer/ArmnnSchema_generated.h | 39 ++++++++--------------------- 1 file changed, 10 insertions(+), 29 deletions(-) (limited to 'src/armnnSerializer/ArmnnSchema_generated.h') diff --git a/src/armnnSerializer/ArmnnSchema_generated.h b/src/armnnSerializer/ArmnnSchema_generated.h index 8234aa9c47..712ad28574 100644 --- a/src/armnnSerializer/ArmnnSchema_generated.h +++ b/src/armnnSerializer/ArmnnSchema_generated.h @@ -540,31 +540,34 @@ enum DataLayout { DataLayout_NHWC = 0, DataLayout_NCHW = 1, DataLayout_NDHWC = 2, + DataLayout_NCDHW = 3, DataLayout_MIN = DataLayout_NHWC, - DataLayout_MAX = DataLayout_NDHWC + DataLayout_MAX = DataLayout_NCDHW }; -inline const DataLayout (&EnumValuesDataLayout())[3] { +inline const DataLayout (&EnumValuesDataLayout())[4] { static const DataLayout values[] = { DataLayout_NHWC, DataLayout_NCHW, - DataLayout_NDHWC + DataLayout_NDHWC, + DataLayout_NCDHW }; return values; } inline const char * const *EnumNamesDataLayout() { - static const char * const names[4] = { + static const char * const names[5] = { "NHWC", "NCHW", "NDHWC", + "NCDHW", nullptr }; return names; } inline const char *EnumNameDataLayout(DataLayout e) { - if (flatbuffers::IsOutRange(e, DataLayout_NHWC, DataLayout_NDHWC)) return ""; + if (flatbuffers::IsOutRange(e, DataLayout_NHWC, DataLayout_NCDHW)) return ""; const size_t index = static_cast(e); return EnumNamesDataLayout()[index]; } @@ -3250,9 +3253,7 @@ struct Convolution3dLayer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef Convolution3dLayerBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_BASE = 4, - VT_DESCRIPTOR = 6, - VT_WEIGHTS = 8, - VT_BIASES = 10 + VT_DESCRIPTOR = 6 }; const armnnSerializer::LayerBase *base() const { return GetPointer(VT_BASE); @@ -3260,22 +3261,12 @@ struct Convolution3dLayer FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { const armnnSerializer::Convolution3dDescriptor *descriptor() const { return GetPointer(VT_DESCRIPTOR); } - const armnnSerializer::ConstTensor *weights() const { - return GetPointer(VT_WEIGHTS); - } - const armnnSerializer::ConstTensor *biases() const { - return GetPointer(VT_BIASES); - } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_BASE) && verifier.VerifyTable(base()) && VerifyOffset(verifier, VT_DESCRIPTOR) && verifier.VerifyTable(descriptor()) && - VerifyOffset(verifier, VT_WEIGHTS) && - verifier.VerifyTable(weights()) && - VerifyOffset(verifier, VT_BIASES) && - verifier.VerifyTable(biases()) && verifier.EndTable(); } }; @@ -3290,12 +3281,6 @@ struct Convolution3dLayerBuilder { void add_descriptor(flatbuffers::Offset descriptor) { fbb_.AddOffset(Convolution3dLayer::VT_DESCRIPTOR, descriptor); } - void add_weights(flatbuffers::Offset weights) { - fbb_.AddOffset(Convolution3dLayer::VT_WEIGHTS, weights); - } - void add_biases(flatbuffers::Offset biases) { - fbb_.AddOffset(Convolution3dLayer::VT_BIASES, biases); - } explicit Convolution3dLayerBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -3311,12 +3296,8 @@ struct Convolution3dLayerBuilder { inline flatbuffers::Offset CreateConvolution3dLayer( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset base = 0, - flatbuffers::Offset descriptor = 0, - flatbuffers::Offset weights = 0, - flatbuffers::Offset biases = 0) { + flatbuffers::Offset descriptor = 0) { Convolution3dLayerBuilder builder_(_fbb); - builder_.add_biases(biases); - builder_.add_weights(weights); builder_.add_descriptor(descriptor); builder_.add_base(base); return builder_.Finish(); -- cgit v1.2.1