본문 바로가기

코딩 에러

파이토치, dataloader 오류.

RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase. This is probably means that you are not using fork to start your child processes and you have forgotten to use the proper idiom in the main module: if __name__ == '__main__': freeze_support () ... The "freeze_support ()" line can be omitted if the program is not going to be frozen.

 

freeze_support()  관련 오류

 

뭐 모든 케이스를 다 포함할 수는 없지만, Dataloader를 수행할 경우 이런 오류가 뜬 적이 있다.

이것은 간단하게 밑에 __name__ == __main__ 하는 걸로 해결하였다.

그리고 train() 안에서 dataloader를 다시 수행할 경우 해결.

일반적으로 나는 케라스 코딩처럼 함수화 안하고 바로 코드를 쓰다가 오류가 났었다.

쉽게 말해서

 

오류가 났었던 코딩

for i , data in enumerate(dataloader) :

    print(i, data)

 

고친 후, 코딩

def train():

  for i , data in enumerate(dataloader):

      print(i,data)

 

if __name__ == '__main__':

    train()

 

 

이 차이...

그 안에 데이터로더는 그냥 간편하게 설명하기 위해 다 생략한거니 중요한 차이를 보시면 됩니다.