Tensorflow`set_random_seed`无效

ost*_*ach 15 python tensorflow

打电话tf.set_random_seed(SEED)没影响,我可以告诉......

例如,在IPython笔记本中多次运行下面的代码每次都会产生不同的输出:

import tensorflow as tf
tf.set_random_seed(42)
sess = tf.InteractiveSession()
a = tf.constant([1, 2, 3, 4, 5])
tf.initialize_all_variables().run()
a_shuf = tf.random_shuffle(a)
print(a.eval())
print(a_shuf.eval())
sess.close()
Run Code Online (Sandbox Code Playgroud)

如果我明确设置种子:a_shuf = tf.random_shuffle(a, seed=42),每次运行后输出都是相同的.但是,如果我已经打电话,为什么我需要设置种子tf.set_random_seed(42)


使用numpy的等效代码正常工作:

import numpy as np
np.random.seed(42)
a = [1,2,3,4,5]
np.random.shuffle(a)
print(a)
Run Code Online (Sandbox Code Playgroud)

Yar*_*tov 13

这仅设置图级随机种子.如果连续多次执行此代码段,图表将会更改,两个shuffle语句将获得不同的操作级别种子.细节的描述文档字符串set_random_seed

要获得确定性,a_shuf您可以

  1. 呼叫tf.reset_default_graph()调用或间
  2. 为shuffle设置操作级别种子: a_shuf = tf.random_shuffle(a, seed=42)