2016-09-05 2 views
0

Я начал изучать shadoworflow два дня назад, и когда я вижу переменную совместного использования в оффлайновом веб-сайте tensorflow, я был смущен tf.Variable(). После того, как я создать переменную следующим образом:Когда tf.variable() реализуется в тензорном потоке

demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test")

Интересно, состоит ли демо некоторого случайного числа сразу или только после запуска одного сеанса и запустить граф. Если это первый, то почему мы не можем показать его tf.print() и можем показать его после запуска сеанса.

ответ

1

Так как работает Tensorflow.

Сначала вы определяете вычислительный граф, в котором описываются взаимодействия между переменными, заполнителями и операциями. Обратите внимание, что инициализация переменной является операцией и как таковая помещается в описание графика.

Чтобы вычислить что-либо, определенный вами граф должен быть запущен в сеанс. Сессия помещается в устройство (которое вы можете указать), и выбранное устройство выполняет все.

Поэтому

demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test") 

является определением 2 операции:

  1. tf.random_normal([5, 5, 32, 32]) создает узел операции в графе, который состоит в генерации тензора с определенной формой, заполненной случайными значениями извлеченных из нормального распределения.
  2. tf.Variable(value, name="test") сначала создает переменный узел (с именем = test), а не рабочий узел, который состоит в присвоении переменной value.
+0

Аналогично, если вы использовали ** н.п. **. Random_normal, было бы вернуть np_array, который tensorflow вызовы 'tf.convert_to_tensor()', и затем создает константу с 'tf.constant()' от стоимость. Это отличается тем, что массив np будет существовать на земле python как переменная, а в landorflow land - постоянная (скрытая от пользователя). –

+0

В соответствии с тем, что вы говорите, могу ли я думать, что все в тензорном потоке, таком как tf.constant(), tf.Variable() и т. Д., Является просто определением, а вычисление их значений выполняется только тогда, когда session.run (XX) запущен? – luohao

+0

Да luohao, точно. – nessuno

Смежные вопросы