반응형
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)

반응형
'Deep Learning > Tensorflow' 카테고리의 다른 글
| Tensorflow - call backs 만들기 ( 가장 좋은 모델을 자동저장, 로그도 자동저장) (0) | 2022.06.16 |
|---|---|
| Tensorflow - Transfer Learning (0) | 2022.06.16 |
| Tensorflow - numpy array로 되어있는 데이터를 증강하는 방법 (0) | 2022.06.16 |
| Tensorflow - 파일을 Traning과 Test 디렉토리로 나눠서 저장하는 방법 (0) | 2022.06.15 |
| Tensorflow - ImageDataGenerator를 이용해서 데이터 증강하는 법 (0) | 2022.06.15 |