본문 바로가기
Python/DeepLearning

Fine Tuning

by 하니__ 2024. 4. 19.

 

파인 튜닝은 트랜스퍼 러닝 후에 하는 방법이며 
트랜스퍼 러닝 후 조금 더 개선이 가능한지 해보는 방법 
학습된 모델 그 상태에서 추가로 학습을 시키되 
좋은 모델의 일부분을 우리 데이터로 학습 가능토록 변경한 후에 학습시키는 방법

 

 

model.summary()

 

 

현재 학습 가능한 데이터는 우리가 추가한 데이터들 뿐

 

1. 베이스 모델 전체 레이어를 학습 가능 상태로 변경

 

 

base_model.trainable = True
model.summary()

 

이전의 False로 막아둔걸 True로 돌려준다

훈련 가능 파라미터의 데이터갯수가 거의 전체인걸 확인 할 수 있다

 

 

2. 베이스 모델의 전체 레이어 수를 확인

 

len(base_model.layers)
154

 

베이스 모델의 레이어 갯수는 총 154개

 

 

3. 레이어수를 확인했으니 몇번째 레이어까지 학습이 안되도록 할것인지 결정
 그러면 나머지 레이어는 학습이 가능 

레이어 100부터 학습이 가능토록 해보자
 
for layer  in base_model.layers[ 0 : 100 + 1 ] :
  layer.trainable = False
base_model.summary()

 

컴파일

 

model.compile(RMSprop(0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])

 

튜닝 모델 학습

 

model.fit(train_generator,
          epochs = 5,
          validation_data= val_generator)

이전의 베이스모델을 훈련을 막아뒀을때의 경우에선

밸리데이션 정확도가 95%정도 였던거에 비하면

오버핏팅이 진행되어 90%도 안되는 모습을 보여준다