본문 바로가기
AI/Pytorch

[Pytorch] train(), eval(), torch.no_grad()의 차이점

by 까다로운오리 2023. 8. 26.

model.train()

Dropout Layer 활성화

* Batch Normalization Layer 활성화

 

model.eval() 

* model.train(False)와 동일한 기능

* evaluation mode로 바꿔주어 Dropout Layer 비활성화, Batch Normalization Layer는 훈려중에 계산된 통계값(평균, 분산의 이동평균)을 사용하게 함

 

** Batch Normalization

: 각 batch 별로 평균, 분산을 이용하여 정규화

 

 

torch.no_grad()

* Gradient 계산을 비활성화

-> 메모리 사용량을 줄이고 계산 속도를 빠르게 만들 수 있음

-> 최근엔 torch.inference_mode()를 주로 사용

 

 

즉, train()과 eval()은 Layer를 활성화, 비활성화 하는것이 목적이고 torch.no_grad()는 메모리, 속도 효율을 증가하는것이 목적

'AI > Pytorch' 카테고리의 다른 글

[Pytorch] Seq2Seq Transformer 실습  (2) 2024.02.04
[Pytorch] Transformer  (2) 2024.01.28
[Pytorch] 가중치 초기화(Weight Initialization)  (0) 2024.01.16