chainer.functions.upsampling_2d

chainer.functions.upsampling_2d(x, indexes, ksize, stride=None, pad=0, outsize=None, cover_all=True)[source]

Upsampling using pooling indices.

This function produces an upsampled image using pooling indices.

Example

It should be noted that you need to turn off chainer.config.use_cudnn flag when you perform max_pooling_2d() function which will make a pooling indicies for this upsampling_2d(). It is because indexes is never created and stored in the MaxPooling2D object when cuDNN is used for it.

>>> 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)

This is the original x before max pooling.

>>> 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)

This is the output of the max pooling operation. upsampling_2d() needs indexes array stored in the max pooling object p.

>>> 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:
  • x (Variable) – Input variable.
  • indexes (ndarray or ndarray) – Index array that was used to calculate x with MaxPooling2D.
  • ksize (int or (int, int)) – ksize attribute of MaxPooling2D object that is used to calculate x
  • stride (int or (int, int)) – stride attribute of MaxPooling2D object that is used to calculate x
  • pad (int or (int, int)) – pad attribute of MaxPooling2D object that is used to calculate x
  • outsize ((int, int)) – Expected output size (height, width).
  • cover_all (bool) – Whether cover_all is used in the MaxPooling2D object or not.
Returns:

Output variable.

Return type:

Variable