IVGCVSW-3319 Add frontend support for TransposeConvolution2d Layer

Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Change-Id: Ic06f63f1eff255e697facf319e2ac4c83d782e7c
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 75b63e4..9436fc6 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -1008,6 +1008,28 @@
     return m_Graph->AddLayer<PreluLayer>(name);
 }
 
+IConnectableLayer* Network::AddTransposeConvolution2dLayer(const TransposeConvolution2dDescriptor& descriptor,
+                                                           const ConstTensor& weights,
+                                                           const Optional<ConstTensor>& biases,
+                                                           const char* name)
+{
+    if (descriptor.m_BiasEnabled && !biases.has_value())
+    {
+        throw InvalidArgumentException("AddTransposeConvolution2dLayer: Biases cannot be empty");
+    }
+
+    const auto layer = m_Graph->AddLayer<TransposeConvolution2dLayer>(descriptor, name);
+
+    layer->m_Weight = std::make_unique<ScopedCpuTensorHandle>(weights);
+
+    if (descriptor.m_BiasEnabled)
+    {
+        layer->m_Bias = std::make_unique<ScopedCpuTensorHandle>(biases.value());
+    }
+
+    return layer;
+}
+
 void Network::Accept(ILayerVisitor& visitor) const
 {
     for (auto layer : GetGraph())