모델 훈련 시 예외상황을 방지하거나 최선의 결과를 보존하기 위해 중간중간 혹은 종료된 뒤 학습 결과를 저장 및 로드할 필요가 있다.
학습의 결과를 저장하기 위한 함수
# 모델의 파라미터 저장 및 로드
import torch
import os
torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model.pt"))
new_model = TheModelClass()
new_model.load_state_dict(torch.load(os.path.join(MODEL_PATH, "model.pt)))
# 모델의 architecture와 함께 저장 및 로드
torch.save(model, os.path.join(MODEL_PATH, "model.pt"))
model = torch.load(os.path.join(MODEL_PATH, "model.pt"))
학습의 중간 결과를 저장하여 최선의 결과를 선택
torch.save({
'epoch': epoch,
'model_state_dcit': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
'loss': loss,
}, f"{checkpoint_path}".pt)
checkpoint = torch.load(f"{checkpoint_path}")
model.load_state_dict(checkpoint['model_state_dict])
optimizer.load_state_dict(checkpoint['optimizer_state_dict])
epoch = checkpoint['epoch']
loss = checkpoint['loss']
문제를 해결하기 위해 모델을 학습할 때 정제된 충분한 데이터를 얻기는 힘드므로 지식 전이를 통해 적은 데이터로도 좋은 모델을 만드는 방법론이다.
이때 레이어 frozen 및 pretrain weight를 활용하는 것은 사용하려는 데이터와 학습되어있는 모델에서 사용한 대용량 데이터가 유사할 경우 학습된 모델을 사용해 현재 데이터에 적용할 수 있을 것 같다.