Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

2주차 3차시

Padding과 Stride,
Max Pooling과 Average Pooling
3차시

학습목표
합성곱 레이어의 효율을 올리기 위한 방법들, Padding과
Stride, Pooling에 대해 설명할 수 있다.

학습내용
1 Padding과 Stride

2 Pooling

3 NHWC Format
01
Padding과 Stride
출력 이미지 크기

[ Kernel 크기 ] [ 입력 이미지 크기 ]
 WK : 가로  W : 가로
 HK : 세로  H : 세로

<input>
1 0 0 0 0 <kernel> <output>
0 1 0 0 0 1 0 0 3 0 0
𝑾𝑾 − 𝑾𝑾 0 +0 𝟏𝟏 ×0 1𝑯𝑯 0− 𝑯𝑯𝒌𝒌0 +3 𝟏𝟏0
0 0 1 𝒌𝒌
0 0 0 1 0 0 0 1 0 0 3
0 0 0 0 1
Padding

출력 이미지의 크기를 작게 만들지 않으려면


어떻게 해야 할까요?
Padding
Zero Padding
<input>

0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 0
Padding

<input>

0 0 0 0 0 0 0 <output>
0 1 0 0 0 0 0 <kernel>
0 0 1 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1
0 0 0 0 0 1 0
0 0 0 0 0 0 0
Padding을 사용하면 기존 크기를 보존하거나 줄어들도록 할 수 있음
출력 이미지 크기

[ Kernel 크기 ] [ 입력 이미지 크기 ]
 WK : 가로  W : 가로
 HK : 세로  H : 세로

[ Padding ]
 WP : 좌우
 HP : 위아래
출력 이미지 크기
Same Padding
<input>
0 0 0 0 0 0 0 <output>
0 1 0 0 0 0 0 <kernel> 2 0 0 0 0
0 0 1 0 0 0 0 1 0 0 0 3 0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 3 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0 3 0
0 0 0 0 0 1 0 0 0 0 0 2
0 0 Valid
0 Padding
0 0 0 0

𝑾𝑾 + 𝟐𝟐𝑾𝑾𝑷𝑷 − 𝑾𝑾𝒌𝒌 + 𝟏𝟏 × 𝑯𝑯 + 𝟐𝟐𝑯𝑯𝑷𝑷 − 𝑯𝑯𝒌𝒌 + 𝟏𝟏


Stride

<input>

1 0 0 0 0 <kernel> <output>
0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1
0 0 0 0 1

패치를 이동하면서 Convolution 연산을 실행하는 것이 효율적


Stride

<input>

1 0 0 0 0 <kernel> <output>
0 1 0 0 0 1 0 0 3 0
0 0 1 0 0 0 1 0 0 3
0 0 0 1 0 0 0 1
0 0 0 0 1
출력 이미지 크기

<input>
0 0 0 0 0 0 0
0 1 0 0 0 0 0 <kernel> <output>
0 0 1 0 0 0 0 1 0 0 2 0 0
0 0 0 1 0 0 0 0 1 0 0 3 0
0 0 0 0 1 0 0 0 0 1 0 0 2
0 0 0 0 0 1 0
0 0 0 0 0 0 0
출력 이미지 크기

[ Kernel 크기 ] [ 입력 이미지 크기 ]
 WK : 가로  W : 가로
 HK : 세로  H : 세로

[ Padding ] [ Stride ]
 WP : 좌우  Ws : 수평방향
 HP : 위아래  Hs : 수직방향
출력 이미지 크기

<input>
0 0 0 0 0 0 0
0 1 0 0 0 0 0 <kernel> <output>
0 0 1 0 0 0 0 1 0 0 2 0 0
0 0 0 1 0 0 0 0 1 0 0 3 0
0 0 0 0 1 0 0 0 0 1 0 0 2
0 0 0 0 0 1 0
0 0 0 0 0 0 0 𝑾𝑾 + 𝟐𝟐𝟐𝟐𝑷𝑷 − 𝑾𝑾𝒌𝒌 𝑯𝑯 + 𝟐𝟐𝟐𝟐𝑷𝑷 − 𝑯𝑯𝒌𝒌
+ 𝟏𝟏 × + 𝟏𝟏
𝑾𝑾𝑺𝑺 𝑯𝑯𝑺𝑺
출력 이미지 크기

<input>
0 0 0 0 0 0 0
0 1 0 0 0 0 0 <kernel> <output>
0 0 1 0 0 0 0 1 0 0 2 0 0
0 0 0 1 0 0 0 0 1 0 0 3 0
0 0 0 0 1 0 0 0 0 1 0 0 2
0 0 0 0 0 1 0
0 0 0 0 0 0 0 𝟓𝟓 + 𝟐𝟐 − 𝟑𝟑 𝟓𝟓 + 𝟐𝟐 − 𝟑𝟑
+ 𝟏𝟏 × + 𝟏𝟏 = 𝟑𝟑 𝑿𝑿 𝟑𝟑
𝟐𝟐 𝟐𝟐
02
Pooling
Max pooling
Max pooling

<input>

1 0 0 0 <output>
0 0 0 1 1 1
0 0 0 0 0 1
0 0 0 1

Kernel 영역 내 가장 큰 값을 선택하므로
정보의 손실 발생
Average Pooling

<input>

1 0 0 0 <output>
0 0 0 1 1/4 1/4

0 0 0 0 0 1/4
0 0 0 1
03
NHWC Format
Channel Shape

입력 이미지나 첫 번째 레이어는 조정 필요

최적화 등으로 중간 레이어 구조를 변경해야 하는


경우도 있음

Kernel 크기, Channel 개수 등을 조절하지 않으면


오류 발생
Channel Shape
4
4
Shape = (?, ?, ?)

<3 channels, 128 by 128>


Shape = (128, 128, 3)
(?, ?, ?, ?)
Padding = 1, Stride = 1
With the default NHWC Format

[ batch, height, width, channels ]


Channel Shape
4
4
Shape = (127, 127, 5)

<3 channels, 128 by 128>


Shape = (128, 128, 3)
(4, 4, 3, 5)
Padding = 1, Stride = 1
Channel Shape

[출처] Screen recorded from https://cs231n.github.io/convolutional-networks/

You might also like