TensorFlow:关于种子的微妙之处

TensorFlow:关于种子的微妙之处,tensorflow,random-seed,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)) 以下方法也

我想给我的随机数生成器添加种子。我可以执行以下操作,这很有效:

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))
有关种子的信息:

1) 为什么后者不起作用

2) 为了使其工作,我可以做些什么,即不使用“with tf.Session()as sess1:”?

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))

为了在一个会话中始终生成相同的数字,我该怎么做?生成一个种子随机数并将其放入
tf.常量中如何?我对这个已经很陌生了。但我认为应该有一种方法可以用tensorflow来实现这一点。
a=tf.Variable(initial_value=tf.random_uniform([1]))
这就是我能想到的。