Каковы все случайные начальные значения для TensorFlow V2.x и tf.keras? - PullRequest
1 голос
/ 26 мая 2020

Я использую только tf.keras в TensorFlow V2.x. Какие семена я могу сеять? Я нашел только tf.random.set_seed (). Есть ли другие семена?

1 Ответ

1 голос
/ 10 июня 2020

Вот эксперименты, которые мы пробовали. Результаты для tf.random.set_seed идентичны.

Эксперимент 1: tf.random.set_seed(1234) устанавливается только один раз.

import tensorflow as tf

for i in range(5):
  print("Iteration Number :", i)
  tf.random.set_seed(1234)
  print(tf.random.uniform([1]))  # generates 'A1'
  print(tf.random.uniform([1]))  # generates 'A2'
  print(tf.random.uniform([1]))  # generates 'A3'

Вывод - Создает одно и то же значение для каждой итерации для A1, A2 и A3.

Iteration Number : 0
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 1
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 2
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 3
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 4
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)

Давайте перезапустим среду выполнения или ядро и проверьте результат.

Вывод - Создает одно и то же значение для каждой итерации для A1, A2 и A3. А также результаты совпадают с результатами предыдущего запуска.

Iteration Number : 0
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 1
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 2
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 3
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)
Iteration Number : 4
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.3253647], shape=(1,), dtype=float32)
tf.Tensor([0.59750986], shape=(1,), dtype=float32)

Эксперимент 2: tf.random.set_seed(1234) устанавливается для каждой операции.

for i in range(5):
  print("Iteration Number :", i)
  tf.random.set_seed(1234)
  print(tf.random.uniform([1]))  # generates 'A1'
  tf.random.set_seed(1234)
  print(tf.random.uniform([1]))  # generates 'A1'
  tf.random.set_seed(1234)
  print(tf.random.uniform([1]))  # generates 'A1'

Вывод - Все значения идентичны, так как tf.random.set_seed устанавливается для каждой операции.

Iteration Number : 0
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
Iteration Number : 1
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
Iteration Number : 2
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
Iteration Number : 3
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
Iteration Number : 4
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)
tf.Tensor([0.5380393], shape=(1,), dtype=float32)

Значения остаются такими же даже после перезапуска ядра.

Если у вас все еще есть любые сомнения, пожалуйста, поделитесь воспроизводимым кодом с вашими ожиданиями.

Надеюсь, это ответит на ваш вопрос. Удачного обучения.

...