728x90
반응형
만약 softmax를 썼는데 결과의 총합이 1이 아닐 경우, 이는 softmax를 사용한 위치와 loss 함수의 특성을 다시 한번 살펴봐야 한다.
대표적인 예로, 만약 loss 함수로 CrossEntropyLoss를 쓰는데 모델이 output을 logit이 아니라 softmax의 결과 값을 쓴다면 이와 같은 문제가 발생할 수 있다. PyTorch에서 CrossEntropyLoss는 내부적으로 log_softmax와 NLLLoss를 사용하며, input 값이 probability가 아닌 logit 값이 들어오기를 기대한다. 따라서, softmax와 log_softmax의 중복으로 인해 위와 같은 문제가 발생할 수 있다. 당연히 이는 학습을 불안정하게 하는 원인이 된다.
참고: https://discuss.pytorch.org/t/softmax-not-summing-to-1/58526/6
반응형
'AI > PyTorch' 카테고리의 다른 글
텐서에서 Top-K 결과를 받아오는 방법 (0) | 2023.10.26 |
---|---|
cuDNN benchmark 활성화를 통한 최적의 알고리즘 선택 (0) | 2023.10.14 |
PyTorch에서 이미지 데이터에 대해 normalize를 할 때, mean=[0.485, 0.456, 0.406]과 std=[0.229, 0.224, 0.225]를 쓰는 이유는? (2) | 2023.10.09 |
Torch.mm과 Torch.matmul 차이점 (0) | 2022.03.16 |