[부스트캠프 AI Tech 5기] 모델 저장 및 호출

박상우·2023년 3월 15일
0

부스트캠프

목록 보기
11/54
post-thumbnail

모델 저장 및 호출

model.save()

  • 학습의 결과를 저장하기 위한 함수
  • 모델 형태와 파라미터를 저장
  • 모델 학습 중간 과정 저장을 통해 최선의 결과 모델 선택
# 모델의 파라미터 표시 
model.state_dict()
modle.load_state_dict()
# state_dict orderdict 타입 
# 일반적으로 동일한 아키텍쳐에서 파라미터만 호출해 모델을 loading 
  • 파이썬에 모델을 pickle로 저장하는 경우도 꽤나 많음

checkpoints

  • 학습의 중간 결과를 저장하여 최선의 결과를 선택
  • earlystopping 기법 등
  • loss와 metric 값을 지속적으로 확인 및 저장
  • 일반적으로 epoch, loss, metric을 저장
# epoch 실행 내부에
torch.save({
	'epoch': e,
    'model_state_dict' : model.state_dict(),
    'optimizer_state_dict' : optimizer.state_dict(),
    'loss' : epoch_loss,
    }, f"saved/checkpoint_model_{e}_{epoch_loss/len(dataloader)}_{epoch_acc/len(dataloader)}.pt")

요런 느낌으로 저장

Transfer learning

  • 다른 데이터셋으로 만든 모델을 현재 데이터에 적용
  • 일반적으로 대용량 데이터셋으로 만들어진 모델의 성능이 좋음
  • 현재의 DL에서는 가장 일반적인 학습 기법
  • Backbone Architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행

freezing

  • pretrained model 활용시 모델의 일부분을 frozen 시킴
for param in model.parameters():
	param.requires_grad = False
for param in model.원하는레이어.parameters():
	param.requires_grad = True
profile
세상아 덤벼라

0개의 댓글