The first convolutional block is followed by a sub-pixel convolutional (upscaling) layer, which was introduced in [1]}. In the upscaling layer, the activation maps produced by the sixth conv layer are assembled into a single activation map. Throughout the first convolutional block, the spatial size of the low-resolution input is preserved, i.e. the activation maps of the sixth conv layer have \(h_I \times w_I\)  components, where \(h_I\)  and \(w_I\)  are the height and the width of the input image \(I\) . In order to increase the input \(r\)  times on both axes, the output of the sixth conv layer must be a tensor of \(h_I \times w_I \times r^2\)  components. The activation map resulting from the sub-pixel convolutional layer is a matrix of \((h_I \cdot r) \times (w_I \cdot r)\)  components. For super-resolution on two axes, the pixels are rearranged as shown in Figure REF . In a similar fashion, we can increase the input \(r\)  times on one axis. In this case, the output of the sixth conv layer must be a tensor of \(h_I \times w_I \times r\)  components. This time, the activation map resulting from the sub-pixel convolutional layer can be either a matrix of \((h_I \cdot r) \times w_I\)  components or a matrix of \(h_I \times (w_I \cdot r)\)  components, depending on the direction we aim to increase the resolution. For super-resolution on one axis, the pixels are rearranged as shown in Figure REF . To our knowledge, we are the first to propose a sub-pixel convolutional (upscaling) layer for super-resolution in one direction.
