PyTorch训练报错:module 'torch.optim.lr_scheduler'无LinearLR属性如何解决
报错原因
你使用的torch 1.10.0版本中,torch.optim.lr_scheduler模块还没有内置LinearLR接口,该接口是PyTorch 1.13版本才正式加入的,你当前使用的目标检测训练脚本调用了更高版本才有的接口,因此触发AttributeError。
可用解决方案
- 升级PyTorch及对应torchvision版本到1.13.0及以上,升级后无需修改代码即可直接运行原脚本,注意torch和torchvision的版本需要匹配对应。
- 若受其他依赖限制无法升级PyTorch,可以手动修改
/content/engine.py中调用LinearLR的代码,用PyTorch 1.10已有的LambdaLR实现完全等效的线性warmup逻辑,替换代码如下:
# 替换原LinearLR的调用代码 lr_scheduler = torch.optim.lr_scheduler.LambdaLR( optimizer, lr_lambda=lambda step: warmup_factor * step / warmup_iters if step < warmup_iters else 1.0 )
- 如果你使用的训练脚本是从PyTorch官方目标检测示例库获取的,可以直接下载对应PyTorch 1.10版本的官方示例
engine.py文件替换当前文件,旧版本的官方示例没有使用LinearLR接口。
内容的提问来源于stack exchange,提问作者Mao76
相关产品推荐
相关产品推荐

