개발공부

Fine Tuning을 하기 위한 코드와 설명 본문

Python/Deep Learning

Fine Tuning을 하기 위한 코드와 설명

mscha 2022. 6. 16. 17:55

Fine Tuning

Fine Tuning이란 Transfer Learning을 이용해 학습한 상태에서 (즉, fit을 한 상태에서)

베이스 모델의 Frozen Layer 범위에 변화를 주거나 컴파일에 변화를 주어 추가로 학습을 시키는 것이다.

 

예제

모델은 이미 생성 되어 있고, 학습을 한 상태이다. 

# 1. 먼저 베이스 모델의 전체 레이러를 학습 가능토록 바꿔준다.
base_model.trainable = True

# 2. 베이스모델의 전체 레이어 수를 확인한다
len(base_model.layers)

# 3. 몇번째 레이어까지, 학습이 안되도록 할지 결정해준다.
end_layer = 100

# 4. 베이스 모델의 첫번째 레이어부터 우리가 정한 레이어까지는 학습이 안되도록 설정해준다.
for layer in base_model.layers [ : end_layer]:
    layer.trainable = False
    
model.compile(tf.keras.optimizers.Adam(0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])

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

 

이때의 결과는 더 좋아질 수도 더 안좋아질 수 도 있다.