Python 为什么tensorflow random_normal函数以固定的种子值给出不同的输出

Python 为什么tensorflow random_normal函数以固定的种子值给出不同的输出,python,tensorflow,Python,Tensorflow,我设置了一个固定的种子值,并使用以下代码行运行会话 with tf.Session() as sess: matrix = tf.random_normal([2,2], mean=1, stddev=1, seed=1) print(matrix.eval()) print(matrix.eval()) print(matrix.eval()) print(sess.run(matrix)) print(sess.run(matrix))

我设置了一个固定的种子值,并使用以下代码行运行会话

with tf.Session() as sess:
    matrix = tf.random_normal([2,2], mean=1, stddev=1, seed=1)
    print(matrix.eval())
    print(matrix.eval())
    print(matrix.eval())
    print(sess.run(matrix))
    print(sess.run(matrix))
    print(sess.run(matrix))
    print(sess.run(matrix))
但是代码给了我这样的输出

[[1.2818339 3.3878284]
 [3.2804048 0.691338 ]]
[[0.84588486 1.3642604 ]
 [1.6235023  0.96976113]]
[[2.3133767 2.4734092]
 [1.6430309 0.7378005]]
[[ 1.8944461   0.39336425]
 [ 0.1861412  -0.01721728]]
[[-0.6642921   2.3849297 ]
 [-0.06870818 -0.1625154 ]]
[[ 1.0668459   0.45170426]
 [ 2.4276698  -0.24925494]]
[[1.8668368  1.3444978 ]
 [1.5144594  0.31290668]]
我希望打印精确的值,因为我固定了种子值。为什么它会打印出不同的值?
谢谢

在每次运行中,您的计算图都会重新计算,从而生成新的随机数,但不会重置种子


我认为再次运行整个Python文件应该会得到与以前相同的输出。

在每次运行中,计算图都会重新计算,从而生成新的随机数,但不会重置种子


我认为再次运行整个Python文件应该会得到与以前相同的输出。

Seed仅用于初始化矩阵。每次运行会话时,将使用相同的值初始化矩阵

但是,每次调用matrix.eval时,它都会给出随机值链中的下一个随机值

如果你总是想要相同的数字,你就必须做下面的事情,尽管我怀疑它的有用性

with tf.Session() as sess:
   matrix = tf.random_normal([2,2], mean=1, stddev=1, seed=1)
   print(matrix.eval())
   matrix = tf.random_normal([2,2], mean=1, stddev=1, seed=1)
   print(matrix.eval())
返回:

[[ 1.28183389  3.38782835]
[ 3.28040481  0.691338  ]]
[[ 1.28183389  3.38782835]
[ 3.28040481  0.691338  ]]

种子仅用于初始化矩阵。每次运行会话时,将使用相同的值初始化矩阵

但是,每次调用matrix.eval时,它都会给出随机值链中的下一个随机值

如果你总是想要相同的数字,你就必须做下面的事情,尽管我怀疑它的有用性

with tf.Session() as sess:
   matrix = tf.random_normal([2,2], mean=1, stddev=1, seed=1)
   print(matrix.eval())
   matrix = tf.random_normal([2,2], mean=1, stddev=1, seed=1)
   print(matrix.eval())
返回:

[[ 1.28183389  3.38782835]
[ 3.28040481  0.691338  ]]
[[ 1.28183389  3.38782835]
[ 3.28040481  0.691338  ]]

这就是随机种子通常的工作方式。。。这就是随机种子通常的工作方式。。。我正在建立一个网络,但我不知道它是否运行良好,因为每次它训练我都会得到不同的结果。我怎么能确定?我将我的权重定义为“权重”:tf.Variabletf.truncated_normal[22,n_nodes_hl1],seed=1我正在构建一个网络,但我不知道它是否运行良好,因为每次训练我都会得到不同的结果。我怎么能确定?我将权重定义为“权重”:tf.Variabletf.truncated_normal[22,n_nodes_hl1],seed=1