11 #include <boost/numeric/conversion/cast.hpp> 24 std::vector<std::pair<unsigned int, unsigned int>> m_padList,
39 assert(numInputDimensions == numOutputDimensions);
43 unsigned int inputBatches = 0;
44 unsigned int inputChannels = 0;
45 unsigned int inputHeight = 0;
46 unsigned int inputWidth = 0;
48 unsigned int outputChannels = 0;
49 unsigned int outputHeight = 0;
50 unsigned int outputWidth = 0;
52 T convertedPadValue =
static_cast<T
>(padValue);
54 for (
unsigned int i = 0; i < numOutputElements; ++i)
56 outData[i] = convertedPadValue;
59 switch(numInputDimensions) {
63 inputWidth = inputShape[0];
65 for (
unsigned int w = 0; w < inputWidth ; w++)
67 outData[w+std::get<0>(m_padList[0])] = inputData[w];
74 inputHeight = inputShape[0];
75 inputWidth = inputShape[1];
76 outputHeight = outputShape[0];
77 outputWidth = outputShape[1];
79 for (
unsigned int h = 0; h < inputHeight; h++)
81 for (
unsigned int w = 0; w < inputWidth ; w++)
83 outData[(h+std::get<0>(m_padList[0]))*outputWidth
84 + (w+std::get<0>(m_padList[1]))] = inputData[h * inputWidth + w];
92 inputChannels = inputShape[0];
93 inputHeight = inputShape[1];
94 inputWidth = inputShape[2];
95 outputChannels = outputShape[0];
96 outputHeight = outputShape[1];
97 outputWidth = outputShape[2];
99 for (
unsigned int c = 0; c < inputChannels; c++)
101 for (
unsigned int h = 0; h < inputHeight; h++)
103 for (
unsigned int w = 0; w < inputWidth ; w++)
105 outData[(c+std::get<0>(m_padList[0]))*outputHeight*outputWidth
106 + (h+std::get<0>(m_padList[1]))*outputWidth
107 + (w+std::get<0>(m_padList[2]))] = inputData[c * inputHeight * inputWidth
118 inputBatches = inputShape[0];
119 inputChannels = inputShape[1];
120 inputHeight = inputShape[2];
121 inputWidth = inputShape[3];
122 outputChannels = outputShape[1];
123 outputHeight = outputShape[2];
124 outputWidth = outputShape[3];
126 for (
unsigned int b = 0; b < inputBatches; b++)
128 for (
unsigned int c = 0; c < inputChannels; c++)
130 for (
unsigned int h = 0; h < inputHeight; h++)
132 for (
unsigned int w = 0; w < inputWidth ; w++)
134 outData[(b+std::get<0>(m_padList[0])) * outputChannels * outputHeight * outputWidth
135 + (c+std::get<0>(m_padList[1])) * outputHeight * outputWidth
136 + (h+std::get<0>(m_padList[2])) * outputWidth
137 + (w+std::get<0>(m_padList[3]))] = inputData[b * inputChannels * inputHeight
139 + c * inputHeight * inputWidth
157 std::vector<std::pair<unsigned int, unsigned int>> m_PadList,
160 const float padValue);
164 std::vector<std::pair<unsigned int, unsigned int>> m_PadList,
165 const float* inputData,
167 const float padValue);
170 std::vector<std::pair<unsigned int, unsigned int>> m_PadList,
171 const Half* inputData,
173 const float padValue);
176 std::vector<std::pair<unsigned int, unsigned int>> m_PadList,
177 const uint8_t* inputData,
179 const float padValue);
182 std::vector<std::pair<unsigned int, unsigned int>> m_PadList,
183 const int16_t* inputData,
185 const float padValue);
const TensorShape & GetShape() const
Copyright (c) 2020 ARM Limited.
void Pad(const TensorInfo &inputInfo, const TensorInfo &outputInfo, std::vector< std::pair< unsigned int, unsigned int >> m_padList, const T *inputData, T *outData, const float padValue)
template void Pad< BFloat16 >(const TensorInfo &inputInfo, const TensorInfo &outputInfo, std::vector< std::pair< unsigned int, unsigned int >> m_PadList, const BFloat16 *inputData, BFloat16 *outData, const float padValue)
template void Pad< int16_t >(const TensorInfo &inputInfo, const TensorInfo &outputInfo, std::vector< std::pair< unsigned int, unsigned int >> m_PadList, const int16_t *inputData, int16_t *outData, const float padValue)
unsigned int GetNumDimensions() const
template void Pad< Half >(const TensorInfo &inputInfo, const TensorInfo &outputInfo, std::vector< std::pair< unsigned int, unsigned int >> m_PadList, const Half *inputData, Half *outData, const float padValue)
template void Pad< float >(const TensorInfo &inputInfo, const TensorInfo &outputInfo, std::vector< std::pair< unsigned int, unsigned int >> m_PadList, const float *inputData, float *outData, const float padValue)
template void Pad< uint8_t >(const TensorInfo &inputInfo, const TensorInfo &outputInfo, std::vector< std::pair< unsigned int, unsigned int >> m_PadList, const uint8_t *inputData, uint8_t *outData, const float padValue)
unsigned int GetNumElements() const