1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2018-2023 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include <armnn/TypesUtils.hpp> 9*89c4ff92SAndroid Build Coastguard Worker #include <armnn/Tensor.hpp> 10*89c4ff92SAndroid Build Coastguard Worker #include <armnn/Types.hpp> 11*89c4ff92SAndroid Build Coastguard Worker #include <armnnUtils/TensorUtils.hpp> 12*89c4ff92SAndroid Build Coastguard Worker #include <utility> 13*89c4ff92SAndroid Build Coastguard Worker #include <vector> 14*89c4ff92SAndroid Build Coastguard Worker 15*89c4ff92SAndroid Build Coastguard Worker namespace armnn 16*89c4ff92SAndroid Build Coastguard Worker { 17*89c4ff92SAndroid Build Coastguard Worker class ITensorHandle; 18*89c4ff92SAndroid Build Coastguard Worker } // namespace armnn 19*89c4ff92SAndroid Build Coastguard Worker 20*89c4ff92SAndroid Build Coastguard Worker namespace armnnUtils 21*89c4ff92SAndroid Build Coastguard Worker { 22*89c4ff92SAndroid Build Coastguard Worker armnn::TensorShape GetTensorShape(unsigned int numberOfBatches, 23*89c4ff92SAndroid Build Coastguard Worker unsigned int numberOfChannels, 24*89c4ff92SAndroid Build Coastguard Worker unsigned int height, 25*89c4ff92SAndroid Build Coastguard Worker unsigned int width, 26*89c4ff92SAndroid Build Coastguard Worker const armnn::DataLayout dataLayout); 27*89c4ff92SAndroid Build Coastguard Worker 28*89c4ff92SAndroid Build Coastguard Worker armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, 29*89c4ff92SAndroid Build Coastguard Worker unsigned int numberOfChannels, 30*89c4ff92SAndroid Build Coastguard Worker unsigned int height, 31*89c4ff92SAndroid Build Coastguard Worker unsigned int width, 32*89c4ff92SAndroid Build Coastguard Worker const armnn::DataLayout dataLayout, 33*89c4ff92SAndroid Build Coastguard Worker const armnn::DataType dataType); 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, 36*89c4ff92SAndroid Build Coastguard Worker unsigned int numberOfChannels, 37*89c4ff92SAndroid Build Coastguard Worker unsigned int depth, 38*89c4ff92SAndroid Build Coastguard Worker unsigned int height, 39*89c4ff92SAndroid Build Coastguard Worker unsigned int width, 40*89c4ff92SAndroid Build Coastguard Worker const armnn::DataLayout dataLayout, 41*89c4ff92SAndroid Build Coastguard Worker const armnn::DataType dataType); 42*89c4ff92SAndroid Build Coastguard Worker 43*89c4ff92SAndroid Build Coastguard Worker std::pair<float, float> FindMinMax(armnn::ITensorHandle* tensorHandle); 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker armnn::TensorShape ReduceDims(const armnn::TensorShape& tensorInfo, unsigned int dimensions); 46*89c4ff92SAndroid Build Coastguard Worker 47*89c4ff92SAndroid Build Coastguard Worker armnn::TensorInfo ReduceDims(const armnn::TensorInfo& tensorInfo, unsigned int dimensions); 48*89c4ff92SAndroid Build Coastguard Worker 49*89c4ff92SAndroid Build Coastguard Worker armnn::TensorShape ExpandDims(const armnn::TensorShape& tensorShape, int axis); 50*89c4ff92SAndroid Build Coastguard Worker 51*89c4ff92SAndroid Build Coastguard Worker armnn::TensorShape ExpandDimsToRank(const armnn::TensorShape& tensorShape, unsigned int rank); 52*89c4ff92SAndroid Build Coastguard Worker 53*89c4ff92SAndroid Build Coastguard Worker std::vector<unsigned int> SqueezeDims(const armnn::TensorShape& tensorShape); 54*89c4ff92SAndroid Build Coastguard Worker 55*89c4ff92SAndroid Build Coastguard Worker unsigned int GetNumElementsBetween(const armnn::TensorShape& shape, 56*89c4ff92SAndroid Build Coastguard Worker unsigned int firstAxisInclusive, 57*89c4ff92SAndroid Build Coastguard Worker unsigned int lastAxisExclusive); 58*89c4ff92SAndroid Build Coastguard Worker 59*89c4ff92SAndroid Build Coastguard Worker unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis); 60*89c4ff92SAndroid Build Coastguard Worker 61*89c4ff92SAndroid Build Coastguard Worker unsigned int GetNumElementsAfter(const armnn::TensorShape& shape, unsigned int axis); 62*89c4ff92SAndroid Build Coastguard Worker 63*89c4ff92SAndroid Build Coastguard Worker std::pair<unsigned int, std::vector<float>> GetPerAxisParams(const armnn::TensorInfo& info); 64*89c4ff92SAndroid Build Coastguard Worker 65*89c4ff92SAndroid Build Coastguard Worker template<typename PrimitiveType> 66*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<float[]> ToFloatArray(const std::vector<PrimitiveType>& data, const armnn::TensorInfo& tensorInfo); 67*89c4ff92SAndroid Build Coastguard Worker 68*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<float[]> ToFloatArray(const std::vector<uint8_t>& data, const armnn::TensorInfo& tensorInfo); 69*89c4ff92SAndroid Build Coastguard Worker 70*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnUtils 71