2016-09-13 10 views
0

私はテンソルフローで小さなニューラルネットワークを作成しようとしています。私はチュートリアル(http://de.slideshare.net/tw_dsconf/tensorflow-tutorial)でこれを見て、Null値を取得するので、私は重みを最適化しようとするまで(勾配降下で)すべてが正常に動作しています。なし勾配降下でデータを最適化する際の値

with tf.Session() as sess: 
x = tf.placeholder("float",[1,3],name="x") 
w = tf.Variable(tf.random_uniform([3,3]),name="w") 
y = tf.matmul(x,w) 
labels = tf.placeholder("float",[1,3],name="labels") 
relu_out = tf.nn.relu(y) 
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(relu_out,labels,name="loss") 
optimizer = tf.train.GradientDescentOptimizer(0.5) 
train_op = optimizer.minimize(cross_entropy) 
e_labels = np.array([[1.0,1.0,0.0]]) 
sess.run(tf.initialize_all_variables()) 
for step in range(10): 
    [out,loss] = sess.run([train_op,cross_entropy],feed_dict={x:np.array([[1.0,2.0,3.0]]),labels: e_labels}) 
print("the result is:",out) 
print("The loss of the function is:",loss) 

は、今まで私は、ラベル値(e_labels)と入力値(x)を変更したが、とにかく私はいつもなしの結果を取得します。私の質問です:そのNone Valueは普通ですか?私はそうは思わないが、誰かが私に教えてもらえれば、私は何ができ、どのように解決できるかを知ってうれしい。

+0

出力と損失関数が最適化されています。しかし、私はまだその疑いがあります。ありがとうございます –

答えて

1

outの値(すなわち、sess.run([train_op, cross_entropy], ...)の最初の戻り値)がNoneであることを意味します。

これは完全に正常です:train_optf.Operationで、あなたは(ドキュメントを引用)tf.Session.run()tf.Operationを渡す際に「対応するフェッチされた値がNoneになります。」

は、voidの戻り値の型(CやJavaなどの言語)の関数のように考えることができます。副作用(変数の更新)を引き起こすのは、run()ですが、意味のある戻り値そのものはありません。

+0

恐ろしい、次に心配することは何もありません。ありがとう@mrry –

関連する問題