我设置了一个固定的种子值,并使用以下代码行运行会话。
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 文件应该给出与以前相同的输出。
Seed 仅用于初始化matrix
。每次运行session
时,矩阵都将使用相同的值进行初始化。
但是,每次调用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 ]]