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

레이어를 추가하는 법

~8 min · sequential

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

먼저 익힐 네 가지 레이어

Sequential 모델이 무엇을 표현할 수 있는지는 쌓은 레이어가 결정해. 일상적인 작업의 대부분은 다음 네 가지로 시작할 수 있어.

  • Dense(units, activation)는 모든 입력을 모든 출력에 연결하는 완전 연결 레이어야. units가 출력 개수를 정해.
  • Dropout(rate)은 학습할 때만 입력 일부를 0으로 만들어 과적합을 줄여. 추론 때는 자동으로 꺼지므로 예측 모델에서 따로 제거하지 않아도 돼.
  • Flatten()은 28×28 영상처럼 여러 차원인 입력을 길이 784의 벡터로 펼쳐. 벡터를 받는 Dense 앞에서 모양을 이어주는 역할이야.
  • Activation(fn)은 비선형 함수를 적용해. 보통은 별도 레이어보다 Dense(64, activation="relu")처럼 앞 레이어의 인자로 넣어.

첫 레이어에는 입력 모양을 알려줘야 해

두 번째 레이어부터는 앞 레이어의 출력으로 입력 모양을 자동 추론할 수 있어. 첫 레이어에는 그 앞이 없으므로 keras.Input(shape=(...))을 목록의 첫 항목으로 두는 것이 가장 명확해. 입력 모양을 모르면 Keras는 가중치를 만들 수 없어 모델이 아직 빌드되지 않은 상태로 남아. 입력을 미리 선언하면 데이터가 들어오기 전에도 모델이 완성되고 summary()도 온전한 구조를 보여줘.

Code

텐서 모양을 설명한 4층 모델·python
model = keras.Sequential([
    keras.Input(shape=(28, 28, 1)),  # 28x28 grayscale images
    layers.Flatten(),                       # → (784,)
    layers.Dense(128, activation="relu"),   # → (128,)
    layers.Dropout(0.2),                   # Regularization
    layers.Dense(10, activation="softmax"), # → (10,) probabilities
])

External links

Exercise

같은 MNIST 분류기를 생성자 목록 방식과 model.add() 방식으로 각각 작성해. 두 모델의 model.summary()가 같은 구조를 보여주는지 확인해.

Progress

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

댓글 0

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

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