在尝试使用OpenVino时遇到一个奇怪的问题。
我已将pytorch模型导出到onnx,然后使用以下命令将其导入到OpenVino:
python /opt/intel/openvino/deployment_tools/model_optimizer/mo.py --input_model ~/Downloads/unet2d.onnx --disable_resnet_optimization --disable_fusing --disable_gfusing --data_type=FP32
因此对于测试用例,我禁用了优化。
现在,使用示例python应用程序,我使用模型运行推理,如下所示:
from openvino.inference_engine import IENetwork, IECore
import numpy as np
model_xml = path.expanduser('model.xml')
model_bin = path.expanduser('model.bin')
ie = IECore()
net = IENetwork(model=model_xml, weights=model_bin)
input_blob = next(iter(net.inputs))
out_blob = next(iter(net.outputs))
net.batch_size = 1
exec_net = ie.load_network(network=net, device_name='CPU')
np.random.seed(0)
x = np.random.randn(1, 2, 256, 256) # expected input shape
res = exec_net.infer(inputs={input_blob: x})
res = res[out_blob]
问题在于,这似乎输出了与我的onnx或pytorch模型完全不同的东西。
此外,我意识到我什至不必传递输入,所以如果我做类似的事情:
x = None
res = exec_net.infer(inputs={input_blob: x})
这仍然会给我返回相同的输出!因此,这似乎表明我的输入被忽略了或类似的东西?
答案 0 :(得分:2)
您是否可以尝试不使用--disable_resnet_optimization --disable_fusing --disable_gfusing 保持优化。