From fcf2a15b0b4aa44530dc56c7a13bc685c687f87a Mon Sep 17 00:00:00 2001 From: Kevin May Date: Tue, 8 Sep 2020 16:06:32 +0100 Subject: IVGCVSW-5245 Support Fused Activations for Dynamic Tensors * Move ProcessActivation from Convert to SetupAndTrackLayerOutputSlot by passing optional ActivationFn * Connect Activation after IsTensorInfoSet() is called Signed-off-by: Kevin May Change-Id: I472bcb65b12ae6e934bd1e9af8a6f6aceb311c0e --- ConversionUtils_1_2.hpp | 44 ++++++++++---------------------------------- 1 file changed, 10 insertions(+), 34 deletions(-) (limited to 'ConversionUtils_1_2.hpp') diff --git a/ConversionUtils_1_2.hpp b/ConversionUtils_1_2.hpp index 760312e7..2f4b91bf 100644 --- a/ConversionUtils_1_2.hpp +++ b/ConversionUtils_1_2.hpp @@ -341,16 +341,10 @@ bool ConvertConv2d_1_2(const HalOperation& operation, const HalModel& model, Con return Fail("%s: AddConvolution2dLayer failed", __func__); } - IConnectableLayer* endLayer = ProcessActivation(outputInfo, activation, startLayer, data); - - if (!endLayer) - { - return Fail("%s: ProcessActivation failed", __func__); - } - input.Connect(startLayer->GetInputSlot(0)); - return SetupAndTrackLayerOutputSlot(operation, 0, *endLayer, model, data, nullptr, validateFunc); + return SetupAndTrackLayerOutputSlot(operation, 0, *startLayer, model, + data, nullptr, validateFunc, activation); } templateGetInputSlot(0)); - return SetupAndTrackLayerOutputSlot(operation, 0, *endLayer, model, data); + return SetupAndTrackLayerOutputSlot(operation, 0, *startLayer, model, + data, nullptr, validateFunc, activation); } templateGetOutputSlot(0).SetTensorInfo(outputInfo); - // - // Set up Activation layer (if it is set) - // - IConnectableLayer* endLayer = ProcessActivation(outputInfo, activation, concatLayer, data); - if (!endLayer) - { - return Fail("%s: ProcessActivation failed", __func__); - } - - return SetupAndTrackLayerOutputSlot(operation, 0, *endLayer, model, data, nullptr, validateFunc); + return SetupAndTrackLayerOutputSlot(operation, 0, *concatLayer, model, + data, nullptr, validateFunc, activation); } template(operation, 0, *layer, 0, model, data) && SetupAndTrackLayerOutputSlot( - operation, 1, *layer, 1, model, data, nullptr, validateFunc, true)); + operation, 1, *layer, 1, model, data, nullptr, validateFunc, ActivationFn::kActivationNone, true)); } } @@ -2656,7 +2637,7 @@ bool ConvertLstm(const HalOperation& operation, const HalModel& model, Conversio SetupAndTrackLayerOutputSlot(operation, 1, *layer, 1, model, data) && SetupAndTrackLayerOutputSlot(operation, 2, *layer, 2, model, data) && SetupAndTrackLayerOutputSlot( - operation, 3, *layer, 3, model, data, nullptr, validateFunc, true)); + operation, 3, *layer, 3, model, data, nullptr, validateFunc, ActivationFn::kActivationNone, true)); } } @@ -2851,15 +2832,10 @@ bool ConvertTransposeConv2d(const HalOperation& operation, const HalModel& model return Fail("%s: AddTransposeConvolution2dLayer failed", __func__); } - IConnectableLayer* endLayer = ProcessActivation(outputInfo, activation, startLayer, data); - if (!endLayer) - { - return Fail("%s: ProcessActivation failed", __func__); - } - input.Connect(startLayer->GetInputSlot(0)); - return SetupAndTrackLayerOutputSlot(operation, 0, *endLayer, model, data, nullptr, validateFunc); + return SetupAndTrackLayerOutputSlot(operation, 0, *startLayer, model, + data, nullptr, validateFunc, activation); } } // armnn_driver namespace \ No newline at end of file -- cgit v1.2.1