使用rl-agents与Godot开发AI导出.onnx文件时遇ORT Provider错误
解决ONNX导出时的ONNX Runtime Provider参数问题
1. 全局检查并修正InferenceSession调用
你需要确保所有调用onnxruntime.InferenceSession()的代码都添加了providers参数,不要遗漏任何一处:
- 打开
stable_baselines3.py、stable_baselines_export.py、onnxruntime_inference_collection.py,搜索InferenceSession关键词 - 给每个调用加上
providers=['CPUExecutionProvider']参数(优先用CPU provider,避免Azure相关依赖问题),示例代码:
session = onnxruntime.InferenceSession( "target_model.onnx", providers=['CPUExecutionProvider'] )
2. 对齐ONNX Runtime与Stable Baselines 3版本
版本不兼容是常见诱因:
- 卸载当前onnxruntime,安装与SB3匹配的版本(SB3 1.x系列推荐onnxruntime 1.12.1):
pip uninstall onnxruntime -y pip install onnxruntime==1.12.1
3. 重新导出并验证ONNX文件
导出流程错误会导致文件损坏,按以下步骤重新导出:
- 使用SB3内置导出方法,确保输入形状与你的环境观测空间匹配:
from stable_baselines3 import PPO from stable_baselines3.common.onnx_export import export_onnx_model # 加载训练好的模型 model = PPO.load("your_trained_agent") # 输入形状需和环境观测空间一致,比如观测是4维向量就用(1,4) export_onnx_model(model, "fixed_model.onnx", input_shape=(1, 4))
- 用ONNX Runtime工具验证文件完整性:
python -m onnxruntime.tools.validate_onnx_model fixed_model.onnx
如果验证通过,说明文件本身无问题。
4. 排查Godot端加载配置
若文件验证正常但Godot中无法使用:
- 确认Godot使用的ONNX Runtime插件版本和你导出时用的onnxruntime版本一致
- 在Godot加载模型时,同样指定CPU执行provider,避免因provider不匹配报错
内容的提问来源于stack exchange,提问作者Pedro Ramos Pereira
相关产品推荐
相关产品推荐

