model.train ()에 대한 혼동 [중복]
Sep 07 2020
나는 pytorch의 초보자입니다. github에서 일부 딥 러닝 모델에는 model.train ()이 있고 일부는 그렇지 않지만 정상적으로 실행할 수 있음을 확인했습니다. model.train ()이 필요한지 알고 싶습니다. 효과는 무엇입니까?
답변
1 hkchengrex Sep 07 2020 at 13:06
train모드 또는 eval모드는 훈련 / 테스트에서 비대칭으로 동작하는 모듈 (예 : BatchNorm, Dropout)이있는 경우에만 중요합니다. 그래디언트 누적에 전혀 영향을 미치지 않는다는 점을 강조하고 싶습니다. 비대칭 모듈을 사용하더라도 eval모드 에서 모델을 완벽하게 훈련 할 수 있습니다 . 일부는 사전 훈련 된 ImageNet 모델을 사용하여 훈련시 메모리를 절약하기 위해이를 수행합니다.
비대칭 모듈이 없다면 전혀 문제가되지 않습니다.
기본적으로 모든 모듈은 training=True.
2 gspr Sep 07 2020 at 12:25
train그에 상응하는 부분 eval은 모델을 학습 모드와 평가 모드로 전환합니다.
훈련 모드에서는 일반적으로 모델을 평가할 때마다 추적 된 기울기가 업데이트됩니다. 이것은 훈련에 사용되는 경사 하강 법을 수행하는 데 필요합니다. 평가 모드에서는 그렇지 않습니다.