2
コードはTensorflow tutorialから抜粋しています。この機能は、0-9の手書き画像のデータセットであるMNISTデータセットで操作を実行します。なぜint64
にラベルをキャストすると、私はint32
と思った。なぜテンソルフローから損失関数のMNISTラベルに `int64`が必要ですか?
def loss(logits,labels):
labels = tf.to_int64(labels)
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(
logits,labels,name='xentropy')
loss = tf.reduce_mean(cross_entropy,name='xentropy_mean')
return loss
これらの変換の中には、データがnumpy配列として供給されるときにnumpyと同じ型を使用するようにするものがあります(numpy整数はデフォルトでint64です)。 –
その場合、変換は自動的に行われます。 'dtype'を指定せずに配列を定義するときはnumpyでテストしました。デフォルトでは' int64'になります。それでは、なぜ前もってキャスティングを気にかけていますか? – kmario23
'int32'のTensorFlow' labels'ノードに 'int64'を送ると、それぞれの実行時にダウンキャストを経由しなければなりません。 IEの場合、摂取された値int64が 'int32'空間に収まるかどうかを調べるロジックを実行する必要があります –