次の形式のテンソル(ロジットと呼びます)を変換したい
int32 - [batch_size]
次の形式のテンソル (ラベルと呼びます) に
[batch_size, 10]
たとえば、batch_size=3 の場合
logits=[1,6,9]
labels=[[0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,0,0,0],
[0,0,0,0,0,0,0,0,0,1]]
tensorflow mnist の例 ( https://github.com/tensorflow/tensorflow/tree/r0.9/tensorflow/examples/tutorials/mnist )でコスト関数を 2 次関数に変更したいので、この質問が出てきました。 .py および mnist.py 内。mnist.py で変更したい:
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels, name='xentropy')
loss = tf.reduce_mean(cross_entropy, name='xentropy_mean')
に
loss= tf.reduce_sum(tf.squared_difference(logits,labels))
しかし、問題は次のとおりです。
Logits tensor, float - [batch_size, 10];
Labels tensor, int64 - [batch_size].
だから私はラベルを「ベクトル化」する必要があります!? これを行う方法を知っている人はいますか?