python-3.x - 使用 Keras 和 TensorFlow 后端可重现结果

标签 python-3.x tensorflow keras random-seed

我正在使用 Keras 构建深度学习 LSTM 模型,并使用 TensorFlow 后端。每次运行模型时,结果都会不同。有没有办法修复种子以产生可重复的结果?谢谢!

最佳答案

正如@Poete_Maudit 所说:How to get reproducible results in keras

要获得可重现的结果,您必须在脚本的开头执行以下操作(这将被迫使用单个 CPU):

# Seed value (can actually be different for each attribution step)
seed_value= 0

# 1. Set `PYTHONHASHSEED` environment variable at a fixed value
import os
os.environ['PYTHONHASHSEED']=str(seed_value)

# 2. Set `python` built-in pseudo-random generator at a fixed value
import random
random.seed(seed_value)

# 3. Set `numpy` pseudo-random generator at a fixed value
import numpy as np
np.random.seed(seed_value)

# 4. Set `tensorflow` pseudo-random generator at a fixed value
import tensorflow as tf
tf.random.set_seed(seed_value) # tensorflow 2.x
# tf.set_random_seed(seed_value) # tensorflow 1.x

# 5. Configure a new global `tensorflow` session
from keras import backend as K
session_conf = tf.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=1)
sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)
K.set_session(sess)

注意:您无法(再)使用命令获得可重现的结果:PYTHONHASHSEED=0 python3 script.py,如 https://keras.io/getting-started/faq/#how-can-i-obtain-reproducible-results-using-keras-during-development可能会让您思考,您必须在脚本中使用 os.environ 设置 PYTHONHASHSEED,如步骤 #1 所示。此外,这不适用于 GPU 使用

关于python-3.x - 使用 Keras 和 TensorFlow 后端可重现结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48631576/

相关文章:

python - 如何将标题大写句子与介词匹配?

python - 为什么 get_tensor_by_name 需要将端口附加到张量名称

machine-learning - 针对不可分类问题使用什么类型的神经网络

python - 尝试将预测带回到数据帧中的相应行

machine-learning - 如何理解SpatialDropout1D以及何时使用它?

python - 提取或裁剪热图像的冷或热区域

python - BlockingIOError 异常被忽略;我应该担心吗?

python - 如何使用 xml.dom 中的 minidom 获取字符串形式的内部内容?

python - tensorflow 量化: Array output does not have MinMax information

python - 如何用 keras.layers.Lambda 包装 tf.cond 函数?