【发布时间】:2017-06-20 17:57:33
【问题描述】:
在一般的张量流设置中,如
model = construct_model()
with tf.Session() as sess:
train_model(sess)
construct_model() 包含模型定义,包括权重的随机初始化 (tf.truncated_normal),train_model(sess) 执行模型的训练 -
我必须设置哪些种子,以确保重复运行上述代码 sn-p 之间的 100% 可重复性? The documentation for tf.random.set_random_seed 可能很简洁,但让我有点困惑。我试过了:
tf.set_random_seed(1234)
model = construct_model()
with tf.Session() as sess:
train_model(sess)
但每次都得到不同的结果。
【问题讨论】:
-
您还需要从计算中删除并行性,因为这通常是不确定的,关闭 GPU 并使用
sess = tf.Session(config=tf.ConfigProto(inter_op_parallelism_threads=1,intra_op_parallelism_threads=1) -
另外,一些不确定性是由使用 SSE 等现代指令集引起的(请参阅 here ),因此要获得 100% 的可重复性,您可能需要在不使用 SSE 的情况下重新编译 TF
-
为了澄清起见,上述 cmets 中的
sess = tf.Session...并没有关闭 GPU,正如watch nvidia-smi所观察到的那样(在 nvidia gpu 的情况下,如在 AWS EC2 p2.xlarge 实例上) )
标签: python tensorflow random-seed