본문 바로가기

Deep Learning/Tensorflow

Tensorflow - Fine Tuning

반응형
Fine Tuning

 

 

 

 

Fine Tuning은

 

Transfer Learning을 한 상태에서

 

base_model과 head_model을 하나로 합친 model의

 

base_model 특정 layer를 지정해서


Frozen을 해제해주고 해제한 layer를  추가 학습시켜 정확도를 높이는 방법

 

Fine Tuning 은 꼭 !!! Transfer Learning을 한 상태에서 수행하는 방법이다.

 

 

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

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

# 지정한 특정 레이어까지 Frozen하기
# 3. 몇번째 레이어/가지 학습이 안되도록 할 지 결정해 준다.
end_layer = 100

# 4. base_model의 첫번째 레이어부터 우리가 정한 레이어까지 학습이 안되도록 설정해준다.
for layer in base_model.layers[ 0 : end_layer] :
  layer.trainable = False
model.summary()

# 컴파일
model.compile(tf.keras.optimizers.Adam(0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])

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

# 검증
model.evaluate(validation_generator)

 

반응형