Недавно я пытался научиться использовать TensorFlow, и я не понимаю, как работают переменные области. В частности, у меня есть следующая проблема:
import tensorflow as tf
from tensorflow.models.rnn import rnn_cell
from tensorflow.models.rnn import rnn
inputs = [tf.placeholder(tf.float32,shape=[10,10]) for _ in range(5)]
cell = rnn_cell.BasicLSTMCell(10)
outpts, states = rnn.rnn(cell, inputs, dtype=tf.float32)
print outpts[2].name
# ==> u'RNN/BasicLSTMCell_2/mul_2:0'
Откуда '_2'
в 'BasicLSTMCell_2'
? Как это работает, если позже использовать tf.get_variable(reuse=True)
, чтобы снова получить одну и ту же переменную?
edit: Я думаю, что я нашел связанную проблему:
def creating(s):
with tf.variable_scope('test'):
with tf.variable_scope('inner'):
a=tf.get_variable(s,[1])
return a
def creating_mod(s):
with tf.variable_scope('test'):
with tf.variable_scope('inner'):
a=tf.Variable(0.0, name=s)
return a
tf.ops.reset_default_graph()
a=creating('a')
b=creating_mod('b')
c=creating('c')
d=creating_mod('d')
print a.name, '\n', b.name,'\n', c.name,'\n', d.name
Выходной сигнал
test/inner/a:0
test_1/inner/b:0
test/inner/c:0
test_3/inner/d:0
Я смущен...