본문 바로가기
인공지능/Deep Learning

[Deep Learning] Transfer Learning Fine tuning

by coding_su 2023. 1. 2.

📝트랜스퍼러닝 후 파인튜닝하기

개와 고양이 사진을 분류하는 딥러닝 Transfer Learning 해보기(https://coding-jisu.tistory.com/169)에서

추가적으로 파인튜닝을 해봤다

파인 튜닝? 섬세한 튜닝
이 방법은 꼭 트랜스퍼 러닝을 한 다음에 수행하는 방법이다
위의 트랜스퍼러닝을 한 후에 조금 더 개선이 가능한지 해보는 방법으로서
위에서 학습한 모델을 가지고 그 상태에서 추가로 학습을 시키는 것이다
단, 좋은 모델의 일부분을 내 데이터로 학습 가능하도록 변경한 후에 학습시킨다

 

일단 베이스 모델의 전체 레이어를 다시 학습 가능토록 바꿔주고 베이스 모델의 전체 레이어 수를 확인한다

레이어 갯수를 확인했으니 몇번째 레이어까지 학습이 안되도록 할 것인지 결정해 준다

# 1. base_model을 먼저 모두 학습 가능하도록 만들어 놓는다
base_model.trainable= True

# 2. base_model의 레이어 수를 확인한다
len(base_model.layers)

# 3. 몇번째 레이어까지 frozen 시킬지 결정
end_layer = 100

# 4. base_model의 첫번째 레이어부터 end_layer 까지는 학습이 되지 않도록 frozen 시킨다
for layer in base_model.layers[ 0 : end_layer+1 ] :
  layer.trainable = False

 

이번엔 새로운 옵티마이저로 컴파일 후 학습 / 평가 해보았는데

from keras.optimizers import Adam

model.compile(Adam(0.0001),'binary_crossentropy',['accuracy'] )

epoch_history2 = model.fit( train_generator, epochs= 5, validation_data= (test_generator) )

model.evaluate(test_generator)

 

RMSprop의 accuracy: 0.9700, Adam의 accuracy: 0.9630으로 비슷하지만 RMSprop이 조금 더 높았다

댓글