【问题标题】:Reproducible results with keras使用 keras 可重现的结果
【发布时间】:2018-03-02 14:15:42
【问题描述】:

如何使用 keras 获得可重现的结果?我按照these 的步骤进行操作,但每次运行 Jupyter 笔记本时仍然得到不同的结果。我也尝试在调用model.fit()时设置shuffle=False

我的配置: 康达 4.3.25

带有 tensorflow 后端的 keras 2.0.6

张量流-GPU 1.2.1

python 3.5

Windows 10

【问题讨论】:

  • 你是在 GPU 还是 CPU 上训练?
  • 您可能会遇到这个问题:github.com/fchollet/keras/issues/2280
  • @McLawrence 我正在使用 gpu
  • @DanielMöller 我已经检查了该引用并尝试将线程数设置为 1。
  • 我不知道你的结果变化有多大,但即使你为所有使用的库设置了随机种子,cuDNN 中的卷积实现在默认情况下也是不确定的。因此,如果您使用的是 CNN,那可能就是原因。您可以禁用它,如here 所述。

标签: tensorflow keras


【解决方案1】:

查看我在another question 发布的答案。主要思想是:首先,禁用GPU。然后,播种诸如“numpy、random 等”之类的库。综上所述,在代码开头包含以下代码可能有助于解决您的问题。

import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = ""

import numpy as np
import tensorflow as tf
import random as rn
from keras import backend as K

sd = 1
np.random.seed(sd)
rn.seed(sd)
os.environ['PYTHONHASHSEED']=str(sd)

config = tf.ConfigProto(intra_op_parallelism_threads=1,inter_op_parallelism_threads=1)
tf.set_random_seed(sd)
sess = tf.Session(graph=tf.get_default_graph(), config=config)
K.set_session(sess)

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 2020-07-19
    • 2019-10-27
    • 2015-12-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 2019-08-07
    • 2018-03-31
    相关资源
    最近更新 更多