设置图级随机seed
依赖于随机seed的操作实际上从两个seed中获取:图级和操作级seed。这将设置图级别的seed
其与操作级seed的相互作用如下:
- 如果没有设置图级和操作级seed,则使用随机seed进行操作。
- 如果设置了图级seed,但操作级seed没有设置:系统确定性的选择与图级seed一起的操作seed,以便获得唯一的随机序列。
- 如果没有设置图级seed,但是设置了操作seed,设置默认的图级seed和指定的操作eed来确定随机序列。
- 如果图级和操作级seed都被设置·,两个seed联合使用以确定随机序列
示例:
- 要在会话中生成不同的序列,那就不要设置图级seed或者操作级seed:
a = tf.random_uniform([1])
b = tf.random.normal([1])
print("Session 1")
with tf.Session() as sess1:
print(sess1.run(a))
print(sess1.run(a))
print(sess1.run(b))
print(sess1.run(b))
print("Session 2")
with tf.Session() as sess2:
print(sess2.run(a))
print(sess2.run(a))
print(sess2.run(b))
print(sess2.run(b))
- 要为会话中的操作生成相同的可重复序列,请为操作设置seed:
a = tf.random_uniform([1], seed=1)
b = tf.ranodm_normal([1])
# Repeatedly running this block with the same graph will generate the same
# sequence of values for 'a', but different sequences of values for 'b'
print("Session 1")
with tf.Sesstion() as sess1:
print(sess1.run(a))
print(sess1.run(a))
print(sess 1.run(b))
print(sess1.run(b))
print("Session 2")
with tf.Session() as sess2:
pirnt(sess2.run(a))
pirnt(sess2.run(a))
pirnt(sess2.run(b))
pirnt(sess2.run(b))
- 要使所有操作生成的随机序列在会话中可重复,请设置图形级别seed:
tf.set_random_seed(1234)
a = tf.random_uniform([1])
b = tf.random _normal([1])
# Repeatedly running this block with the same graph will generate the same
# sequences of 'a' and 'b'.
print("Session 1")
with tf.Session() as sess1:
print(sess1.run(a)) # generates 'A1'
print(sess1.run(a)) # generates 'A2'
print(sess1.run(b)) # generates 'B1'
print(sess1.run(b)) # generates 'B2'
print("Session 2")
with tf.Session() as sess2:
print(sess2.run(a)) # generates 'A1'
print(sess2.run(a)) # generates 'A2'
print(sess2.run(b)) # generates 'B1'
print(sess2.run(b)) # generates 'B2'
Reference:
https://www.w3cschool.cn/tensorflow_python/tensorflow_python-fqc42jvo.html
https://blog.csdn.net/qq_31878983/article/details/79495810