tf.compat.v1.set_random_seed
Устанавливает генератор случайных чисел на уровне графа для основного графа.
tf.compat.v1.set_random_seed(
seed
)
Миграция в TF2
'tf.compat.v1.set_random_seed' совместим с режимом eager. Однако в режиме eager этот API установит глобальное семя, а не семя на уровне графа основного графа. В TF2 этот API изменен на tf.random.set_seed.
Описание
Операции, которые полагаются на семя случайных чисел, фактически получают его из двух семян: на уровне графа и на уровне операции. Этот метод устанавливает семя на уровне графа.
Его взаимодействия с семенами на уровне операций следующие:
- Если ни семя на уровне графа, ни семя на уровне операции не установлены: для этой операции используется случайное семя.
- Если семя на уровне графа установлено, но семя на уровне операции нет: система детерминированно выбирает семя операции в сочетании с семенем на уровне графа, чтобы получить уникальную последовательность случайных чисел. В рамках одной версии TensorFlow и пользовательского кода эта последовательность детерминирована. Однако в разных версиях эта последовательность может измениться. Если код зависит от конкретных семян для работы, явно укажите семена на уровне графа и на уровне операции.
- Если семя на уровне графа не установлено, но семя на уровне операции установлено: для определения последовательности случайных чисел используется семя по умолчанию на уровне графа и заданное семя на уровне операции.
- Если установлены и семя на уровне графа, и семя на уровне операции: оба семени используются совместно для определения последовательности случайных чисел.
Чтобы проиллюстрировать видимые для пользователя эффекты, рассмотрим эти примеры:
Для генерации разных последовательностей в разных сеансах не устанавливайте семена ни на уровне графа, ни на уровне операции:
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'
Для того, чтобы все генерируемые операциями случайные последовательности были повторяемыми в разных сеансах, установите семя на уровне графа:
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'
| Аргументы | |
|---|---|
seed | целое число. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/compat/v1/set_random_seed