pytorch transfer

naem1023·2021년 8월 20일
0

pytorch

목록 보기
6/11

model 자체 코딩보다는 모델을 어떻게 다룰 것인지.

Transfer learning

  • 다른 데이터셋으로 만든 모델(pre-trained model)을 현재 데이터에 적용
    • 텅 빈 모델로부터 개발하지 않아서 효율적
    • 대용량 데이터셋으로 만들어진 모델을 사용시, 성능은 더 좋다.
  • 가장 일반적인 학습 방법
  • 일부분만 변경하여 학습 수행
  • CNN: torchvision
  • NLP: HuggingFace가 사실상 표준

e.g., vgg로 binary classification을 하고 싶다면, torchvision에서 pre-trained vgg를 load하고 vgg 끝에 linaer layer를 추가한다.

source task, target task

선택과제에서 제시된 과제였다. transfer learning의 대표적인 예시였다.
즉, source task에서 학습된 지식을 target task로 전이하는 것이 목적이다.

  • 목적: fashion-mnist 데이터를 학습, 분류
  • 해결방법:
    • source task로 imagenet, mnist_resnet을 설정한다.
    • source task의 모델이 pretrained 돼있다면 target task의 모델로 바로 쓰자.
    • source task의 모델에 변경이 필요하다면, 일부 레이어를 추가, 변경한다. 변경된 레이어들만 weight, bias를 초기화하고 재학습을 한다.
    • target task에서는 이러한 모델을 받아서 다시 레이어를 변경, 추가해야된다면 source task에서 했던 방식대로 변경, weight&bias init, 재학습을 한다.

Frozen

parameter update, backpropagation을 전체에 대해서 적용하지 않고, pre-trained model의 일부 레이어에서만 적용한다.
즉, pre-trained된 parameters 일부를 유지하면서 나의 데이터셋에 맞게 튜닝하는 것이 목적.

Stepping frozen

학습 step별로 frozen하는 layer를 바꿔준다.

pth, pt

pytorch 모델의 확장며들이다. 둘 다 사용 가능하지만, pth는 이미 python에서 사용중인 확장자라고 한다. 따라서 pt를 권장한다.

nn.BCEWithLogitsLoss()

Binary Classification을 할 때, Loss를 계산해주는 criterion으로 사용한다. 이러면 모델의 마지막에 sigmoid가 없어도 sigmoid를 달아준다.

profile
https://github.com/naem1023

0개의 댓글