최근 finetuning을 많이 하기 때문에
다른 사람이 만든 모델을 불러오고 사용하는 방법을 알아보자
학습 결과에 대한 모델과 파라미터 저장
학습의 결과를 저장해주는 함수이다.
모델의 architecture 와 parameter를 저장한다.
또한 중간과정을 저장해서 나중에 최선의 결과인 모델을 선택할 수 있다
- model.state_dict() : 모델의 파라미터 표시
- torch.save(model.state_dict()) : 모델의 파라미터 저장
model.pt 라는 pd파일로 저장 - load_state_dict() : 파라미터만 load
- torch.save() : 모델의 architecture와 파라미터가 함께 저장
- torch.load() : 모델의 architecture와 파라미터가 함께 load
from torchsummary import summary
summary(model, size)
이런 식으로 torchsummary를 사용하면 layer마다 output shape과 parameter갯수를 한 눈에 볼 수 있도록 출력해준다
checkpoints
학습의 중간 결과를 저장하여 후에 최선의 결과를 선택할 수 있도록 함
- earlystopping 기법 사용시 이전 학습의 결과물을 저장해서 이전 epoch의 학습 상태를 가져올 수 있다
- loss와 metric, epoch를 함꼐 저장한다
savefile=torch.save({넣을 정보 선택})
#이제 나중에 불러낼 때
checkpoint=torch.load(savefile)
epoch=checkpoint['epoch']
optimizer.load_state_dict()
#model architecture과 loss 등을 더 불러내내면 다시 복원할 수 있다
Transfer learning 전이 학습
다른 dataset으로 만든 모델을 현재 데이터에 적용하는 방법
- 대용량 데이터로 학습된 모델은 성능이 좋기 때문에 적은 데이터를 가진 모델에 적용시킨다
- 현재 딥러닝에서는 가장 일반적인 학습 기법이다
- torchvision의 다양한 모델, huggingface
Freezing
pretrained model을 활용할 때, 모델의 일부분(처음이나 끝)을 얼려서 더 이상 파라미터가 업데이트가 되지 않고 새로 학습을 시키는 것
back-propagation이 일부 layer에서만 일어난다.
stepping frozen : 얼릴 부분을 계속 바꾸어가며 학습해보는 것
for param in my_model.parameters():
param.requres_grad=False #frozen
for param in my_model.linear_layers.parameters():
param.requres_grad=True #마지막 레이어
'부스트캠프 AI Tech 3기 > 이론 : U-stage' 카테고리의 다른 글
[Day10] Pytorch 8. Multi-GPU 학습 (0) | 2022.01.28 |
---|---|
[Day8] Pytorch 7. Monitoring tools for PyTorch (0) | 2022.01.27 |
[Day7] Pytorch 5. Pytorch Dataset : dataset, transforms, DataLoader (0) | 2022.01.26 |
[Day7] Pytorch 4. AutoGrad & Optimizer : Module, Parameter (0) | 2022.01.25 |
[Day6] Pytorch 3. PyTorch 프로젝트 구조 이해하기 : template, ngrok (0) | 2022.01.24 |