即使指定了种子,tf.random.shuffle也不会提供可重复的结果

时间:2019-06-13 06:20:47

标签: tensorflow

该函数的seed = something中有一个参数。即使设置了它的值,随机播放也会产生随机结果。我想要相同的结果。

tf.random.suffle(tf.range(5), seed=5)

1 个答案:

答案 0 :(得分:1)

如果要重现随机播放结果,请使用以下内容(在TF 2.0 beta上)

tf.random.set_seed(5)
tf.random.shuffle(tf.range(5))
<tf.Tensor: id=35, shape=(5,), dtype=int32, numpy=array([0, 4, 1, 3, 2], dtype=int32)>
tf.random.set_seed(5)
tf.random.shuffle(tf.range(5))
<tf.Tensor: id=41, shape=(5,), dtype=int32, numpy=array([0, 4, 1, 3, 2], dtype=int32)>
tf.random.set_seed(5)
tf.random.shuffle(tf.range(5))
<tf.Tensor: id=47, shape=(5,), dtype=int32, numpy=array([0, 4, 1, 3, 2], dtype=int32)>

关于您使用过的种子,它确实无法复制结果(在TF 2.0 beta中进行了测试)

在TF 1.x中,我认为正确的功能是tf.random.set_random_seed

docs中,我看到有操作级种子和图形级种子。您正在设置操作级别,这还不够-使用上面代码中的函数设置图形级别种子可以解决此问题。