diff --git a/1.2/HalPolicy.cpp b/1.2/HalPolicy.cpp
index 4372c16..03a6446 100644
--- a/1.2/HalPolicy.cpp
+++ b/1.2/HalPolicy.cpp
@@ -160,7 +160,7 @@
         case V1_2::OperationType::RESIZE_NEAREST_NEIGHBOR:
             return ConvertResize(operation, model, data, armnn::ResizeMethod::NearestNeighbor);
         case V1_2::OperationType::TRANSPOSE_CONV_2D:
-            return ConvertTransposeConvolution2d(operation, model, data);
+            return ConvertTransposeConv2d(operation, model, data);
         case V1_2::OperationType::SOFTMAX:
             return ConvertSoftmax(operation, model, data);
         case V1_2::OperationType::SPACE_TO_DEPTH:
@@ -1502,7 +1502,7 @@
             SetupAndTrackLayerOutputSlot<hal_1_2::HalPolicy>(operation, 3, *layer, 3, model, data));
 }
 
-bool HalPolicy::ConvertTransposeConvolution2d(const Operation& operation, const Model& model, ConversionData& data)
+bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
 {
     LayerInputHandle input = ConvertToLayerInputHandle<hal_1_2::HalPolicy>(operation, 0, model, data);
 
diff --git a/1.2/HalPolicy.hpp b/1.2/HalPolicy.hpp
index e4719e8..409f7b4 100644
--- a/1.2/HalPolicy.hpp
+++ b/1.2/HalPolicy.hpp
@@ -76,7 +76,7 @@
 
     static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
 
-    static bool ConvertTransposeConvolution2d(const Operation& operation, const Model& model, ConversionData& data);
+    static bool ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data);
 };
 
 } // namespace hal_1_2
