반응형모델저장 및 불러오기
Introduction
부덕이 부하 부팡이는 오늘도 고민이다...
부팡 : 부덕아 매번 모델을 학습시키는건 시간도 많이들고 비효율적인 것 같아... 그리고 구글에서 나온 모델을 써보고 싶은데 이거 내 컴퓨터로 학습시킬 수 있는거 맞아..?
부덕🦆🐤 : 으휴... 너 맨날 그렇게 한거야? 지금 세상이 어떤 세상인데 다 방법이 있찌~
- 딥러닝 모델을 사용할 때 마다 학습을 새로 시킨다면 엄청난 cost가 발생한다
- 또한 남들에게 공유하거나 다른모델을 내가 사용할 때도 문제가 발생할 것이다
따라서, 학습한 모델을 저장할 필요성이 매우매우매우 있다
이러한 기능에 대해 AraBoza
모델을 저장하는 방법은 크게 2가지로 나뉜다 모델전체를 저장하거나 checkpoint를 저장한다
model.save & model.load
- 모델 학습의 결과를 저장하기 위한 함수
- 모델 형태(architecture)와 parameter를 동시에 저장한다
- 학습을 하면서 최선의 결과모델을 선택한다
state_dict : 모델의 파라미터를 표시
## 모델의 파라미터 저장 예제
torch.save(model.state_dict(), os.path.join(MODEL_PATH, 'model.pt'))
## 모델의 아키텍쳐와 파라미터 동시에 저장
torch.save(model, os.path.join(MODEL_PATH, 'model.pt'))
저장만 한다면 아무 소용이 없다 아래는 불러오는 법!
## 파라미터만 load(모델의 형태가 같아야 가능!)
new_model = exist_Model()
new_model.load_state_dict(torch.load(os.path.join(MODEL_PATH, "model.pt")))
## 모델의 아키텍쳐와 파라미터 모두 불러오기
model = torch.load(os.path.join(MODEL_PATH, "model.pt"))
checkpoints
- 학습의 중간 결과를 저장하여 최선의 결과를 선택
- loss와 metrci값을 지속적으로 확인 저장
- 일반적으로 epoch, loss, metrci을 함께 저장하여 확인
pretrained model Transfer learning
우리는 새로 모델을 만들시간이 없을 수도 있고 이미 기존에 너무 잘만들어진 모델을 가공해서 사용하고 싶은 경우가 많다
즉, 이미 학습된 모델을 가져와 나의 데이터에 맞게 finetuning하여 사용하고싶다!
Fine Tuning : pre-trained model을 이용해 새로운 모델을 만드는과정
Transfer learning : 전이 학습은 한 문제를 해결하고 다른 관련 문제에 적용하면서 얻은 지식을 저장하는 데 중점을 둔 기계 학습의 연구 문제입니다. 예를 들어, 자동차를 인식하는 법을 배우는 동안 얻은 지식은 트럭을 인식하려고 할 때 적용할 수 있습니다. (by wiki)
Transfer learning
- 다른 데이터셋으로 만든 모델을 현재 데이터에 적용
- 현재 딥러닝에서 가장 일반적인 학습 기법
- backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행
그러나 이런방식을 사용하려면 당연히 모델의 구조를 알아야 한다!
'⌨Programming > Pytorch' 카테고리의 다른 글
[pytorch] 모델제작(torch.nn.Module) (0) | 2022.01.26 |
---|---|
[pytorch]Pytorch란 ? (0) | 2022.01.25 |