class_docstr: Reverse the PixelShuffle operation.
  
  Reverses the :class:`~torch.nn.PixelShuffle` operation by rearranging elements
  in a tensor of shape :math:`(*, C, H \times r, W \times r)` to a tensor of shape
  :math:`(*, C \times r^2, H, W)`, where r is a downscale factor.
  
  See the paper:
  `Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network`_
  by Shi et. al (2016) for more details.
  
  Args:
      downscale_factor (int): factor to decrease spatial resolution by
  
  Shape:
      - Input: :math:`(*, C_{in}, H_{in}, W_{in})`, where * is zero or more batch dimensions
      - Output: :math:`(*, C_{out}, H_{out}, W_{out})`, where
  
  .. math::
      C_{out} = C_{in} \times \text{downscale\_factor}^2
  
  .. math::
      H_{out} = H_{in} \div \text{downscale\_factor}
  
  .. math::
      W_{out} = W_{in} \div \text{downscale\_factor}
  
  Examples::
  
      >>> pixel_unshuffle = nn.PixelUnshuffle(3)
      >>> input = torch.randn(1, 1, 12, 12)
      >>> output = pixel_unshuffle(input)
      >>> print(output.size())
      torch.Size([1, 9, 4, 4])
  
  .. _Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network:
      https://arxiv.org/abs/1609.05158
class_docstr_tok: ["Reverse","the","PixelShuffle","operation",".","Reverses","the",":","class",":","`","~torch.nn.PixelShuffle","`","operation","by","rearranging","elements","in","a","tensor","of","shape",":","math",":","`","(","*",",","C",",","H","\\times","r",",","W","\\times","r",")","`","to","a","tensor","of","shape",":","math",":","`","(","*",",","C","\\times","r^2",",","H",",","W",")","`",",","where","r","is","a","downscale","factor",".","See","the","paper",":","`","Real-Time","Single","Image","and","Video","Super-Resolution","Using","an","Efficient","Sub-Pixel","Convolutional","Neural","Network","`","_","by","Shi","et",".","al","(","2016",")","for","more","details",".","Args",":","downscale_factor","(","int",")",":","factor","to","decrease","spatial","resolution","by","Shape",":","-","Input",":",":","math",":","`","(","*",",","C_","{","in","}",",","H_","{","in","}",",","W_","{","in","}",")","`",",","where","*","is","zero","or","more","batch","dimensions","-","Output",":",":","math",":","`","(","*",",","C_","{","out","}",",","H_","{","out","}",",","W_","{","out","}",")","`",",","where","..","math",":",":","C_","{","out","}","=","C_","{","in","}","\\times","\\text","{","downscale\\_factor","}","^2","..","math",":",":","H_","{","out","}","=","H_","{","in","}","\\div","\\text","{","downscale\\_factor","}","..","math",":",":","W_","{","out","}","=","W_","{","in","}","\\div","\\text","{","downscale\\_factor","}","Examples",":",":",">",">",">","pixel_unshuffle","=","nn.PixelUnshuffle","(","3",")",">",">",">","input","=","torch.randn","(","1",",","1",",","12",",","12",")",">",">",">","output","=","pixel_unshuffle","(","input",")",">",">",">","print","(","output.size","(",")",")","torch.Size","(","[","1",",","9",",","4",",","4","]",")","..","_Real-Time","Single","Image","and","Video","Super-Resolution","Using","an","Efficient","Sub-Pixel","Convolutional","Neural","Network",":","https",":","\/\/arxiv.org\/abs\/1609.05158"]
code: def __init__(self, downscale_factor: int) -> None:
      super().__init__()
      self.downscale_factor = downscale_factor
  
file_path: pytorch/torch/nn/modules/pixelshuffle.py
imports: from .module import Module
  from ..None import functional
  from torch import Tensor
label_desc: Use image node_id 1 to create a new PixelUnshuffle object from inherited base classes: Module with example: obj = PixelUnshuffle(downscale_factor)