개발학습일지

[AI] 딥러닝 Transfer Learning _ Fine tuning 본문

AI/Deep Learning

[AI] 딥러닝 Transfer Learning _ Fine tuning

처카푸 2024. 4. 23. 17:45

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

 

파일 튜닝이란?

트랜스퍼 러닝을 한 다음에 수행하는 방법이며 섬세한 튜닝이다

트랜스퍼러닝을 한 후에 조금 더 개선이 가능한지  추가로 해보는 방법이다

학습된 모델 그 상태에서 추가로 학습시키는데,

좋은 모델의 일부분을 학습 가능한 데이터로 변경 후 학습 시킨다

 

전 포스팅 [AI] 딥러닝 Transfer Learning으로 사진분류하는 인공지능 만들기(https://msdev-st.tistory.com/68)

에서 만든 인공지능 model 에 이어서 파일 튜닝하겠다

 

 

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

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

model.summary()
>>> # 제일 아래 부분
    ====================================================
    Total params: 4879681 (18.61 MB)
    Trainable params: 2621697 (10.00 MB)
    Non-trainable params: 2257984 (8.61 MB)
    _____________________________________________________
    
# 1. base_model을 먼저 모두 학습 가능하도록 만들어 놓는다
base_model.trainable= True

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

# 3. 몇번째 레이어까지 학습이 안되도록 할 것인지 결정한다
#    101 번째 레이어 부터 학습이 가능토록 하자
for layer in base_model.layers[ 0 : 100+1 ] :
  layer.trainable = False
base_model.summary()
>>>
    ======================================
    Total params: 2257984 (8.61 MB)
    Trainable params: 1861440 (7.10 MB)
    Non-trainable params: 396544 (1.51 MB)
    _______________________________________

 

컴파일 후 학습 평가 하기

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)