Pre-trained model 사용하기
Date:
pretrained model 사용하기
Transfer learning
- 다른 데이터셋으로 만든 모델을 현재 데이터에 적용해보는 것
- 일반적으로 대용량 데이터셋으로 만들어진 모델의 성능이 좋음
- 현재의 DL에서는 가장 일반적인 학습기법
- backbone architecture가 잘 학습된 모델에서 일부분만(Freezing) 변경하여 학습을 수행하여 현재 데이터에서도 성능을 끌어올림
- 새로운 데이터셋으로 새로운 결과를 얻기 위해서 기존 학습데이터는 그대로 두고, 새로운 Layer를 추가/학습하여 원하는 결과를 얻을 수 있음
📷CV pretrained model
📞NLP pretrained model
- hugging Face
- GPT-3
Freezing
- Pretrained model를 활용시 모델의 일부분을 Frozen 시켜서 학습이 필요한 부분만 학습시킴
- 요즘은 freezing하는 layer를 이동/변경하며 training 시키는 stepping froezing도 사용하는 경우가 있음
Model 사용
import torchvision.models as models
로 models package를 불러옴models
에 있는 pretrained model를 찾아 model를 저장해주면됨- 새로운 output이 필요하면 목적에 맞게 새로운 layer를 추가해주면됨
- 마지막으로 freezing으로 원하는 layer을 사용할 데이터셋으로 학습시킴
- freezing은 모든 layer를 freezing 한 후 학습이 필요한 layer만 열어서(
param.requires_grad = True
) 학습시킴
📰code
class MyNewNet(nn.Module):
def __init__(self):
super(MyNewNet, self).__init__()
self.vgg19 = models.vgg19(pretrained=True) # models에서 pretrained된 모델들을 가져올 수 있음
self.linear_layers = nn.Linear(1000, 1) # 우리가 사용할 dataset에 맞게 마지막 Layer를 추가해줌
def forward(self, x):
x = self.vgg19(x)
return self.linear_layers(x)
for param in my_model.parameters(): #모두 Freezing 시킨 후
param.requires_grad = False
for param in my_model.linear_layers.parameters(): #필요한 부분만 열어줌
param.requires_grad = True
📌reference
- boostcourse AI tech
- purnasai gudikandula
💡 수정 필요한 내용은 댓글이나 메일로 알려주시면 감사하겠습니다!💡
댓글