RuntimeError: ONNX export failed on hardtanh, which is not implemented for opset 11.

执行pytorch模型转ONNX时候,语句:

torch.onnx.export(dbface, dummy_input, "dbface.onnx", output_names={"output"}, verbose=True)

出现错误

C:\Anaconda3\lib\site-packages\torch\onnx\symbolic_helper.py:198:UserWarning: You are trying to export the model with onnx:Upsample for ONNX opset version 9. This operator might cause results to not match the expected results by PyTorch.
ONNX's Upsample/Resize operator did not match Pytorch's Interpolation until opset 11. Attributes to determine how to transform the input were added in onnx:Resize in opset 11 to support Pytorch's behavior (like coordinate_transformation_mode and nearest_mode).
We recommend using opset 11 and above for models using this operator. 
  "" + str(_export_onnx_opset_version) + ". "

默认的opset是9,提示需要使用11,语句改为:

torch.onnx.export(dbface, dummy_input, "dbface.onnx", output_names={"output"}, verbose=True,opset_version=11)

又出现错误

RuntimeError: ONNX export failed on hardtanh, which is not implemented for opset 11. Try exporting with other opset versions.

不支持hardtanh操作,解决方法:
我的torch是anaconda安装python后pip install的,打开目录:C:\Anaconda3\Lib\site-packages\torch\onnx,打开文件symbolic_opset11.py,开头就有个list:black_listed_operators,将其中的hardtanh删掉,完事如下:

black_listed_operators = [
    "eq", "ne", "sort", "topk"
]

重新运行转换,成功由pytorch模型转ONNX。

你可能感兴趣的:(openVINO,ONNX,pytorch)