【问题标题】:Every run (using pytorch+cuda) is different w/ batch norming, even when RNGs are seeded每次运行(使用 pytorch+cuda)在批量标准化时都是不同的,即使是在 RNG 播种的情况下
【发布时间】:2021-08-07 21:05:27
【问题描述】:

为什么我的具有批量规范层的模型在每次运行时表现不同,而没有批量规范层的模型执行相同。在我的模型中,随机种子由以下人员设置:

np.random.seed(args.seed)
torch.manual_seed(args.seed)
random.seed(args.seed)
torch.cuda.manual_seed_all(args.seed)
os.environ['PYTHONHASHSEED'] = str(args.seed)

在删除批规范层并保持其他设置后,我的模型产生了相同的结果。

【问题讨论】:

  • 最好不要将这样的标题放在问题中。请更改它。
  • 标题应该描述您的实际技术问题。关于什么问题在这里是主题的问题在这里是题外话——它们只是在Meta Stack Overflow 上的主题。 (幸运的是,您实际上并没有提出元问题,而是询问实际的技术问题,但您的标题应该描述该技术问题;我已尝试为此进行编辑)。
  • 您可以添加的另一件事是minimal reproducible example,它可以让某人测试输出是否仍然是随机的。假设,这个问题显示了您为避免随机性所做的努力,但它并没有显示人们如何自己看到这些努力并不能解决问题。

标签: python pytorch batch-normalization


【解决方案1】:

看来您还需要包含以下行:

torch.backends.cudnn.deterministic = True

为了强制算法的 cuda 部分在 PyTorch 的批处理规范中具有确定性。 Here are more details.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2016-03-20
    • 2013-04-06
    • 2021-07-14
    相关资源
    最近更新 更多