在Keras的机器学习项目中,随机性的常见来源是什么



再现性很重要。在我目前正在进行的一个开源机器学习项目中,很难实现它。需要看哪些部分?

设置种子

计算机有伪随机数生成器,这些生成器是用一个称为种子的值初始化的。对于机器学习,您可能需要执行以下操作:

# I've heard the order here is important
import random
random.seed(0)
import numpy as np
np.random.seed(0)
import tensorflow as tf
tf.set_random_seed(0)
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)
from keras import backend as K
K.set_session(sess)  # tell keras about the seeded session
# now import keras stuff

另请参阅:Keras常见问题解答:如何在开发过程中使用Keras获得可重复的结果?

sklearn

sklearn.model_selection.train_testrongplit有一个random_state参数。

要检查的内容

  1. 我是否每次都以相同的顺序加载数据
  2. 我是否以相同的方式初始化模型
  3. 您是否使用可能更改的外部数据
  4. 您是否使用可能更改的外部状态(例如datetime.now(

最新更新