You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch加载DQN对象报错:'Adam' object has no attribute '_warned_capturable_if_run_uncaptured'

解决PyTorch DQN加载后训练出现Adam属性错误的方案

核心原因

  • PyTorch版本不兼容:模型保存时的PyTorch版本与当前Colab环境版本不一致,导致Adam优化器内部属性缺失。
  • 优化器状态加载异常:加载时仅恢复网络权重,未正确处理优化器的状态字典,或状态字典与当前环境不匹配。
  • Colab环境依赖冲突:默认安装的TensorFlow可能与PyTorch依赖包冲突,间接影响Adam初始化。

解决步骤

1. 统一PyTorch版本

执行命令安装与模型保存时一致的PyTorch版本(以2.0.1为例):

!pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118

安装后重启Colab运行时,确保版本匹配。

2. 规范模型与优化器的保存加载

保存时需同时记录网络(含目标网络)和优化器的状态:

# 保存checkpoint
torch.save({
    'policy_net': policy_net.state_dict(),
    'target_net': target_net.state_dict(),
    'optimizer': optimizer.state_dict(),
    'episode': current_episode
}, 'dqn_checkpoint.pth')

# 加载checkpoint
checkpoint = torch.load('dqn_checkpoint.pth')
policy_net.load_state_dict(checkpoint['policy_net'])
target_net.load_state_dict(checkpoint['target_net'])
optimizer.load_state_dict(checkpoint['optimizer'])
# 切换至训练模式
policy_net.train()
target_net.train()

若此前仅保存了网络权重,需重新生成完整checkpoint后再加载。

3. 清除环境依赖冲突

卸载TensorFlow以避免与PyTorch冲突:

!pip uninstall -y tensorflow
!pip install torch torchvision torchaudio

重启运行时后重试训练。

4. 重新初始化优化器(临时方案)

若无法匹配版本,可放弃加载优化器状态,重新初始化:

checkpoint = torch.load('dqn_checkpoint.pth')
policy_net.load_state_dict(checkpoint['policy_net'])
target_net.load_state_dict(checkpoint['target_net'])
# 重新创建优化器
optimizer = torch.optim.Adam(policy_net.parameters(), lr=0.0001)

此方法会丢失之前的优化器状态,适合对训练连续性要求较低的场景。


内容的提问来源于stack exchange,提问作者Janak Lal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:18:19