TensorflowLite C API 多维张量的输入缓冲区布局

TensorflowLite C API input buffer layout for multidimensional tensor

我有一个采用形状 [1, 128, 1024, 2] 输入的 TensorFlow 模型。我想 运行 使用 TensorflowLite C API 对这个模型进行推理 API。

tensorflow/lite/c/c_api.h 中的示例代码显示了如何将输入馈送到模型中:

std::vector<float> inputBuffer(1 * 128 * 1024 * 2);

// populate input buffer
// ...

TfLiteTensor *inputTensor = TfLiteInterpreterGetInputTensor(interpreter, 0);
TfLiteStatus status = TfLiteTensorCopyFromBuffer(inputTensor, inputBuffer.data(), inputBuffer.size() * sizeof(float));

现在的问题是如何正确填充输入缓冲区。

假设我有一个数组 float inputArray[1][128][1024][2],我如何正确地将这个数组展平为 TensorflowLite 可以理解的一维向量?

您不需要展平该数组,只需将 inputBuffer.data() 更改为数据指针即可。 TFLite 模型中的输入张量具有形状信息 (1, 128, 1024, 2)。这样它就能正确理解你的数组。