안녕하세요.
Deep Learning은 대표적으로 분류 문제가 있으며, CNN의 튜토리얼은 MNIST, CIFAR10 분류로 가장 많이 소개됩니다.
이진 분류는 Sigmoid를, 그 이상의 다중 분류는 Softmax를 사용하며, Softmax를 사용하기 위해 One-hot encoding을 해야 합니다.
Sotfmax의 가장 중요한 점은 각 Class 간의 Probabilities(확률)의 합이 '1'입니다. 정답 Class가 1에 가까워지면, 자연스럽게 오답인 Class의 Probabilities는 0에 가까워지게 됩니다.
하지만 Pytorch는 One-hot encoding을 하지 않습니다. Pytorch 개발자들이 최대한 사람 친화적으로 개발을 할 수 있게끔 배려를 한 것 같습니다.
그렇다면, Target n is out of bounds. 에러문은 왜 뜨는 것일까요?
이유는 간단합니다. 인덱스 오류랑 원리가 같습니다.
대게 class가 0부터 시작하지 않고, 1부터 시작해서
Class가 20개라면, 0~19...
Class가 15개라면, 0~14...
만약, Class 5개에서, 1~5라면, 해결방법도 간단합니다.
Data Type이 Numpy나 Tensor라면, y_data = y_data - 1을 해주면 쉽게 해결됩니다.
728x90
반응형
'Python > Deep Learning' 카테고리의 다른 글
주피터 노트북 개인 딥러닝 서버 만들기 ! (2) with Window10, Pytorch (1) | 2021.07.16 |
---|---|
주피터 노트북 개인 딥러닝 서버 만들기 ! (1) with Window10, Pytorch (6) | 2021.07.14 |
[딥러닝] ResNet - Residual Block 쉽게이해하기! (Pytorch 구현) (2) | 2021.03.24 |
[무선 통신] UWB LOS/NLOS Classification Using Deep Learning Method (2) (0) | 2021.03.10 |
[Pytorch] RNN에서 Tanh말고 Sigmoid나 ReLU를 사용하면 안될까? (0) | 2021.02.04 |