2017-10-24 9 views
1

私の質問は、以下の簡単なコードでは、いくつかの変数(たとえばw_3)の値は更新されませんが、更新されるのはなぜですか。テンソルフローの可変更新の問題

import tensorflow as tf 
import numpy as np 
x=([1, 2, 3]) 
x= np.array(x) 

sess= tf.InteractiveSession() 

input_data= tf.placeholder(dtype= 'float32', shape= (None)) 

w_1= tf.Variable(tf.truncated_normal([1], stddev= 0.01), trainable= True, name='w_1') 

w_2= tf.Variable(tf.truncated_normal([1], stddev= 0.01), trainable= True, name='w_2') 

w_3= tf.Variable(tf.truncated_normal([1], stddev= 0.01), trainable= True, name='w_3') 

loss= tf.pow(w_1, 2)- input_data+ tf.pow(w_2, 2)+ tf.pow(w_1, 2) 

optimizer = tf.train.GradientDescentOptimizer(learning_rate= 0.01) 

train_op = optimizer.minimize(loss) 

init= tf.global_variables_initializer() 

sess.run(init) 

for j in range(0,4): 

    for i in range(0,3): 
     sess.run(train_op, feed_dict={input_data: x[i]}) 
     print('w1:',sess.run(w_1, feed_dict={input_data: x[i]})) 
     print('w2:',sess.run(w_2, feed_dict={input_data: x[i]})) 
     print('w3:',sess.run(w_3, feed_dict={input_data: x[i]})) 

答えて

1

これは期待されています。あなたのw_3変数は損失計算には関係しません。したがって、勾配はそれに依存せず、w_3変数は更新されません!

多分あなたはw_3を使うことを意図していて、シンプルで典型的なタイプミスをしました!

+0

はい、あなたは正しいです!私はそれを忘れた、ありがとう – Maz