2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
7 #include <boost/numeric/conversion/cast.hpp>
16 void Debug(const TensorInfo& inputInfo,
19 const std::string& layerName,
20 unsigned int slotIndex)
22 const unsigned int numDims = inputInfo.GetNumDimensions();
23 const unsigned int numElements = inputInfo.GetNumElements();
24 const TensorShape& inputShape = inputInfo.GetShape();
26 std::vector<unsigned int> strides(numDims, 0);
27 strides[numDims - 1] = inputShape[numDims - 1];
29 for (unsigned int i = 2; i <= numDims; i++)
31 strides[numDims - i] = strides[numDims - i + 1] * inputShape[numDims - i];
35 std::cout << "\"layerGuid\": " << guid << ", ";
36 std::cout << "\"layerName\": \"" << layerName << "\", ";
37 std::cout << "\"outputSlot\": " << slotIndex << ", ";
38 std::cout << "\"shape\": ";
41 for (unsigned int i = 0; i < numDims; i++)
43 std::cout << inputShape[i];
51 std::cout << "\"min\": "
52 << boost::numeric_cast<float>(*std::min_element(inputData, inputData + numElements)) << ", ";
54 std::cout << "\"max\": "
55 << boost::numeric_cast<float>(*std::max_element(inputData, inputData + numElements)) << ", ";
57 std::cout << "\"data\": ";
59 for (unsigned int i = 0; i < numElements; i++)
61 for (unsigned int j = 0; j < numDims; j++)
63 if (i % strides[j] == 0)
69 std::cout << boost::numeric_cast<float>(inputData[i]);
71 for (unsigned int j = 0; j < numDims; j++)
73 if ((i+1) % strides[j] == 0)
79 if (i != numElements - 1)
85 std::cout << " }" << std::endl;
88 template void Debug<float>(const TensorInfo& inputInfo,
89 const float* inputData,
91 const std::string& layerName,
92 unsigned int slotIndex);
94 template void Debug<uint8_t>(const TensorInfo& inputInfo,
95 const uint8_t* inputData,
97 const std::string& layerName,
98 unsigned int slotIndex);
100 template void Debug<int16_t>(const TensorInfo& inputInfo,
101 const int16_t* inputData,
103 const std::string& layerName,
104 unsigned int slotIndex);