From a2b89ca5407532257a959ad1852f29187e1be4ac Mon Sep 17 00:00:00 2001 From: Pablo Palmier Date: Thu, 5 Oct 2017 15:01:34 +0100 Subject: IVGCVSW-631 Neon support for Softmax beta parameter (F32 only) Change-Id: Ibf6f038b39f1a4e557f5d04feb08e3d5ef54e223 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/112019 Tested-by: BSG Visual Compute Jenkins server to access repositories on http://mpd-gerrit.cambridge.arm.com Reviewed-by: Anthony Barbier Reviewed-by: Georgios Pinitas --- src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp | 5 ++++- src/runtime/NEON/functions/NESoftmaxLayer.cpp | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/runtime') diff --git a/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp b/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp index 1db927c8ff..34464ff057 100644 --- a/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp +++ b/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp @@ -34,9 +34,12 @@ GCSoftmaxLayer::GCSoftmaxLayer() { } -void GCSoftmaxLayer::configure(const IGCTensor *input, IGCTensor *output) +void GCSoftmaxLayer::configure(const IGCTensor *input, IGCTensor *output, float beta) { + ARM_COMPUTE_UNUSED(beta); + ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::F16, DataType::F32); + ARM_COMPUTE_ERROR_ON(beta != 1.0f); // Create intermediate tensors shapes _tmp.allocator()->init(TensorInfo(input->info()->tensor_shape(), input->info()->num_channels(), input->info()->data_type(), input->info()->fixed_point_position())); diff --git a/src/runtime/NEON/functions/NESoftmaxLayer.cpp b/src/runtime/NEON/functions/NESoftmaxLayer.cpp index cc5d4e91c3..84ecfdaf33 100644 --- a/src/runtime/NEON/functions/NESoftmaxLayer.cpp +++ b/src/runtime/NEON/functions/NESoftmaxLayer.cpp @@ -36,7 +36,7 @@ NESoftmaxLayer::NESoftmaxLayer(std::shared_ptr memory_manager) { } -void NESoftmaxLayer::configure(ITensor *input, ITensor *output) +void NESoftmaxLayer::configure(ITensor *input, ITensor *output, float beta) { ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::QS8, DataType::QS16, DataType::F16, DataType::F32); @@ -57,7 +57,7 @@ void NESoftmaxLayer::configure(ITensor *input, ITensor *output) // Configure Kernels _max_kernel.configure(input, &_max); - _shift_exp_sum_kernel.configure(input, &_max, &_tmp, &_sum); + _shift_exp_sum_kernel.configure(input, &_max, &_tmp, &_sum, beta); _norm_kernel.configure(&_tmp, &_sum, output); _fill_border_kernel.configure(input, _max_kernel.border_size(), BorderMode::REPLICATE); -- cgit v1.2.1