334 std::ofstream out(outputTensorFileName, std::ofstream::binary);
339 std::string shapeStr =
"(";
342 shapeStr = shapeStr + std::to_string(shape[i]) +
", ";
344 shapeStr = shapeStr + std::to_string(shape[shape.
GetNumDimensions()-1]) +
")";
347 std::string endianChar = (*(
reinterpret_cast<char *
>(&i))) ?
"<" :
">";
349 std::string fortranOrder =
"False";
350 std::string headerStr =
"{'descr': '" + endianChar + dataTypeStr +
351 "', 'fortran_order': " + fortranOrder +
352 ", 'shape': " + shapeStr +
", }";
363 uint8_t major_version = 1;
366 if (length >= 255 * 255)
373 size_t padding_length = 16 - length % 16;
374 std::string padding(padding_length,
' ');
378 out.put(
static_cast<char>(major_version));
382 if (major_version == 1)
384 auto header_len =
static_cast<uint16_t
>(headerStr.length() + padding.length() + 1);
386 std::array<uint8_t, 2> header_len_16{
static_cast<uint8_t
>((header_len >> 0) & 0xff),
387 static_cast<uint8_t
>((header_len >> 8) & 0xff)};
388 out.write(
reinterpret_cast<char *
>(header_len_16.data()), 2);
392 auto header_len =
static_cast<uint32_t
>(headerStr.length() + padding.length() + 1);
394 std::array<uint8_t, 4> header_len_32{
395 static_cast<uint8_t
>((header_len >> 0) & 0xff),
static_cast<uint8_t
>((header_len >> 8) & 0xff),
396 static_cast<uint8_t
>((header_len >> 16) & 0xff),
static_cast<uint8_t
>((header_len >> 24) & 0xff)};
397 out.write(
reinterpret_cast<char *
>(header_len_32.data()), 4);
400 out << headerStr << padding <<
'\n';
404 out.write(
reinterpret_cast<const char *
>(array),
sizeof(T) * numElements);
unsigned int GetNumDimensions() const
Function that returns the tensor rank.
std::string getNumpyDescr(armnn::DataType dType)