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

정규화와 텐서 모양 바꾸기

~9 min · layers

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

정규화는 일부러 학습을 어렵게 만들어

용량이 큰 모델은 학습 데이터를 그대로 외우기 쉬워. 정규화 레이어는 통제된 제약을 넣어 단순 암기보다 다른 데이터에도 통하는 패턴을 배우게 해.

  • Dropout(0.3)은 학습할 때만 뉴런의 30%를 무작위로 0으로 만들고 평가 때는 자동으로 꺼져. 보통 0.2~0.5에서 시작해 검증 곡선으로 조정해.
  • SpatialDropout1DSpatialDropout2D는 낱개 값 대신 특징 지도 전체를 꺼. 이웃 픽셀의 상관이 높은 합성곱 레이어에서 일반 Dropout보다 효과적일 수 있어.

Reshape 계열은 값이 아니라 바라보는 모양을 바꿔

  • Flatten()은 배치 축 뒤의 모든 차원을 1차원으로 접어 합성곱 묶음과 Dense를 이어.
  • Reshape(target_shape)은 원소 개수를 유지하며 원하는 모양으로 바꿔.
  • Permute(dims)는 channels-first와 channels-last처럼 축 순서를 재배열해.

병렬 경로는 병합 레이어에서 다시 만나

Concatenate는 한 축을 따라 특징을 이어 붙여 각 경로의 정보를 보존하고, Add는 같은 모양의 텐서를 원소별로 더해 잔차 연결을 만들어. MultiplyAverage도 이름 그대로 계산해. 병합 레이어는 분기된 Functional 모델의 이음새야.

Code

병렬 경로를 합치는 병합 레이어·python
# Merge two branches
layers.Concatenate()([branch_a, branch_b])  # Concatenate along axis
layers.Add()([branch_a, branch_b])          # Element-wise addition
layers.Multiply()([branch_a, branch_b])     # Element-wise multiplication
layers.Average()([branch_a, branch_b])      # Element-wise average

External links

Exercise

과적합한 CNN의 Flatten 뒤에 Dropout(0.5)을 추가해 학습·검증 곡선을 비교해. 이어서 Dense 경로 두 개를 Add와 Concatenate로 각각 합쳐 출력 모양의 차이를 확인해.
Hint
Add 출력은 각 경로와 같은 모양이고 Concatenate는 합치는 축의 폭이 두 경로의 합이야.

Progress

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

댓글 0

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

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