【问题标题】:Model training using kaggle kernel使用 kaggle 内核进行模型训练
【发布时间】:2020-12-31 23:37:14
【问题描述】:

我一直在使用 Kaggle 在 GPU 上工作。我发现每当我再次训练我的模型时,我对验证数据的准确性都会发生变化。我没有得到一致的结果。是因为我正在访问的 GPU 吗?

【问题讨论】:

    标签: tensorflow keras deep-learning kaggle


    【解决方案1】:

    两个网络的初始权重通常是随机的,随机性会导致变化。这意味着第二次训练将导致稍微不同的解决方案。为了确保精确的可重复性,您需要两件事:i)您的代码是确定性的,ii)随机数生成器(RNG)的相同种子。 随机数生成器是特定于库的。对于numpytensorflow,您可以在程序的开头(!)这样设置:

    np.random.seed(1337)
    tf.random.set_seed(1337)
    

    这意味着重复训练网络应该会得到相同的结果。要获得不同的样本,您必须以不同的方式初始化 RNG。

    对于某些优化器来说,非确定性方面很重要。例如,Adam 曾经是 Tensorflow/CUDA 中一些以前版本的那个,这意味着无论你多么努力都无法重现相同的执行。

    话虽如此,当然,如果您的代码执行 CUDNN 或 CUDA 优化的方法,也会导致细微的差异。在版本之间切换也可能会导致细微的差异。

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2019-08-10
      • 2020-08-06
      • 2018-11-29
      • 1970-01-01
      相关资源
      最近更新 更多