"IndexError: Target 811 is out of bounds."
간단한 multi-layer perceptron 모델을 학습시키는 과정에서, 위 오류가 발생했다.
모델이 예측한 클래스 레이블이 실제 데이터셋의 클래스 레이블 범위를 벗어날 때 발생하는 오류이다.
예를 들어, 클래스 레이블이 0부터 9까지인데 모델이 10 이상의 값을 예측한 경우 발생할 수 있다.
가능한 원인으로는 다음과 같은 것들로 요약해볼 수 있다.
- 데이터셋의 클래스 레이블 개수(unique한 label개수)와 모델의 output_dim이 일치하지 않는 경우
- 데이터셋의 클래스 레이블 범위가 0부터 output_dim-1까지가 아닌 경우
- 학습 데이터에 레이블이 잘못 매핑된 경우
따라서, 데이터셋의 클래스 레이블 범위를 확인하고 모델의 output_dim을 이에 맞게 수정해보면 될 것이다.
또한, 데이터 전처리를 통해 레이블이 잘못 매핑된 경우에는 이를 수정해야 한다.
<해결방법>
- 1번의 경우 말그대로 예측할 class의 개수가 (binary classification이라면 2개겠지) output dimension과 다를 경우 발생할 수 있기때문에, 맞춰주면 해결된다.
- 2번의 경우 클래스는 당연히 label encoder를 통해서 0~클래스개수-1의 정수 목록으로 변환되어야한다.(나는 이부분을 빼먹었었다)
'Error_Log' 카테고리의 다른 글
Mecab 설치 및 trouble shooting 하기(+user-dict 셋팅) (0) | 2024.05.02 |
---|---|
[파이참] django를 활용한 App setting시 자잘한 체크리스트 (0) | 2023.04.06 |
[Pickle file dump error]OverflowError: cannot serialize a bytes object larger than 4 GiB (0) | 2023.03.07 |
Jupyter notebook 파일 실행 오류(out of memory) (0) | 2023.02.20 |