如果 CNNNetwork 输入 blob 精度为 FP32,则 OpenVINO 1D CNN 模型输入张量无法设置精度为 FP64 的输入 blob

OpenVINO 1D CNN model input tensor failed to set input blob with precision FP64 if CNNNetwork input blob precision is FP32

我尝试使用 OpenVINO API 2.0 推断我的 1D CNN 模型。

我的输入是一个包含多个信号记录的 CSV 文件,所以我使用 model.reshape 设置动态输入大小。

import openvino.runtime as ov
import numpy as np

core = ov.Core()
signal = np.genfromtxt('A4C_LV_V.csv')
model = core.read_model(model="saved_model.xml")
model.reshape([1, signal.size])
compiled_model = core.compile_model(model, "CPU")
infer_request = compiled_model.create_infer_request()
input_tensor = ov.Tensor(array=signal, shared_memory=True)
infer_request.set_input_tensor(input_tensor)
infer_request.start_async()
infer_request.wait()
output = infer_request.get_output_tensor()
output_buffer = output.data

但是我遇到了下面的错误。

RuntimeError: [ PARAMETER_MISMATCH ] Failed to set input blob with precision: FP64, if CNNNetwork input blob precision is: FP32

如果我注释第 11 行:infer_request.set_input_tensor(input_tensor) .

错误将得到解决,推理成功。

删除没意义set_input_tensor还能正常工作

这就是我的推论 files

(ZIP 文件包含 3 个 IR 文件和 1 个输入文件。)

看来您的模型精度不正确。请确保您的模型已正确转换为正确的精度。

OpenVINO 有 3 种常见的支持模型精度:FP32、FP16 和 INT8

您可以参考 here and here 了解更多信息。

如果您想为模型提供大小与模型输入形状不同的输​​入,OpenVINO 确实提供了在运行时更改模型输入形状的功能。使用 Reshape 方法通过单个输入更改模型的输入形状。有关详细信息,请参阅 here

有些模型支持在编译前更改输入形状。对于此用例,this 是您配置模型的方式。