使用onnx转换pth报错AttributeError: 'ModelProto' object has no attribute 'training'
时间: 2023-10-16 22:10:06 浏览: 281
这个错误可能是因为在转换过程中使用了不兼容的ONNX版本。在某些较旧的ONNX版本中,可能没有“training”属性。
解决方法是使用最新版本的ONNX转换器。您可以使用以下命令安装ONNX转换器的最新版本:
```
pip install onnxruntime
```
然后,使用以下命令将模型从PyTorch转换为ONNX:
```
import torch
import onnxruntime
model = YourModel()
dummy_input = torch.randn(batch_size, channels, height, width)
torch.onnx.export(model, dummy_input, "model.onnx", verbose=True)
```
最后,使用以下代码加载ONNX模型并执行推理:
```
sess = onnxruntime.InferenceSession("model.onnx")
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name
outputs = sess.run([output_name], {input_name: input_data})[0]
```
请注意,可能需要根据您的模型进行一些调整,以便将其转换为ONNX格式。
相关问题
在转化为onnx格式时 报错AttributeError: 'dict' object has no attribute 'modules'
这个错误通常表示在转化模型为ONNX格式时,代码中使用了PyTorch模型的`modules`属性,但是ONNX不支持这个属性。解决方法是使用PyTorch的`state_dict`属性来代替`modules`属性。
具体地,将模型转化为ONNX格式时,需要使用`torch.onnx.export`函数,并将PyTorch模型的`state_dict`属性作为参数传递给这个函数。例如:
```python
import torch
import onnx
# 加载PyTorch模型
model = MyModel()
model.load_state_dict(torch.load("model.pth"))
# 将模型转化为ONNX格式
input_shape = (1, 3, 224, 224)
input_names = ["input"]
output_names = ["output"]
dummy_input = torch.randn(input_shape)
torch.onnx.export(model, dummy_input, "model.onnx", input_names=input_names, output_names=output_names)
```
在这个例子中,我们首先加载了PyTorch模型,然后使用`torch.onnx.export`函数将其转化为ONNX格式。注意,我们将PyTorch模型的`state_dict`属性作为参数传递给了这个函数,而没有使用`modules`属性。
将.pth.tar文件转成onnx时出现错误AttributeError: 'dict' object has no attribute 'eval'
根据引用\[1\]中的信息,load_state_dict()方法返回的是_IncompatibleKeys对象,而不是模型本身。因此,在使用赋值等号时,model并不是你想要的那个模型,所以没有to、eval等属性。
根据引用\[2\]中的信息,将.pth模型转换为onnx的代码示例中,使用了torch.load()方法加载了.pth模型,并将其赋值给了model变量。然后使用torch.onnx.export()方法将模型导出为onnx格式。这种方式可以正确地将.pth模型转换为onnx格式。
根据引用\[3\]中的信息,如果你想加载保存的网络模型,可以直接使用torch.load()方法加载模型文件,并将其赋值给model变量。然后调用model.eval()方法将模型设置为评估模式。
综上所述,出现错误AttributeError: 'dict' object has no attribute 'eval'的原因是你使用了错误的方式加载模型。正确的方式是使用torch.load()方法加载模型文件,并调用model.eval()方法将模型设置为评估模式。
#### 引用[.reference_title]
- *1* [(完全解决)AttributeError: ‘_IncompatibleKeys‘ object has no attribute ‘to‘/‘eval](https://blog.csdn.net/qq_43391414/article/details/124074124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Pytorch模型转ONNX](https://blog.csdn.net/yangpan011/article/details/125848508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [pytorch载入模型时出现错误AttributeError Generator object has no attribute copy](https://blog.csdn.net/LLLLUFFY/article/details/106561536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文