TensorFlow:关于种子的微妙之处

时间:2019-04-19 12:27:02

标签: tensorflow random-seed

我想播种我的随机数生成器。我可以执行以下操作:

import tensorflow as tf

sess = tf.Session()

# Set seed at graph-level
tf.random.set_random_seed(1)
# Set seed at op level
a = tf.random_uniform([1], seed=1)

with tf.Session() as sess1:
    print(sess1.run(a))

以下内容也适用:

print(sess.run(tf.random_uniform([1], seed=1)))

但是,每次我运行以下代码时,它都会生成一个不同的数字:

print(sess.run(a))

有关种子的信息:https://www.tensorflow.org/api_docs/python/tf/random/set_random_seed

1)为什么后者不起作用?

2)为了使其正常工作,我该怎么做,即不使用“ with tf.Session()as sess1:”?

1 个答案:

答案 0 :(得分:1)

tf.random_uniform(..., seed=1)并不意味着始终生成相同的数字,而是多次执行会话时会生成相同系列的数字。因此,以下行为将具有相同的行为:

sess = tf.Session()
a = tf.random_uniform([1], seed=1)
for _ in range(10):
    print(sess.run(a))

print('----------')

with tf.Session() as sess1:
    for _ in range(10):
        print(sess1.run(a))