最近、私は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'
'BasicLSTMCell_2'
で'_2'
から来るん:特に、私は次のような問題がありますか?後で同じ変数を再度取得するのに、後でtf.get_variable(reuse=True)
を使用するとどのように機能しますか?
編集:私は、関連する問題を見つけると思う:
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
です... "BasicLSTMCell_2"
で
tf.name_scopeが使用されているコードの正確な行を指摘できますか? rnn_cell.pyの# "BasicLSTMCell" ' – Xiaotong
トップレベル(' 'RNN' ')のスコープ(' 'RNN' ')は2つあります。リンク](https://github.com/tensorflow/tensorflow/blob/97522f0acd53652baa57e42d06557ebb94bf0c4d/tensorflow/python/ops/rnn.py#L86))、ネストされた( "" BasicLSTMCell ")スコープ([link](https ://github.com/tensorflow/tensorflow/blob/97522f0acd53652baa57e42d06557ebb94bf0c4d/tensorflow/python/ops/rnn_cell.py#L187))。 'variable_scope()'の呼び出しは、 'name_scope()'の呼び出しを意味することに注意してください(実装[here](https://github.com/tensorflow/tensorflow/blob/97522f0acd53652baa57e42d06557ebb94bf0c4d/tensorflow/python/ops/variable_scopeを参照)。 py#L381))。 – mrry
私は 'variable_scope()'がどこで使われているのかを明確にするために答えを編集しました。 – mrry