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