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)。这样它就能正确理解你的数组。
我有一个采用形状 [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)。这样它就能正确理解你的数组。