gpt4 book ai didi

python - 构建 Keras 项目以在 GPU 中实现可重现的结果

转载 作者:行者123 更新时间:2023-11-30 21:57:36 25 4
gpt4 key购买 nike

我正在编写一个tensorflow.Keras包装器来执行机器学习实验。

我需要我的框架能够执行配置 yaml 文件中指定的实验并在 GPU 中并行运行。

然后我需要保证,如果我再次运行实验,即使结果不完全相同,我也会得到相当接近的结果。

为了确保这一点,我的训练脚本在开头包含这些行,遵循 official documentation 中的指南:

# Set up random seeds
random.seed(seed)
np.random.seed(seed)
tf.set_random_seed(seed)

事实证明这还不够。

我运行了相同的配置 4 次,并绘制了结果:

enter image description here

正如您所看到的,运行之间的结果差异很大。

如何在 Keras 中设置训练 session ,以确保在 GPU 中训练时获得相当相似的结果?这可能吗?

完整的训练脚本可以在 here 找到.

我的一些同事正在使用 just pure TF ,而且他们的结果似乎更加一致。更重要的是,除了确保训练和验证分割始终相同之外,他们似乎没有播种任何随机性。

最佳答案

Keras + Tensorflow。

第 1 步,禁用 GPU。

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

第 2 步,为代码中包含的库添加种子,例如“tensorflow、numpy、random”。

import tensorflow as tf
import numpy as np
import random as rn

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

from keras import backend as K
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)

确保这两段代码包含在代码的开头,然后结果将是可重现的。

关于python - 构建 Keras 项目以在 GPU 中实现可重现的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55200768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com