데이터 분석가
article thumbnail
Published 2023. 9. 1. 00:01
CNN_데이터 증식 DeepLearning

이전 내용 확인

교재 홍보

 

케라스 창시자에게 배우는 딥러닝 개정 2판 - 예스24

단어 하나, 코드 한 줄 버릴 것이 없다!단 한 권의 딥러닝 책을 선택한다면 바로 이 책이다!케라스 창시자이자 구글 딥러닝 연구원인 저자는 ‘인공 지능의 민주화’를 강조한다. 이 책 역시 많

www.yes24.com

 

1. 사전훈련 모델 가져오기

  • ImageNet 데이터셋을 통해 사전훈련된 VGG16 모델의 합성곱 기반 층을 가져옵니다. 입력 이미지가 한 번만 합성곱 기반층을 통과하고 그 출력을 넘파이로 저장했던 이전과 달리 모든 입력 이미지가 매번 합성곱 기반층을 통과할 것이기 때문에 사전에 학습된 표현이 수정되지 않도록 합성곱 기반 층을 동결해 줘야 합니다.
  • 합성곱 기반 층을 동결하면 층이나 모델의 훈련 가능한 가중치 개수가 0이 됩니다.
from tensorflow.python.util.traceback_utils import include_frame

conv_base  = keras.applications.vgg16.VGG16(
    weights="imagenet",
    include_top=False)
conv_base.trainable=False # 합성곱 기반층을 동결
  • 합성곱 기반 층을 동결하면 층이나 모델의 훈련 가능한 가중치 개수가 0이 됩니다.
conv_base.trainable=True
print(len(conv_base.trainable_weights)) # 동결 전 가중치 개수
conv_base.trainable=False
print(len(conv_base.trainable_weights)) # 동결 후 가중치 개수

 

2. 모델 생성

  • 데이터 증식 층과 밀집분류기를 동결된 합성곱 기반층에 추가하여 모델을 생성합니다.
# 데이터 증식층
data_augmentation = keras.Sequential(
    [
        layers.RandomFlip('horizontal'),
        layers.RandomRotation(0.1),
        layers.RandomZoom(0.2),
    ]
)

# 입력층
inputs = keras.Input(shape=(180, 180, 3))
x = data_augmentation(inputs)
x = keras.applications.vgg16.preprocess_input(x) # 입력값의 스케일 조정

# 은닉층 = 합성곱 층 연결 (vgg16)
x = conv_base(x)

# 출력층
x = layers.Flatten()(x)
x = layers.Dense(256)(x)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(1, activation="sigmoid")(x)
model = keras.Model(inputs, outputs)
model.compile(loss="binary_crossentropy",
              optimizer="rmsprop",
              metrics=["accuracy"])

 

3. 모델 훈련

  • 모델을 훈련해줍니다.
callbacks = [
    keras.callbacks.ModelCheckpoint(
        filepath="feature_extraction_with_data_augmentation.keras",
        save_best_only=True,
        monitor="val_loss")
]
history = model.fit(
    train_dataset,
    epochs=20,
    validation_data=validation_dataset,
    callbacks=callbacks)

 

4. 손실과 정확도 그래프

  • vis함수를 이용해 그래프를 그려줍니다.
  • 검증 정확도가 98%로 이전보다 모델의 성능이 향상됐고, 5에포크만에 과대적합이 일어나던 현상도 완화되었습니다.
vis(history)

'DeepLearning' 카테고리의 다른 글

회귀 모델_Boston 주택가격  (0) 2023.09.01
CNN_사전훈련된 모델  (0) 2023.08.31
CNN_데이터 증식  (0) 2023.08.30
CNN_강아지 vs 고양이  (0) 2023.08.30
CNN_MNIST  (0) 2023.08.29
profile

데이터 분석가

@이꾹꾹

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!