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 |