코딩하는 애옹😸

[PyTorch] 모델 불러오기 본문

부스트캠프 AI Tech 3기/Study

[PyTorch] 모델 불러오기

DevYe 2022. 1. 26. 19:57
728x90
반응형

model.save()

  • 학습의 결과 저장
  • 모델 형태(architecture) 와 parameter 저장
## state_dict : 모델의 parameter 표시
for param_tensor in model.state_dict():
  print(param_tensor,"\t",model.state_dict()[param_tensor].size())
​
## torch.save : 모델의 parameter 저장
torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model.pt"))
​
## 같은 모델의 형태에서 parameter load
new_model = TheModelClass()
new_model.load_state_dict(torch.load(os.path.join(MODEL_PATH,"model.pt")))
​
### model의 architecture와 함께 저장
torch.save(model,os.path.join(MODEL_PATH, "model.pt"))
### model의 architecture와 함께 load
model = torch.load(os.path.join(MODEL_PATH, "model.pt"))

Checkpoints

  • 학습의 중간 결과 저장
  • Earlystopping 기법 사용시 이전 학습의 결과물 저장

Transfer learning

  • 다른 데이터셋으로 만든 모델을 현재 데이터에 적용

Freezing

  • Pretrained model을 활용할 때, model의 일부분을 frozen시키고 다른 부분은 새로 학습시킴
from torch import nn
from torchvision import models
​
## vgg에 vgg16 할당
vgg = models.vgg16(pretrained=True).to(device)
​
class MyNewNet(nn.Module):   
    def __init__(self):
        super(MyNewNet, self).__init__()
        self.vgg19 = models.vgg19(pretrained=True)
        self.linear_layers = nn.Linear(1000, 1) ## 모델에 마지막 Linear Layer 추가
​
​
    # Defining the forward pass    
    def forward(self, x):
        x = self.vgg19(x)        
        return self.linear_layers(x)
        ## forward에서도 vgg19끝나고 마지막에 Linear layer## 마지막 Layer 제외하고 Frozen      
for param in my_model.parameters():
    param.requires_grad = False
for param in my_model.linear_layers.parameters():
    param.requires_grad = True
반응형

'부스트캠프 AI Tech 3기 > Study' 카테고리의 다른 글

[PyTorch] Troubleshooting  (0) 2022.01.27
[PyTorch] Multi-GPU  (0) 2022.01.27
[PyTorch] AutoGrad  (0) 2022.01.25
[PyTorch] Basics  (0) 2022.01.25
[예제] BackPropagation  (0) 2022.01.23