【问题标题】:Impact of data shuffling on results reproducibility in Pytorch数据洗牌对 Pytorch 中结果可重复性的影响
【发布时间】:2020-05-20 17:00:11
【问题描述】:

Pytorch 数据加载器类具有以下构造函数:

DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
           batch_sampler=None, num_workers=0, collate_fn=None,
           pin_memory=False, drop_last=False, timeout=0,
           worker_init_fn=None)

当 shuffle 设置为 True 时,数据在每个 epoch 都会重新洗牌。打乱将示例馈送到分类器的顺序是有帮助的,这样 epoch 之间的批次看起来就不一样了。这样做最终会使我们的模型更加健壮。

但是,我无法理解通过设置 shuffle=True,我们能否为不同的运行获得相同的准确度值

【问题讨论】:

    标签: python deep-learning pytorch


    【解决方案1】:

    主要算法/主要深度学习基于使用stochastic梯度下降(及其变体)进行权重优化。作为一个随机算法,如果你多次运行你的算法,你不能期望得到完全相同的结果。 事实上,您应该会看到一些变化,但它们应该“大致相同”。

    如果您在多次运行算法时需要完全相同得到相同的结果,您应该查看reproducibility of results - 这是一个非常微妙的主题。

    总结:
    1. 如果你根本不洗牌,你将有完美的再现性,但得到的准确度是expected to be very low.
    2. 如果你随机洗牌(世界上大多数人都这样做),你应该期望每次运行的准确度值略有不同,但它们都应该明显大于 (1)“无洗牌”的值。
    3. 如果您遵循reproducible results 的指导方针,则每次运行的准确度值应该完全相同,并且应该接近(2)“shuffle”的值。

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 2019-06-18
      • 1970-01-01
      • 2022-11-27
      • 2015-03-31
      • 2015-04-20
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      相关资源
      最近更新 更多