코드는 Tensorflow tutorial에서 발췌되었습니다. 이 함수는 0-9의 손으로 쓴 사진의 데이터 세트 인 MNIST 데이터 세트에서 작업을 실행합니다. 왜 레이블을 int64
으로 변환했는지, 나는 int32
으로 충분하다고 생각했다.왜 우리는 tensorflow로부터 손실 함수의 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에서, 그것은 fed 값 int64가'int32' 공간에 들어 맞는지 확인하기 위해 로직을 실행해야합니다 –