当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.set_random_seed用法及代码示例


为默认图设置 graph-level 随机种子。

用法

tf.compat.v1.set_random_seed(
    seed
)

参数

  • seed 整数。

迁移到 TF2

警告:这个 API 是为 TensorFlow v1 设计的。继续阅读有关如何从该 API 迁移到本机 TensorFlow v2 等效项的详细信息。见TensorFlow v1 到 TensorFlow v2 迁移指南有关如何迁移其余代码的说明。

'tf.compat.v1.set_random_seed' 与即刻模式兼容。但是,在 Eager 模式下,此 API 将设置全局种子,而不是默认图形的 graph-level 种子。在 TF2 中,此 API 更改为 tf.random.set_seed。

依赖随机种子的操作实际上是从两个种子中派生出来的:graph-level 和 operation-level 种子。这将设置 graph-level 种子。

它与operation-level种子的交互如下:

  1. 如果既没有设置graph-level 也没有设置操作种子:此操作使用随机种子。
  2. 如果设置了graph-level 种子,但未设置操作种子:系统确定性地选择与graph-level 种子一起的操作种子,以便获得唯一的随机序列。在同一版本的 tensorflow 和用户代码中,此序列是确定性的。但是,在不同的版本中,此顺序可能会发生变化。如果代码依赖于特定的种子来工作,请明确指定 graph-level 和 operation-level 种子。
  3. 如果没有设置graph-level种子,但设置了操作种子:使用默认的graph-level种子和指定的操作种子来确定随机序列。
  4. 如果graph-level和操作种子都设置了:两个种子一起使用来确定随机序列。

为了说明 user-visible 效果,请考虑以下示例:

要跨会话生成不同的序列,既不设置 graph-level 也不设置 op-level 种子:

a = tf.random.uniform([1])
b = tf.random.normal([1])

print("Session 1")
with tf.compat.v1.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.compat.v1.Session() as sess2:
  print(sess2.run(a))  # generates 'A3'
  print(sess2.run(a))  # generates 'A4'
  print(sess2.run(b))  # generates 'B3'
  print(sess2.run(b))  # generates 'B4'

要为跨会话的操作生成相同的可重复序列,请设置操作的种子:

a = tf.random.uniform([1], seed=1)
b = tf.random.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.compat.v1.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.compat.v1.Session() as sess2:
  print(sess2.run(a))  # generates 'A1'
  print(sess2.run(a))  # generates 'A2'
  print(sess2.run(b))  # generates 'B3'
  print(sess2.run(b))  # generates 'B4'

要使所有操作生成的随机序列在会话中可重复,请设置 graph-level 种子:

tf.compat.v1.random.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.compat.v1.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.compat.v1.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'

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.set_random_seed。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。