如何解释 tensorflow lite c++ 中的输出张量数据打包?
how to interpret output tensor data packing in tensorflow lite c++?
我正在使用 C++ 开发一个 tensorflow-lite 模型(我已经在使用它 python),我对输出数据的打包方式感到困惑。我在文档中找不到任何参考资料。我查看了 tflite 源代码,了解到我可以使用 dims 获得张量的输出维度
for(int i=0; i < size; i++){
print("%d\n", out_tensor->dims->data[i]);
}
这给了我:
1
96
96
14
这正是我所知道的输出数据。它是一个 96x96 的网格,其中每个网格元素是 14 个浮点数。我不明白的是如何正确获取这些数据。起初我们假设它是平的,然后像这样把它拉出来:
const float* output = interpreter->typed_output_tensor<float>(0);
for (int j = 0; j < num_values; ++j) {
output_data_flat[out_idx++] = output[j];
}
但这似乎不太对劲。解压此输出数据的正确方法或至少是一种干净的方法是什么?
谢谢。
TensorFlow Lite 张量数据以连续方式存储,这意味着您可以假设它是扁平化的。
换句话说,您可以假设 interpreter->typed_output_tensor<float>(0)
为 float[1][96][96][14]。
我正在使用 C++ 开发一个 tensorflow-lite 模型(我已经在使用它 python),我对输出数据的打包方式感到困惑。我在文档中找不到任何参考资料。我查看了 tflite 源代码,了解到我可以使用 dims 获得张量的输出维度
for(int i=0; i < size; i++){
print("%d\n", out_tensor->dims->data[i]);
}
这给了我:
1
96
96
14
这正是我所知道的输出数据。它是一个 96x96 的网格,其中每个网格元素是 14 个浮点数。我不明白的是如何正确获取这些数据。起初我们假设它是平的,然后像这样把它拉出来:
const float* output = interpreter->typed_output_tensor<float>(0);
for (int j = 0; j < num_values; ++j) {
output_data_flat[out_idx++] = output[j];
}
但这似乎不太对劲。解压此输出数据的正确方法或至少是一种干净的方法是什么?
谢谢。
TensorFlow Lite 张量数据以连续方式存储,这意味着您可以假设它是扁平化的。
换句话说,您可以假设 interpreter->typed_output_tensor<float>(0)
为 float[1][96][96][14]。