0
関数内の可変再利用動作を理解することができません。 コードがされていますので、関数FAは、xを更新し、3回呼び出され関数内のget_variable
def fa(y):
x = tf.get_variable("x", initializer=tf.constant([3, 4, 5])) #without reusing
x = tf.scatter_add(x,[0,2],y) #fine updating x
return x
def fb():
x = tf.get_variable("x", initializer=tf.constant([3, 4, 5]))
x = x.assign([1,2,3])
return x
with tf.Graph().as_default(),tf.device('/cpu:0'):
with tf.variable_scope('ns1',reuse=False):
stepa = fa([1,1])
# stepb = fb() #would cause an error
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print('fa',sess.run(stepa))
print('fa',sess.run(stepa))
print('fa',sess.run(stepa))
print('init')
sess.run(tf.global_variables_initializer())
print('fa',sess.run(stepa))
print('fa',sess.run(stepa))
# print('fb',sess.run(stepb))
# print('fb',sess.run(stepb))
print('fa',sess.run(stepa))
。 同じ関数faで、get_variableは変数xを再利用しているようですが、異なる関数fbではget_variable 'x'がエラーを起こします。どうして?ご協力いただきありがとうございます!
ありがとうを使用することができ、グラフに存在した名前の変数を再利用したい場合は!私は再利用スコープが再利用スコープなしで動作することを知っています。get_variableはfa関数でローカルに動作し、faを3回呼び出すと再利用モードで動作するように見えます。 – zhaihouxi
'fa'は最初に変数を作成するので、' reuse = False' –
セッションで何回呼び出されてもfa add xはグラフ内で1回だけ推測されます。まだテンソルボードの設定に問題があります。答えてくれてありがとう! – zhaihouxi