Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

말랑코딩

7-5. 풀링 계층 구현하기 본문

딥러닝

7-5. 풀링 계층 구현하기

코랑이 2022. 1. 5. 16:08

풀링 계층 구현하기

 

입력데이터에 풀링 적용 영역을 전개(ex. 2x2)

- 위 그림에서는 2x2 풀링 영역을 예로 듦.

 

 

 

 

입력데이터에 풀링 적용 예

위 그림에서,

-입력데이터(3,4,4)를 2x2의 풀링영역으로 전개 -> (4,12)

-전개된 데이터의 각 행에서 최대값 추출 -> (1,12)

-기존 채널에 맞게 reshape -> (3,4)

 

 

 

풀링 계층 파이썬(python) 구현

class Pooling:
    def __init__(self, pool_h, pool_w, stride=1, pad=0):
        self.pool_h = pool_h
        self.pool_w = pool_w
        self.stride = self.stride
        self.pad = pad
        
    def forward(self, x):
        N, C, H, W = x.shape
        out_h = int(1 + (H - self.pool_h) / self.stride)
        out_w = int(1 + (H - self.pool_w) / self.stride)
        
        # 전개 (1)
        col = im2col(x, self.pool_h, self.pool_w, self.stride, self.pad)
        col = col.reshape(-1, self.pool_h*self.pool_w)
        
        # 최댓값 (2)
        out = np.max(col, axis=1)  # axis=0 : 열, axis=1 : 행
        
        # 성형 (3)
        out = out.reshape(N, out_h, out_w, C).transpose(0, 3, 1, 2)
        
        return out

- 입력데이터를 전개

- 행별 최댓값 구함

- 적절한 모양으로 성형(reshape)

 

 

 

요약

- 풀링 계층은 입력데이터를 풀링영역으로 전개하고, 전개된 각 행에서 최대값을 추출하고, 이를 채널에 맞게 reshape 하는 과정임.

 

 

 

*복습 차원에서 다시

풀링 계층 : 완전연결 계층(affine)으로 이루어진 네트워크가 아닌, CNN으로 이루어진 네트워크에서는 앞쪽 단에서

affine-ReLU 대신 Conv-ReLU-(Pooling) 으로 이루어져있는데 이를 구성하는 계층 중 하나.

Comments