chainer.functions.maxout(x, pool_size, axis=1)[source]

マックスアウト活性化関数。

 

入力テンソル xを受け入れ、 axis で設定した次元にreshapeし、 (はじめは M * pool_sizeサイズとすると)、2次元の (M, pool_size)になり、 axis 次元に添って最大値をとる。.

 

Parameters:
  • x (Variable or numpy.ndarray or cupy.ndarray) –入力値。 A-n 次元float配列 (n
    axis)  。一般的に、最初の次元はがミニバッチの次元数となるとされる。他の次元は、結合された次元のものとして扱われる。
  • pool_size (int) – プーリングそうのダウンサンプリングで用いられるサイズ。
  • axis (int) – axis 。この次元数に再配置される。axis の次元のサイズはM * pool_sizeでなければならない。
Returns:

出力値。出力の形は axis の次元がM * pool_size から Mへ変換されることを除いて x と同様。

Return type:

Variable

See also

Maxout

 

Example

 

一般的に、x は線形層もしくは畳み込み層の出力です。下記は、我々が線形リンクと組み合わせてmaxout() を使用する際の例です。

 


>>>
in_size, out_size, pool_size = 10, 10, 10
>>> bias = np.arange(out_size * pool_size).astype('f')
>>> l = L.Linear(in_size, out_size * pool_size, initial_bias=bias)
>>> x = np.zeros((1, in_size), 'f') # prepare data
>>> x = l(x)
>>> y = F.maxout(x, pool_size)
>>> x.shape (1, 100)
>>> y.shape (1, 10)
>>> x.reshape((out_size, pool_size)).data
array([[ 0., 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., 31., 32., 33., 34., 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44., 45., 46., 47., 48., 49.],
[ 50., 51., 52., 53., 54., 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64., 65., 66., 67., 68., 69.],
[ 70., 71., 72., 73., 74., 75., 76., 77., 78., 79.],
[ 80., 81., 82., 83., 84., 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94., 95., 96., 97., 98., 99.]], dtype=float32)
>>> y.data
array([[ 9., 19., 29., 39., 49., 59., 69., 79., 89., 99.]], dtype=float32)