diff --git a/src/armnnSerializer/Schema.fbs b/src/armnnSerializer/Schema.fbs
index 2527f6d..5d6388d 100644
--- a/src/armnnSerializer/Schema.fbs
+++ b/src/armnnSerializer/Schema.fbs
@@ -65,7 +65,8 @@
 enum LayerType : uint {
     Addition = 0,
     Input = 1,
-    Output = 2
+    Multiplication = 2,
+    Output = 3
 }
 
 // Base layer table to be used as part of other layers
@@ -91,6 +92,10 @@
     base:BindableLayerBase;
 }
 
+table MultiplicationLayer {
+    base:LayerBase;
+}
+
 table OutputLayer {
     base:BindableLayerBase;
 }
@@ -98,6 +103,7 @@
 union Layer {
     AdditionLayer,
     InputLayer,
+    MultiplicationLayer,
     OutputLayer
 }
 
diff --git a/src/armnnSerializer/SeralizerSupport.md b/src/armnnSerializer/SeralizerSupport.md
index 16d1940..5978c8a 100644
--- a/src/armnnSerializer/SeralizerSupport.md
+++ b/src/armnnSerializer/SeralizerSupport.md
@@ -7,5 +7,6 @@
 The Arm NN SDK Serializer currently supports the following layers:
 
 * Addition
+* Multiplication
 
 More machine learning layers will be supported in future releases.
\ No newline at end of file
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 57baf0e..acb672a 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -88,6 +88,20 @@
     CreateAnyLayer(flatBufferAdditionLayer.o, serializer::Layer::Layer_AdditionLayer);
 }
 
+// Build FlatBuffer for Multiplication Layer
+void Serializer::VisitMultiplicationLayer(const IConnectableLayer* layer, const char* name)
+{
+    // Create FlatBuffer BaseLayer
+    auto flatBufferMultiplicationBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Multiplication);
+
+    // Create the FlatBuffer MultiplicationLayer
+    auto flatBufferMultiplicationLayer =
+        serializer::CreateMultiplicationLayer(m_flatBufferBuilder, flatBufferMultiplicationBaseLayer);
+
+    // Add the AnyLayer to the FlatBufferLayers
+    CreateAnyLayer(flatBufferMultiplicationLayer.o, serializer::Layer::Layer_MultiplicationLayer);
+}
+
 void Serializer::Serialize(const INetwork& inNetwork)
 {
     // Iterate through to network
diff --git a/src/armnnSerializer/Serializer.hpp b/src/armnnSerializer/Serializer.hpp
index 697e5cf..8aec3ca 100644
--- a/src/armnnSerializer/Serializer.hpp
+++ b/src/armnnSerializer/Serializer.hpp
@@ -29,6 +29,9 @@
                           armnn::LayerBindingId id,
                           const char* name = nullptr) override;
 
+    void VisitMultiplicationLayer(const armnn::IConnectableLayer* layer,
+                                  const char* name = nullptr) override;
+
     /// Serializes the network to ArmNN SerializedGraph.
     /// @param [in] inNetwork The network to be serialized.
     void Serialize(const armnn::INetwork& inNetwork);
diff --git a/src/armnnSerializer/test/SerializerTests.cpp b/src/armnnSerializer/test/SerializerTests.cpp
index 17ad6e3..ab4bc0f 100644
--- a/src/armnnSerializer/test/SerializerTests.cpp
+++ b/src/armnnSerializer/test/SerializerTests.cpp
@@ -32,4 +32,30 @@
     BOOST_TEST(stream.str().length() > 0);
 }
 
+BOOST_AUTO_TEST_CASE(SimpleNetworkWithMultiplicationSerialization)
+{
+    const armnn::TensorInfo info({ 1, 5, 2, 3 }, armnn::DataType::Float32);
+
+    armnn::INetworkPtr network = armnn::INetwork::Create();
+    armnn::IConnectableLayer* const inputLayer0 = network->AddInputLayer(0);
+    armnn::IConnectableLayer* const inputLayer1 = network->AddInputLayer(1);
+
+    const char* multLayerName = "mult_0";
+
+    armnn::IConnectableLayer* const multiplicationLayer0 = network->AddMultiplicationLayer(multLayerName);
+    inputLayer0->GetOutputSlot(0).Connect(multiplicationLayer0->GetInputSlot(0));
+    inputLayer1->GetOutputSlot(0).Connect(multiplicationLayer0->GetInputSlot(1));
+
+    armnn::IConnectableLayer* const outputLayer0 = network->AddOutputLayer(0);
+    multiplicationLayer0->GetOutputSlot(0).Connect(outputLayer0->GetInputSlot(0));
+
+    armnnSerializer::Serializer serializer;
+    serializer.Serialize(*network);
+
+    std::stringstream stream;
+    serializer.SaveSerializedToStream(stream);
+    BOOST_TEST(stream.str().length() > 0);
+    BOOST_TEST(stream.str().find(multLayerName) != stream.str().npos);
+}
+
 BOOST_AUTO_TEST_SUITE_END()
