LoginSignup
2
2

More than 3 years have passed since last update.

機械学習で出会う関数【1】numpy.pad (機械学習の学習 #4)

Last updated at Posted at 2019-09-09

0. はじめに

python素人(=当然numpy素人)が機械学習を学習する際に出会った関数で、理解に苦労したものを載せています。今回は「numpy.pad」。
以降numpyはnpと記載しています。

1. 登場箇所

CNNの畳み込みのところ。
畳み込む際にサイズが小さくならないように、画像の周りを数値(通常は0)で埋める。(=パディング)

2. 動作

行列の前後に値を足す。

3. 形式

np.pad(array,range,mode(,そのほか)
引数名 説明 補足
array N次元の行列
range 各次元における、前後のパディング範囲
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]])

考え方

np.pad.png

例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についてまとめたいと思います(自分が忘れそうなので…)。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2