问题
在用 onnx 模型 转换成 TensorRT 模型 时,输出以下警告:
[W] [TRT] onnx2trt_utils.cpp:366: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
原因
TensorRT 不支持 INT64 格式的 权重,只支持 INT32 格式的 权重,所以抛出了这个警告。
有无影响
如果只有这个警告,没有出现什么错误,那么没有影响,参考:
链接: link
链接: link
我在实际使用中,也确实没有发现 什么问题,只是看到有警告觉得会不会隐藏问题,所以查了一下。
但是,如果你的 INT64 格式的权重 确实 超过了 INT32 能表示的范围,那么,在转换时(cast down to INT32)就会抛出错误,参考:
链接: link
[W] [TRT] onnx2trt_utils.cpp:246: One or more weights outside the range of INT32 was clamped
解决方法
网上有一些解决办法,如用 onnxsim 简化模型,但是,我尝试了一下,简化了仍然会有这个警告。 如果你遇到了,可以尝试一下:
python -m onnxsim .\best.onnx .\best-sim.onnx
或者在 python 脚本中导出时,在 export 方法中添加这个简化参数:
model.export(format = "onnx", simplify = True, 其他参数)