Python/DeepLearning
Fine Tuning
하니__
2024. 4. 19. 11:31
파인 튜닝은 트랜스퍼 러닝 후에 하는 방법이며
트랜스퍼 러닝 후 조금 더 개선이 가능한지 해보는 방법
학습된 모델 그 상태에서 추가로 학습을 시키되
좋은 모델의 일부분을 우리 데이터로 학습 가능토록 변경한 후에 학습시키는 방법
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%도 안되는 모습을 보여준다