AttributeError: 'SGD' object has no attribute 'defaults'
时间: 2023-12-14 12:34:54 浏览: 536
bcremoveobjectimageattributecontent:BC Remove Object Image Attribute Content 提供了一个稳定而灵活的解决方案,允许用户根据当前版本、所有版本或新版本动态删除内容对象图像属性内容。 提供对图像属性内容的脚本化操作!
这个错误通常是由于使用了不兼容的PyTorch版本导致的。在PyTorch 1.1中,SGD优化器的默认值已经从`defaults`更改为`defaults_dict`。因此,如果你使用的是旧版本的代码,它可能会尝试访问不存在的属性。要解决这个问题,你需要将代码中的`defaults`更改为`defaults_dict`。例如,如果你的代码如下所示:
```python
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
...
torch.save({
'epoch': epoch,
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
'loss': loss,
...
}, PATH)
```
你需要将其更改为:
```python
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
...
torch.save({
'epoch': epoch,
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
'loss': loss,
...
}, PATH, _use_new_zipfile_serialization=False)
```
注意,你还需要将`_use_new_zipfile_serialization`设置为`False`,以便在保存模型时使用旧的序列化方法。这是因为在PyTorch 1.6中,`torch.save`默认使用新的zipfile序列化方法,而旧版本的PyTorch不支持这种方法。
阅读全文