1

을 사용합니다. TensorFlow을 사용하여 분류를 위해 간단한 CNN을 작성했습니다. 그것은 다음과 같이 정의되어있다 :ConvNet : 유효성 감소가 크게 감소하지는 않지만 정확도가 향상되고 있습니다.

Input Tensor : 32,32,1 Grayscale Image 
1 Conv Layer 3x3x32 
Relu Activated 
2x2 Max Pooled 
128 FC1 
43 FC2 # 43 classes 

전체 코드는 Epochs100에서이 notebook on github

validation lossaccuracy1000, 2000은 찾을 수 있습니다

epoch 100 validation loss 3.67, validation accuracy 12.05% 
epoch 1000 validation loss 3.234, validation accuracy 57.63% 
epoch 2750 validation loss 3.111, validation accuracy 69.25% 

내가 잘못 이해했거나 어딘가에 버그가없는 한, 네트워크 배우고있다. 그러나 유효성 검사 손실은 매우 약간만 줄었습니다.

그 의미는 무엇입니까? 이 정보를 사용하여 네트워크를 개선하려면 어떻게해야합니까?

답변

1

이것은 TensorFlow의 고전적인 실수입니다. 출력물에 softmax를 적용한 다음 tf.nn.softmax_cross_entropy_with_logits을 적용해서는 안됩니다.

조작 tf.nn.softmax_cross_entropy_with_logits은 스케일이 조정되지 않은 로그를 예상합니다 (예 : softmax가없는 경우).

경고 : 다음 documentation에서 그 효율성을 위해 내부적으로 logits에 softmax를 수행하기 때문에이 연산은 스케일 없음의 logits을 기대하고있다. softmax의 출력으로이 연산을 호출하지 마십시오. 잘못된 결과가 산출됩니다.

+0

재미있는 점은 이전에 읽은 것입니다. 대단히 감사합니다, 잘 작동합니다! –

+0

사람들이 TensorFlow에서 이상한 손실을 보일 때 가장 먼저 확인합니다. –