C.W.K.
Stream
Lesson 08 of 08 · published

실전 — 같은 모델, 세 backend

~8 min · backend

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

track 전체를 스크립트 하나로

약속이 주장에서 *실행 가능한 것* 으로 바뀌는 지점이야. Code block 의 model 정의, compile/fit loop, save 호출 — 전부 100% backend-agnostic. TensorFlow·PyTorch·JAX 를 이름 대는 줄이 한 줄도 없어. engine 은 이 파일 *밖* 에서 KERAS_BACKEND env var 로 고르고, 같은 소스가 셋 다에서 거의 같은 정확도로 학습돼.

.keras 가 핵심 고리인 이유

마지막 model.save("my_model.keras") 가 payoff. .keras 포맷은 architecture·weight·optimizer state 를 backend-specific op 없이 저장해서, 속도 노리고 JAX 로 학습한 뒤 배포용으로 TensorFlow 로 재로드하는 데 재학습·변환이 필요 없어. 한 번 저장, 어디서나 로드.

세 번 돌릴 때 *실제로* 갈리는 건 직접 재볼 가치가 있는 것들 — epoch 당 wall time 과 peak memory. exercise 가 정확히 그걸 기록하라고 하는 이유야. backend 선택을 좌우할 유일한 benchmark 는 *네 model, 네 하드웨어* 거든.

Code

backend-agnostic 스크립트 하나: 빌드·학습·저장·python
import keras
from keras import layers

# This model definition is 100% backend-agnostic
def build_model():
    inputs = keras.Input(shape=(784,))
    x = layers.Dense(256, activation="relu")(inputs)
    x = layers.Dropout(0.3)(x)
    x = layers.Dense(128, activation="relu")(x)
    x = layers.Dropout(0.3)(x)
    outputs = layers.Dense(10, activation="softmax")(x)
    return keras.Model(inputs, outputs)

model = build_model()
model.compile(
    optimizer="adam",
    loss="sparse_categorical_crossentropy",
    metrics=["accuracy"],
)

# Train on any backend — same result
model.fit(x_train, y_train, epochs=10, validation_split=0.2)

# Save — cross-backend compatible!
model.save("my_model.keras")
# Load this on ANY backend — TF, PyTorch, JAX

External links

Exercise

같은 MNIST CNN 을 TF·PyTorch·JAX 다 돌려. 기록: epoch time, peak memory, final accuracy. 표 저장 — 새 프로젝트 backend 고를 때 다시 봐.

Progress

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

댓글 0

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

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