2017-06-03 13 views
4

テンソルフローの非常に単純な例:min (x + 1)^2xはスカラーです。コードは次のとおりです。テンソルフローグラフの勾配が正しく計算されていませんか?

import tensorflow as tf 

x = tf.Variable(initial_value=3.0) 
add = tf.add(x, 1) 
y = tf.square(add) 
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01) 
train = optimizer.minimize(y) 

は、最終的にこの

enter image description here

疑問は、なぜノードは "追加" されたように見える、tensorboardでそれを視覚化

graph = tf.get_default_graph() 
writer = tf.summary.FileWriter("some/dir/to/write/events") 
writer.add_graph(graph=graph) 

ディスクにグラフを書きますグラデーションに接続されていますか?私はyを最小限に抑えようとしているので、ノード "Sqaure"はバグでしょうか?誰もそれを説明することができますか?

答えて

9

バグはありません。グラデーションが何であるかを理解し、自分で計算する方法を知っているだけです。だから(x+1)^2' = 2*(x+1)。つまり、グラジエントの計算には(x+1)^2を計算する必要はありません。 enter image description hereここ

をより面白く、より直感的な例です:あなたはグラデーション部分にズームインします場合は、それはあなたの正方形の勾配を計算し、それがグラフの一部が必要とされないことを考え出していることがわかります

import tensorflow as tf 

x = tf.Variable(initial_value=3.0) 
y = tf.cos(x) 

train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(y) 

with tf.Session() as sess: 
    writer = tf.summary.FileWriter('logs', sess.graph) 
    writer.close() 

cos(x)' = - sin(x)をご存知でしょうか。つまり、グラデーションの計算にはxだけが必要です。そして、これはあなたがグラフで見るものです:enter image description here

+0

非常にクールな例!最後に、私はいわゆる*象徴的なグラデーションを理解することができます!どうもありがとうございました! –

+1

@ Jie.Zhouはい、これは、多くの重要なトピック、すなわちグラフがどのように構築されているか、2)勾配が数学でどのように計算され、どのようにTFに適用されるかを明らかにする非常に良い質問であると思います –

関連する問題