Почему случайное значение имеет разные значения в одном и том же сеансе после установки начального уровня на графике Tensorflow? - PullRequest
0 голосов
/ 11 июля 2019

В этом учебном пособии объясняется начальное число уровня графа и начальное значение уровня операции. Это сбивает с толку, что после установки начального уровня на графике, в том же сеансе выведите ту же переменную, но получили разные значения, как показано в коде:

tf.compat.v1.random.set_random_seed(1234)
a = tf.random.uniform([1])

with tf.compat.v1.Session() as sess1:
  print(sess1.run(a))  # generates 'A1'
  print(sess1.run(a))  # generates 'A2'

Даже после установки начального уровня op, все равно распечатывайте разные результаты.

1 Ответ

0 голосов
/ 11 июля 2019

Насколько я понимаю, set seed используется для установки начальной позиции генератора случайных чисел. Поэтому первый отпечаток является первой случайной униформой с начальным числом 1234, в то время как второй отпечаток является второй случайной униформой с начальным числом 1234. Для нового сеанса начальное число снова будет установлено равным 1234.

Set seed обычно используется, чтобы гарантировать, что вы получаете одинаковые сценарии на разных прогонах и на другом оборудовании. Иначе было бы очень сложно и разочаровывать код поиска ошибок с ошибками, зависящими от случайных генераторов.

В качестве примера мы можем начать два разных сеанса и проверить, что они одинаковы:

import tensorflow as tf

tf.compat.v1.random.set_random_seed(1234)
a = tf.random.uniform([1])

print('session 1')
with tf.compat.v1.Session() as sess1:
    print(sess1.run(a))  # generates 'A1'
    print(sess1.run(a))  # generates 'A1'

print('session 2')    
with tf.compat.v1.Session() as sess1:
    print(sess1.run(a))  # generates 'A1'
    print(sess1.run(a))  # generates 'A1'

>> session 1
>> [0.96046877]
>> [0.8362156]
>> session 2
>> [0.96046877]
>> [0.8362156]

Как и предполагалось, оба сеанса дают одинаковый вывод. И вы должны получить те же результаты, если вы попробуете это на своем компьютере.

Это пример того, как установить начальное значение между сеансами. Вместо того, чтобы установить случайное начальное число на уровне сеанса, кажется, невозможно на сегодняшний день? Более подробное обсуждение этого вопроса см. В комментарии к этому вопросу

...