2023 교원그룹 AI OCR 챌린지

BaseLine 코드에서 발생하는 "iter(train_loader).next()" 에러 해결

2022.12.30 01:42 7,230 조회

[해당 코드]

image_batch, text_batch = iter(train_loader).next()

print(image_batch.size(), text_batch)


제가 baseline 코드를 돌렸을 때, 이 부분에서 막혀서 학습을 못 했었습니다.


여러 해결방법을 찾아 공유합니다.


  • ipynb 코드 파일을 (train.csv, test.csv)파일이 있는 폴더에 넣기


  • DataLoader의 num_workers를 0으로 설정

train_dataset = CustomDataset(train['img_path'].values, train['label'].values)

train_loader = DataLoader(train_dataset, batch_size = CFG['BATCH_SIZE'], shuffle=True, num_workers=0)

val_dataset = CustomDataset(val['img_path'].values, val['label'].values)

val_loader = DataLoader(val_dataset, batch_size = CFG['BATCH_SIZE'], shuffle=True, num_workers=0)


  • next()에 iter(train_loader) 넣기

image_batch, text_batch = next(iter(train_loader))

  • 이 방법은

                  AttributeError: '_SingleProcessDataLoaderIter' object has no attribute 'next'

                  에러가 발생했을 때 사용하시면 됩니다.

로그인이 필요합니다
0 / 1000
EISLab_이희원
2022.12.30 02:17

window에서 학습을 돌리려고 시도했을 때는 저 방법을 써야 했지만, Linux에서 .py로 학습을 시도했을 때는 num_workers의 값과 상관없이 잘 동작하였습니다.

룩희
2022.12.30 09:17

윈도우에서 똑같은 문제가 계속 발생하고 있네요.. 

EISLab_이희원
2023.01.03 18:25

num_workers 변수를 사용해도 Linux환경에서는 잘 돌아가지만, Window 환경에서는 freeze 된다고 합니다.

한성대학교_김태민
2023.01.03 19:00

if __main__인가 코드가 있는데  달아서 코드 정리하면 해결되는걸로 알고있습니다.

김도훈
2023.01.03 19:43

삭제된 댓글입니다

ymk
2023.01.14 16:38

감사합니다. 덕분에 해결되었어요

psmqdt
2023.05.15 03:10

대단합니다.