我正在使用 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/