class_docstr: Applies a 2D Transpose convolution (aka as Deconvolution) over an input.
  
  Args:
      opts: Command line arguments.
      in_channels: :math:`C_{in}` from an expected input of size
        :math:`(N, C_{in}, H_{in}, W_{in})`.
      out_channels: :math:`C_{out}` from an expected output of size
        :math:`(N, C_{out}, H_{out}, W_{out})`.
      kernel_size: Kernel size for convolution.
      stride: Stride for convolution. Default: 1.
      dilation: Dilation rate for convolution. Default: 1.
      groups: Number of groups in convolution. Default: 1.
      bias: Use bias. Default: ``False``.
      padding_mode: Padding mode. Default: ``zeros``.
      use_norm: Use normalization layer after convolution. Default: ``True``.
      use_act: Use activation layer after convolution (or convolution and normalization).
      Default: ``True``.
      padding: Padding will be done on both sides of each dimension in the input.
      output_padding: Additional padding on the output tensor.
      auto_padding: Compute padding automatically. Default: ``True``.
  
  Shape:
      - Input: :math:`(N, C_{in}, H_{in}, W_{in})`.
      - Output: :math:`(N, C_{out}, H_{out}, W_{out})`.
class_docstr_tok: ["Applies","a","2D","Transpose","convolution","(","aka","as","Deconvolution",")","over","an","input",".","Args",":","opts",":","Command","line","arguments",".","in_channels",":",":","math",":","`","C_","{","in","}","`","from","an","expected","input","of","size",":","math",":","`","(","N",",","C_","{","in","}",",","H_","{","in","}",",","W_","{","in","}",")","`",".","out_channels",":",":","math",":","`","C_","{","out","}","`","from","an","expected","output","of","size",":","math",":","`","(","N",",","C_","{","out","}",",","H_","{","out","}",",","W_","{","out","}",")","`",".","kernel_size",":","Kernel","size","for","convolution",".","stride",":","Stride","for","convolution",".","Default",":","1.","dilation",":","Dilation","rate","for","convolution",".","Default",":","1.","groups",":","Number","of","groups","in","convolution",".","Default",":","1.","bias",":","Use","bias",".","Default",":","``","False","``",".","padding_mode",":","Padding","mode",".","Default",":","``","zeros","``",".","use_norm",":","Use","normalization","layer","after","convolution",".","Default",":","``","True","``",".","use_act",":","Use","activation","layer","after","convolution","(","or","convolution","and","normalization",")",".","Default",":","``","True","``",".","padding",":","Padding","will","be","done","on","both","sides","of","each","dimension","in","the","input",".","output_padding",":","Additional","padding","on","the","output","tensor",".","auto_padding",":","Compute","padding","automatically",".","Default",":","``","True","``",".","Shape",":","-","Input",":",":","math",":","`","(","N",",","C_","{","in","}",",","H_","{","in","}",",","W_","{","in","}",")","`",".","-","Output",":",":","math",":","`","(","N",",","C_","{","out","}",",","H_","{","out","}",",","W_","{","out","}",")","`","."]
code: def __repr__(self):
      repr_str = self.block[0].__repr__()
      repr_str = repr_str[:-1]
  
      if self.norm_name is not None:
          repr_str += ", normalization={}".format(self.norm_name)
  
      if self.act_name is not None:
          repr_str += ", activation={}".format(self.act_name)
      repr_str += ")"
      return repr_str
  
imports: import argparse
  from typing import Optional, Tuple, Type, Union
  from torch import Tensor, nn
  from cvnets.layers.activation import build_activation_layer
  from cvnets.layers.base_layer import BaseLayer
  from cvnets.layers.normalization.layer_norm import LayerNorm, LayerNorm2D_NCHW
  from cvnets.layers.normalization_layers import get_normalization_layer
  from utils import logger
label_desc: Use image node_id 3 for calling the TransposeConvLayer2d obj's underlying member method code with example usage: obj.__repr__() and returns: repr_str