1. 입력 데이터를 전개한다.
2. 행별 최댓값을 구한다.
3. 적절한 모양으로 성형한다.
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= 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)
#성형(3)
out = out.reshape(N, out_h, out_w, C),transpose(0,3,1,2)
return out
'머신 러닝 및 파이썬 > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
Ch.7 합성곱 신경망(CNN)/ 7.4 합성곱 계층 구현하기 (0) | 2020.03.14 |
---|---|
Ch.7 합성곱 신경망(CNN)/ 7.2 합성곱 계층 (0) | 2020.03.12 |
Ch.6 학습 관련 기술들/ 6.5 적절한 하이퍼파라미터 값 찾기 (0) | 2020.03.12 |
Ch.6 학습 관련 기술들/ 6.4.3 드롭아웃 (0) | 2020.03.11 |
Ch.6 학습 관련 기술들/ 6.4.1 오버피팅 (0) | 2020.03.11 |