ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-10-02 23:08:02  阅读:404  来源: 互联网

标签:random-seed python tensorflow gpu keras


我正在写一个tensorflow.Keras包装器来执行ML实验.

我需要我的框架能够执行配置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中设置培训课程,以确保在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)

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

标签:random-seed,python,tensorflow,gpu,keras
来源: https://codeday.me/bug/20191002/1845118.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有