Spec-Zone.ru › TensorFlow

tf.compat.v1.set_random_seed

Задаёт начальное значение генератора случайных чисел на уровне графа для графа по умолчанию.

Просмотреть псевдонимы

Псевдонимы совместимости для миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.random.set_random_seed

tf.compat.v1.set_random_seed(
    seed
)

Переход на TF2

Внимание: Этот API разработан для TensorFlow v1. Продолжайте чтение, чтобы узнать, как перейти с этого API на нативный эквивалент TensorFlow v2. Инструкции по миграции остального кода см. в руководстве по миграции с TensorFlow v1 на TensorFlow v2.

'tf.compat.v1.set_random_seed' совместим с eager mode. Однако в eager mode этот API задаёт глобальное начальное значение вместо начального значения на уровне графа по умолчанию. В TF2 этот API изменён на tf.random.set_seed.

Описание

Используется в блокнотах

Используется в учебных материалах
  • Пример constrained optimization в TensorFlow с использованием набора данных CelebA
  • Прогнозирование токсичности комментариев Wiki Talk
  • Подгонка модели смеси процессов Дирихле с использованием предварительно обусловленной стохастической динамики Ланжевена с градиентом

Операции, использующие случайное начальное значение, фактически получают его из двух значений: на уровне графа и на уровне операции. Эта функция задаёт начальное значение на уровне графа.

Взаимодействие с начальными значениями на уровне операции происходит следующим образом:

  1. Если начальные значения на уровне графа и операции не заданы: для этой операции используется случайное начальное значение.
  2. Если начальное значение на уровне графа задано, а на уровне операции — нет: система детерминированно выбирает начальное значение операции совместно с начальным значением графа, чтобы получить уникальную последовательность случайных чисел. В рамках одной версии tensorflow и одного пользовательского кода эта последовательность детерминирована. Однако в разных версиях она может измениться. Если для работы кода требуются определённые начальные значения, явно укажите значения и на уровне графа, и на уровне операции.
  3. Если начальное значение на уровне графа не задано, но задано на уровне операции: для определения последовательности случайных чисел используются начальное значение графа по умолчанию и указанное начальное значение операции.
  4. Если заданы начальные значения и на уровне графа, и на уровне операции: оба значения используются совместно для определения последовательности случайных чисел.

Чтобы показать влияние этих настроек на поведение пользователя, рассмотрим следующие примеры:

Чтобы получать разные последовательности в разных сеансах, не задавайте начальные значения ни на уровне графа, ни на уровне операции:

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/api_docs/python/tf/compat/v1/set_random_seed

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API