본문 바로가기

Error_Log

[ML]모델 학습 진행 시 "IndexError: Target 811 is out of bounds." Error

"IndexError: Target 811 is out of bounds."

 

 

간단한 multi-layer perceptron 모델을 학습시키는 과정에서, 위 오류가 발생했다.

 

모델이 예측한 클래스 레이블이 실제 데이터셋의 클래스 레이블 범위를 벗어날 때 발생하는 오류이다.

예를 들어, 클래스 레이블이 0부터 9까지인데 모델이 10 이상의 값을 예측한 경우 발생할 수 있다.

가능한 원인으로는 다음과 같은 것들로 요약해볼 수 있다.

 

  1. 데이터셋의 클래스 레이블 개수(unique한 label개수)와 모델의 output_dim이 일치하지 않는 경우
  2. 데이터셋의 클래스 레이블 범위가 0부터 output_dim-1까지가 아닌 경우
  3. 학습 데이터에 레이블이 잘못 매핑된 경우

 

따라서, 데이터셋의 클래스 레이블 범위를 확인하고 모델의 output_dim을 이에 맞게 수정해보면 될 것이다.

또한, 데이터 전처리를 통해 레이블이 잘못 매핑된 경우에는 이를 수정해야 한다.

 

 

<해결방법>

  • 1번의 경우 말그대로 예측할 class의 개수가 (binary classification이라면 2개겠지) output dimension과 다를 경우 발생할 수 있기때문에, 맞춰주면 해결된다.
  • 2번의 경우 클래스는 당연히 label encoder를 통해서 0~클래스개수-1의 정수 목록으로 변환되어야한다.(나는 이부분을 빼먹었었다)