본문 바로가기
C.W.K.
Stream
Lesson 08 of 08 · published

실전 — 전체 학습 파이프라인

~8 min · training

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

트랙에서 배운 요소를 하나로 조립해 보자

이제 모델 구성, 컴파일, 옵티마이저, 손실 함수, 평가지표, fit(), 콜백이 하나의 학습 스크립트에서 어떻게 맞물리는지 볼 차례야. 아래 코드를 위에서 아래로 읽으며 각 줄이 맡은 역할을 설명할 수 있어야 해. 문법을 외우는 것보다 전체 흐름과 각 선택의 책임을 이해하는 게 훨씬 오래 가는 실력이야.

이 순서에는 이유가 있어

먼저 모델을 만들어야 나머지 설정이 붙을 대상이 생겨. 두 Dropout 레이어는 과적합이 드러난 뒤 급히 덧붙이는 장식이 아니라 처음부터 포함한 규제 장치야. 이어서 compile()이 Adam, 손실 함수, 정확도를 하나의 학습 규칙으로 묶어. 콜백 목록에는 불필요한 에포크를 막는 EarlyStopping, 가장 좋은 상태를 보존하는 ModelCheckpoint, 정체 구간에서 학습률을 낮추는 ReduceLROnPlateau가 들어가. 마지막으로 fit()이 전체 루프를 실행하고 과정을 담은 history를 반환해.

구성 → 컴파일 → 콜백 → 학습 순서를 익혀 두면 대부분의 지도 학습 스크립트를 같은 뼈대에서 출발시킬 수 있어. 레이어를 문제에 맞는 구조로, 손실 함수를 과제에 맞는 것으로, 데이터를 실제 자료로 바꿔 끼우면 돼. CIFAR-10으로 확장할 때는 keras.datasets.cifar10.load_data(), 데이터 증강 파이프라인, 마지막의 model.save('cifar10.keras')를 더하면 된다. 재사용 가능한 뼈대를 알아보는 능력이 바로 구조적으로 모델을 만드는 힘이야.

Code

전체 파이프라인: 구성 → 컴파일 → 콜백 → 학습·python
import keras
from keras import layers

# Build model
model = keras.Sequential([
    keras.Input(shape=(784,)),
    layers.Dense(256, activation="relu"),
    layers.Dropout(0.3),
    layers.Dense(128, activation="relu"),
    layers.Dropout(0.2),
    layers.Dense(10, activation="softmax"),
])

# Compile
model.compile(
    optimizer=keras.optimizers.Adam(1e-3),
    loss="sparse_categorical_crossentropy",
    metrics=["accuracy"],
)

# Callbacks
callbacks = [
    keras.callbacks.EarlyStopping(
        monitor="val_loss", patience=5,
        restore_best_weights=True,
    ),
    keras.callbacks.ModelCheckpoint(
        "best.keras", save_best_only=True,
    ),
    keras.callbacks.ReduceLROnPlateau(
        factor=0.5, patience=3,
    ),
]

# Train
history = model.fit(
    x_train, y_train,
    epochs=50,
    batch_size=32,
    validation_split=0.2,
    callbacks=callbacks,
)

External links

Exercise

CIFAR-10에 이 파이프라인 전체를 구현해 봐. 20에포크 안에 시험 정확도 70% 이상을 달성하고, 스크립트를 train_cifar10.py로 저장해 이후 이미지 분류 프로젝트의 출발점으로 삼아.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.