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

После эксперимента в Tensorflow 1.8 с консолью iPython:

In [2]: x = tf.placeholder(tf.float16, [None, 784])
   ...: y = tf.placeholder(tf.float16, [None, 10])
   ...: 
   ...: 

In [3]: x
Out[3]: <tf.Tensor 'Placeholder:0' shape=(?, 784) dtype=float16>

In [4]: y
Out[4]: <tf.Tensor 'Placeholder_1:0' shape=(?, 10) dtype=float16>

In [5]: x = tf.placeholder(tf.float16, [None, 784])
   ...: y = tf.placeholder(tf.float16, [None, 10])

In [6]: x
Out[6]: <tf.Tensor 'Placeholder_2:0' shape=(?, 784) dtype=float16>

In [7]: y
Out[7]: <tf.Tensor 'Placeholder_3:0' shape=(?, 10) dtype=float16>

Почему существует этот «счетчик заполнителей» и в чем его причина?Я переназначаю переменные с одинаковыми заполнителями, поэтому мне интересно, почему они не нумеруются снова как «Placeholder: 0» и «Placeholder_1: 0»?

Спасибо

1 Ответ

0 голосов
/ 06 июня 2018

Каждый раз, когда вы запускаете x = tf.placeholder(tf.float16, [None, 784]), операция добавляется в график по умолчанию.Вы можете проверить:

for op in tf.get_default_graph().get_operations():
   print (op.name)
#Placeholder
#Placeholder_1
#Placeholder_2

Так что в ipython notebook вы можете сделать tf.reset_default_graph() перед ячейкой, чтобы избежать этого поведения.

...