PyTorch1.4.0调用optimizer.step时报错module 'torch' has no attribute 'linalg'
报错根因
torch.linalg是PyTorch 1.7.0版本才正式纳入稳定发布版的线性代数工具模块,你当前使用的PyTorch 1.4.0版本未内置该模块,当你调用的model.closure内部逻辑依赖torch.linalg时,就会触发该属性错误。
可用解决方案
- 方案1:升级PyTorch版本
直接将PyTorch升级到1.7.0及以上版本即可原生兼容torch.linalg调用,参考安装命令:pip install torch>=1.7.0 torchvision>=0.8.0
若你的环境需要适配指定CUDA版本,可自行调整命令匹配对应CUDA版本的PyTorch安装包。 - 方案2:替换为低版本兼容的等价API
若当前环境暂时不支持升级PyTorch,可将model.closure中所有torch.linalg下的API替换为PyTorch 1.4.0支持的等价实现:
比如torch.linalg.norm替换为torch.norm,torch.linalg.inv替换为torch.inverse,其余线性代数相关接口基本都能在1.4.0版本的torch主命名空间下找到对应实现。
若你使用的
model.closure是第三方封装好的代码无法自行修改,可查找该第三方库适配PyTorch 1.4.0的历史版本安装使用。
内容的提问来源于stack exchange,提问作者Prakhar Sharma
相关产品推荐
相关产品推荐

