Search code examples
pythonkerasdeep-learningkeras-layer

How does UpSampling2D layer work in Keras?


How does the UpSampling2D layer work in Keras? According to official documentation:

Repeats the rows and columns of the data by size[0] and size[1] respectively.

So, if size=(2, 2), how does it repeat the rows and columns of the input matrix? Could you please explain the procedure with an example?


Solution

  • If

    Repeats the rows and columns of the data by size[0] and size[1] respectively.

    does not help, then maybe an example would be helpful:

    >>> import numpy as np
    >>> from keras.layers import UpSampling2D
    >>> from keras.models import Sequential
    >>> model = Sequential()
    >>> model.add(UpSampling2D(size=(2,2), input_shape=(3,3,1)))
    
    >>> x = np.arange(9).reshape(1,3,3,1)
    >>> x[0,:,:,0]  # this is what x looks like initially
    array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]])
    >>> y = model.predict(x)
    >>> y[0,:,:,0] # this is what it looks like after upsampling
    array([[0., 0., 1., 1., 2., 2.],
           [0., 0., 1., 1., 2., 2.],
           [3., 3., 4., 4., 5., 5.],
           [3., 3., 4., 4., 5., 5.],
           [6., 6., 7., 7., 8., 8.],
           [6., 6., 7., 7., 8., 8.]], dtype=float32)