chainer.functions.
upsampling_2d
(x, indexes, ksize, stride=None,
pad=0, outsize=None, cover_all=True)[source]
プーリング・インデックスを用いたアップサンプリング。
この関数はプーリング・インデックスを用いたアップサンプリングされた画像を生成する。
Example
このupsampling_2d()
のためにプーリングインデックスを生成するmax_pooling_2d()
関数を実行する時chainer.config.use_cudnn
フラグをオフに必要があることを注意しなければなりません。 なぜなら、cuDNNがこの処理使われる場合に、indexes
が MaxPooling2D
オブジェクトで生成されることも格納されることも絶対にないからです。
>>> x = np.arange(1, 37).reshape(1, 1, 6, 6).astype('f')
>>> x = chainer.Variable(x)
>>> x.data
array([[[[ 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.]]]], dtype=float32)
これはマックスプーリング前の素のl x
データです。
>>> p = F.MaxPooling2D(2, 2)
>>> with chainer.using_config('use_cudnn', 'never'):
... pooled_x = p.apply((x,))[0]
>>> pooled_x.data
array([[[[ 8., 10., 12.],
[20., 22., 24.],
[32., 34., 36.]]]], dtype=float32)
これはマックスプリング後の出力です。 upsampling_2d()
はマックスプーリングオブジェクト p
に格納された indexes
配列を必要とします。
>>> upsampled_x = F.upsampling_2d(
... pooled_x, p.indexes, p.kh, p.sy, p.ph, x.shape[2:])
>>> upsampled_x.shape
(1, 1, 6, 6)
>>> upsampled_x.data
array([[[[ 0., 0., 0., 0., 0., 0.],
[ 0., 8., 0., 10., 0., 12.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 20., 0., 22., 0., 24.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 32., 0., 34., 0., 36.]]]], dtype=float32)
Parameters: |
|
---|---|
Returns: |
出力値 |
Return type: |