2016-11-20 13 views
1

original Tensorflow tutorial次のコードを含むtf.expand_dims:Tensorflowは

batch_size = tf.size(labels) 
labels = tf.expand_dims(labels, 1) 
indices = tf.expand_dims(tf.range(0, batch_size, 1), 1) 
concated = tf.concat(1, [indices, labels]) 
onehot_labels = tf.sparse_to_dense(concated, tf.pack([batch_size, NUM_CLASSES]), 1.0, 0.0) 

2行目はlabelsテンソルに寸法を追加します。しかし、labelsはフィード辞書を介してフィードされていたので、すでに形は[batch_size, NUM_CLASSES]であるはずです。もしそうなら、expand_dimsはなぜここに使用されますか?

答えて

2

このチュートリアルはかなり古いです。バージョン0.6を参照していますが、(11-20-2016時)の時点で0.11になっています。したがって、その時点で異なった多くの機能がありました(v0.6)。

mnistでラベルがちょうど0〜9の数字としてエンコードされた:とにかく、あなたの質問に答えるために

。しかし、損失関数は、ラベルを1つのホットベクトルとして符号化することを期待していました。

この例では、ラベルはまだ[batch_size, NUM_CLASSES]ではありません。ちょうど[batch_size]でした。

これは、同様のnumpy関数によって実行されている可能性があります。また、テンソルフローのmnistデータセットのラベルを、すでに述べた形のホットベクトルとして取得する関数も提供しています。