딥러닝에서 자주 쓰이는 Max Pooling과 Average Pooling은 입력 특징 맵의 공간적 크기(Height × Width)를 줄이는 데 쓰입니다.
하지만 이 연산들은 채널 수(Channels)는 건드리지 않습니다.
입력 텐서 크기: (Batch, Channels, Height, Width)
예: (1, 64, 32, 32)
여기서 MaxPooling2D(kernel_size=2, stride=2) 를 적용하면:
32 × 32
→ 16 × 16
(절반으로 줄어듦)출력 텐서 크기: (1, 64, 16, 16)
항목 | 영향 있음? | 설명 |
---|---|---|
Height / Width | 있음 | Pooling을 통해 줄어듦 |
Channels | 없음 | 그대로 유지됨 |
채널 수(Channels)를 바꾸는 건 Pooling이 아니라 Convolution(합성곱)입니다.
연산 종류 | 설명 |
---|---|
Conv2D | out_channels 설정값에 따라 채널 수 변경 |
1×1 Convolution | 공간 정보는 유지하면서 채널만 줄이거나 늘릴 때 자주 사용 |
Linear (FC) Layer | 완전 연결층으로 차원(채널 포함) 전환 가능 |
BatchNorm / ReLU 등 | 채널 수 유지, 값만 정규화하거나 비선형성 부여 |
1x1
커널로 연산하면, 공간적 영역은 그대로 두고 채널 수만 바꿀 수 있음Pooling → 공간(H/W)만 줄인다. 채널(C)은 그대로!
Convolution → 채널(C)을 바꾼다.