使用torch.save保存模型权重时遇父目录不存在RuntimeError求助
解决torch.save()保存权重时的目录不存在报错
核心问题排查
首先注意到报错中的目录路径和你代码里的path值不一致:
- 报错目录:
./checkpoints/informer_powerdata2021_ftMS_sl192_ll96_pl48_dm512_nh8_el2_dl1_df2048_atprob_fc5_ebtimeF_dtTrue_mxTrue_test_0 - 你的
path值:./checkpoints/informer_powerdata2021_ftMS_sl96_ll48_pl24_dm512_nh8_el2_dl1_df2048_atprob_fc5_ebtimeF_dtTrue_mxTrue_test_0
这说明代码运行时实际使用的路径和你预期的path不符,大概率是生成path的逻辑中参数(比如序列长度sl、标签长度ll等)在训练过程中被修改,导致动态生成的目录和你预先创建的不一致。
解决方案步骤
1. 确认并修正路径一致性
在调用torch.save()前添加打印语句,确认实际使用的路径:
print(f"当前保存路径:{path+'/'+'checkpoint.pth'}") torch.save(model.state_dict(), path+'/'+'checkpoint.pth')
对比打印的路径和报错的路径,找到参数不一致的地方,修正path生成逻辑。
2. 强制递归创建目录(避免层级缺失)
即使你认为目录已创建,也可能存在父目录层级未完全生成的情况。使用os.makedirs递归创建目录,并设置exist_ok=True避免重复创建报错:
import os # 先创建目录(含所有父层级) os.makedirs(path, exist_ok=True) # 用os.path.join拼接路径,避免跨平台问题 torch.save(model.state_dict(), os.path.join(path, 'checkpoint.pth'))
3. 检查目录权限
如果上述步骤无效,检查目标目录的读写权限:
- Linux/macOS:执行
chmod -R 755 ./checkpoints赋予读写权限 - Windows:右键目录→属性→安全,确保当前用户有写入权限
内容的提问来源于stack exchange,提问作者haki
相关产品推荐
相关产品推荐

