Tensorflow学习笔记——tf.set_random_seed函数

设置图级随机seed
依赖于随机seed的操作实际上从两个seed中获取:图级和操作级seed。这将设置图级别的seed
其与操作级seed的相互作用如下:

  1. 如果没有设置图级和操作级seed,则使用随机seed进行操作。
  2. 如果设置了图级seed,但操作级seed没有设置:系统确定性的选择与图级seed一起的操作seed,以便获得唯一的随机序列。
  3. 如果没有设置图级seed,但是设置了操作seed,设置默认的图级seed和指定的操作eed来确定随机序列。
  4. 如果图级和操作级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

猜你喜欢

转载自blog.csdn.net/weixin_42018112/article/details/88618843