본문 바로가기

Error and Solve

[에러 해결] IndexError: Caught IndexError in DataLoader worker process 0. / batch 내에 빈 list가 있을 때

반응형

 

 

 

 

오류: IndexError: Caught IndexError in DataLoader worker process 0.

 

IndexError: Caught IndexError in DataLoader worker process 0. 

 

trainloader를 사용할 때 위와 같은 오류가 발생했습니다.

 

 

 

 

 

 

원인 발견 : batch내에 빈 list가 있을 때

 

values = [] # <- this is not being used
flags = []  

for image, label in zip(images, labellist):
    flag = False
    
    if label == 0:
        flag = True
        
    flags.append(flag)
    
    
examples['flag'] = flags
examples['value'] = values

 

 

위와 같이 preprocess를 할 때 (dataset get_item 함수 등에서) collate 대상이 빈 tensor일 때 발생한다

 

values는 원래 필요했던 example의 속성이었는데 이제 안 쓰게 되면서 빈 리스트를 돌려주게 되었다

필요했지만 이제 필요가 없으므로 지워주면된다. 

 

 

 

 

아래는 고친 코드

flags = []

for image, label in zip(images, labellist):
    flag = False
    
    if label == 0:
        flag = True
        
    flags.append(flag)
    
    
examples['flag'] = flags

 

위와 달리 빈 리스트로 돌려주는 코드는 아예 제거한 것을 알 수 있다.

 

 

 

 

 

 

 

 

 

 

반응형