// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "BaseIterator.hpp" #include // Helper functions ported from the Android code base // Refer to: android/external/tensorflow/tensorflow/contrib/lite/kernels/internal/reference/portable_tensor_utils.cc void VectorBatchVectorAdd(armnn::Decoder& vector, uint32_t vSize, armnn::Decoder& batchVector, uint32_t nBatch, armnn::Encoder& outResult ); // Layer norm for each batch. // normalization_epsilon is added to avoid divergence. void MeanStddevNormalization(armnn::Decoder& input_vector, armnn::Encoder& output_vector, uint32_t v_size, uint32_t n_batch, float normalization_epsilon); void ZeroVector(armnn::Encoder& vector, uint32_t vSize); void MatrixBatchVectorMultiplyAccumulate(armnn::Decoder& matrix, uint32_t mRows, uint32_t mCols, armnn::Decoder& vector, uint32_t nBatch, armnn::Encoder& outResult); void VectorBatchVectorAssign(armnn::Decoder& vector, uint32_t vSize, uint32_t nBatch, armnn::Encoder& outBatchVector); void VectorBatchVectorCwiseProductAccumulate(armnn::Decoder& vector, uint32_t vSize, armnn::Decoder& batchVector, uint32_t nBatch, armnn::Encoder& outResult); void VectorBatchVectorCwiseProduct(armnn::Decoder& vector, uint32_t vSize, armnn::Decoder& batchVector, uint32_t nBatch, armnn::Encoder& outResult); void Sub1Vector(armnn::Decoder& vector, uint32_t vSize, armnn::Encoder& result); void VectorVectorCwiseProduct(armnn::Decoder& vector1, armnn::Decoder& vector2, uint32_t vSize, armnn::Encoder& outResult); void VectorVectorCwiseProductAccumulate(armnn::Decoder& vector1, armnn::Decoder& vector2, uint32_t vSize, armnn::Encoder& outResult); float Clip(float f, float absLimit); void ClipVector(armnn::Decoder& vector, uint32_t vSize, float absLimit, armnn::Encoder& outResult); void CopyVector(armnn::Decoder& vector, uint32_t vSize, armnn::Encoder& outResult); void SetActivationParameters(uint32_t activation, armnn::ActivationFunction& outArmnnActivation, float& outA, float& outB); std::unique_ptr AssignScopedCpuTensorHandle(const armnn::ConstCpuTensorHandle* ptr);