작성
·
526
0
안녕하세요!
raccoon dataset pretrainig할때 궁금한게 있습니다.
처음에 50번 학습하고 이후 model.layers[i].trainable = True로 바꿔준 후 50번 더 학습을 하는데요.
처음부터 모든 레이어를 trainable하게 바꿔주지않고 저렇게 학습하는 이유가 궁금합니다!
답변 1
0
안녕하십니까,
일반적으로 CNN의 Pretrained 모델을 기반으로 다른 데이터 세트를 전이 학습(Transfer learning)할 때 이 방식을 적용하곤 합니다. 가령 imagenet으로 pretrained된 Resnet 모델의 Weight값으로 새로운 데이터 세트를 학습할 때 이 pretrained된 weight값으로 Feature map 생성 layer들의 weight값을 초기화 하고 해당 layer들을 학습하지 않습니다. 그리고 feature map layer에 연결된 classification layer들만 학습을 합니다.(이렇게 처음 50회를 학습합니다)
이렇게 classification layer를 학습 한 뒤에는 이제 feature map과 classification layer를 모두 포함한 전체 layer를 다시 50회 학습합니다. 그래서 model.layers[i].trainable = True로 변경합니다.
보통 이런식으로 학습하면 처음부터 feature map layer를 random값으로 시작하지 않고 imagenet pretrained된 weight값을 이용할 수 있으므로 선호되는 방식입니다.
감사합니다.