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

Keras 전처리 레이어

~8 min · data

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

모델 구조가 기계 학습 시스템의 30%라면 데이터 파이프라인은 나머지 70%를 차지해. Keras 3는 이미지 증강, 텍스트 벡터화, 정규화 같은 전처리를 모델 그래프 안에서 실행하고 저장된 모델과 함께 옮길 수 있게 해. 여기에 tf.data, torch.DataLoader, grain을 연결하는 방법도 배운다.

전처리를 스크립트가 아니라 레이어로

운영 환경에서 자주 생기는 문제는 학습과 서빙의 전처리가 미묘하게 달라지는 현상이야. 두 코드 경로가 분리되면 같은 입력을 다르게 바꾸는 학습·서빙 불일치가 생기지. Keras 3는 Rescaling, Normalization, RandomFlip, RandomRotation, TextVectorization, IntegerLookup을 모두 조합 가능한 레이어로 제공해. 모델 안에 포함하면 저장된 .keras 파일이 동일한 변환을 운영 환경까지 함께 가져가.

상태가 있는 레이어는 먼저 adapt()

NormalizationTextVectorization처럼 상태가 있는 레이어는 사용 전에 데이터를 관찰해야 해. .adapt(data)를 한 번 호출하면 평균·분산이나 어휘를 학습해 가중치로 저장하고, 이후 추론에서도 같은 변환을 결정론적으로 적용해. 고정된 1/255 배율만 사용하는 Rescaling처럼 상태가 없는 레이어에는 이 단계가 필요 없어. 아래 코드는 두 종류를 보여 주고 크기 조정 레이어를 모델 안에 넣어.

전처리를 둘 위치 정하기

전처리는 모델 안이나 tf.data 파이프라인에 둘 수 있어. 모델 안에 두면 이식과 배포가 안전하고, 데이터 파이프라인에 두면 CPU가 GPU 학습과 병렬로 처리해 더 빠를 수 있어. 정규화와 어휘처럼 배포에도 반드시 필요한 학습된 변환은 모델 안에 두고, 무작위 증강처럼 학습에만 쓰며 다시 만들기 쉬운 작업은 속도와 불일치 위험을 따져 데이터 파이프라인에 둘 수 있어.

Code

상태가 있는 레이어는 adapt() 후 모델에 포함하기·python
# Normalization: learns mean/variance from data
normalizer = layers.Normalization()
normalizer.adapt(training_data)  # Must see data first

# Rescaling: simple linear transform
rescaler = layers.Rescaling(1.0 / 255.0)

# TextVectorization: text → integer tokens
vectorizer = layers.TextVectorization(
    max_tokens=20000,
    output_sequence_length=200,
)
vectorizer.adapt(text_data)

# Put inside the model
model = keras.Sequential([
    rescaler,                                    # Preprocessing
    layers.Conv2D(32, 3, activation="relu"),  # Model layers
    layers.GlobalAveragePooling2D(),
    layers.Dense(10, activation="softmax"),
])

External links

Exercise

Rescaling과 RandomFlip을 첫 두 레이어로 둔 모델을 작성해 학습하고 저장한 뒤 다시 불러와. [0,255] 범위의 원시 이미지로 predict()를 실행해 크기 조정이 적용되고 정상적인 출력이 나오는지 확인해.

Progress

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

댓글 0

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

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