기계 학습에서 만나는 함수【1】numpy.pad(기계 학습의 학습 #4)

0. 소개



파이썬 아마추어 (= 당연히 numpy 아마추어)가 기계 학습을 학습 할 때 만난 함수로 이해에 어려움을 쏟고 있습니다. 이번에는 "numpy.pad".
이후 numpy는 np라고 기재하고 있습니다.

1. 등장 개소



CNN의 컨벌루션 부분.
컨볼 루션 할 때 크기가 작아지지 않도록 이미지 주위를 숫자 (일반적으로 0)로 채 웁니다. (=패딩)

2. 동작



행렬의 전후에 값을 더한다.

3. 형식


np.pad(array,range,mode(,そのほか)


인수 이름
설명
보충


array
N차원 행렬

범위
각 차원에서 전후의 패딩 범위

mode
임베디드 방식
'constraint'(상수)가 자주 사용


보충



기본값은 패딩 값 = 0입니다.

4. 참조



5. 예



실시예 1


a = [[1, 2], [3, 4]]
np.pad(a, [(1, 2), (3, 4)], 'constant')
array([[0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 2, 0, 0, 0, 0],
       [0, 0, 0, 3, 4, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0]])

사고방식





예 2: im2col


# N: データ数, C: チャンネル数, H: 各画像の幅, W: 各画像の高さ
N, C, H, W = input_data.shape
# 画像データの上下左右に0を1つパディング
img = np.pad(input_data, [(0,0), (0,0), (1, 1), (1, 1)], 'constant')

6. 사족(다음 번 예고?)



여기까지 썼습니다만, 결국 im2col의 이해 그 자체가 어려웠다고.
「제로 붙는다」 읽고, 스스로 그림을 걸어 보고, 상당히 고생했기 때문에, im2col에 대해 정리하고 싶습니다(자신이 잊을 것 같으니까…).

좋은 웹페이지 즐겨찾기