Training
▸ notes
- Linear Layer와 ReLU를 직접 구현해보기 nn.Linear 와 nn.ReLU 라는 이미 완성된 클래스가 존재하지만, 직접 구현해보면 더 명확하게 이해할 수 있고 재미있는 사실들도 발견할 수 있다. torch.nn 없이 직접 구현해보았다. Linear Layer 구현하기 선형 계층은 입력에 가중치를 곱하고 편향을 더하는 y...
- model.eval()과 torch.no_grad() Pytorch의 모델 평가 단계에서 거의 항상 같이 등장하는 model.eval() 과 torch.no_grad() 를 정리해봤다. model.eval() model.eval() 은 모델을 평가, 즉 Evaluation에 최적화된 상태로 만드는 과정이다. Training 과정에는...
- clone과 detach, 그리고 계산 그래프 Pytorch에서 Tensor를 다룰 때 경고문을 자주 보았을 것이다. UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.detach().clone() ... rather than...
- zero_grad 가 필요한 이유 학습 루프에서 자주 빠뜨리는 게 optimizer.zero_grad() 다. 그런데 이게 없으면 학습이 망가진다. 왜 매 스텝마다 기울기를 초기화해야 하는지 짧게 정리해봤다. loss.backward()는 기울기를 누적한다 핵심은 loss.backward() 의 동작이다. loss...
- 가중치 초기화와 Kaiming(He) 초기화 간단한 Linear Layer를 pytorch로 직접 구현해보면서, 가중치를 어떻게 초기화하느냐에 따라 학습 결과가 달라지는 것을 확인해보았다. 해당 내용에 대한 짧은 글이다. 표준정규분포로 초기화 torch.randn 으로 가중치를 초기화하면 표준정규분포(평균 0, 표준편차 1)...