微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从同一检查点加载的两个模型具有相似的超参数在 PYTORCH 中给出不同的训练结果

如何解决从同一检查点加载的两个模型具有相似的超参数在 PYTORCH 中给出不同的训练结果

我训练了一个模型 (Lenet-5) 10 个时期并保存了模型。 加载到 2 个模型 ‘new_model’,‘new_model2’ 下面是colab链接 https://colab.research.google.com/drive/1qQhyTWNzCgMYn8t0ZtIZilLgk4JptbJG?usp=sharing

对新模型进行了 5 个 epoch 的训练,但最终每个 epoch 的训练和测试精度都不同,尽管从相同的模型加载并设置了可重复性设置。

当我继续训练原始模型 5 个 epoch 时,结果也与 2 个新模型的训练结果不同。

原始模型(15 个 epoch)和 2 个新模型(从检查点加载后的 5 个 epoch)的测试和训练精度是否可能相同?

(加载检查点后,我对所有 3 个模型都获得了相同的测试准确率,但结果与每个模型的进一步训练有所不同。)

解决方法

您应该在启动实验之前每次启动实验时将所有种子重置为固定值。简而言之,顺序应该是:

  1. 设置种子
  2. 训练新模型 #1
  3. 将种子(再次)设置为相同的值。
  4. 训练新模型 #2

重用你的一些代码,我们可以定义一个函数来设置种子,应该在步骤 1 和 3 中使用相同的值调用它:

def set_seed(s):
   th.manual_seed(s)
   th.cuda.manual_seed_all(s)
   th.backends.cudnn.deterministic = True
   th.backends.cudnn.benchmark = False
   np.random.seed(s)
   random.seed(s)
   os.environ['PYTHONHASHSEED'] = str(s)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。