code: def __init__(
      self,
      name,
      encode_dim,
      out_channels,
      use_bias,
      norm_layer,
      act,
      act_attr,
      conv_block_dropout,
      conv_block_num,
      conv_block_dilation,
      out_conv_act,
      out_conv_act_attr,
  ):
      super(SingleDecoder, self).__init__()
      conv_blocks = []
      for i in range(conv_block_num):
          conv_blocks.append(
              ResBlock(
                  name="{}_conv_block_{}".format(name, i),
                  channels=encode_dim * 4,
                  norm_layer=norm_layer,
                  use_dropout=conv_block_dropout,
                  use_dilation=conv_block_dilation,
                  use_bias=use_bias,
              )
          )
      self._conv_blocks = nn.Sequential(*conv_blocks)
      self._up1 = SNConvTranspose(
          name=name + "_up1",
          in_channels=encode_dim * 4,
          out_channels=encode_dim * 4,
          kernel_size=3,
          stride=2,
          padding=1,
          output_padding=1,
          use_bias=use_bias,
          norm_layer=norm_layer,
          act=act,
          act_attr=act_attr,
      )
      self._up2 = SNConvTranspose(
          name=name + "_up2",
          in_channels=encode_dim * 8,
          out_channels=encode_dim * 2,
          kernel_size=3,
          stride=2,
          padding=1,
          output_padding=1,
          use_bias=use_bias,
          norm_layer=norm_layer,
          act=act,
          act_attr=act_attr,
      )
      self._up3 = SNConvTranspose(
          name=name + "_up3",
          in_channels=encode_dim * 4,
          out_channels=encode_dim,
          kernel_size=3,
          stride=2,
          padding=1,
          output_padding=1,
          use_bias=use_bias,
          norm_layer=norm_layer,
          act=act,
          act_attr=act_attr,
      )
      self._pad2d = paddle.nn.Pad2D([1, 1, 1, 1], mode="replicate")
      self._out_conv = SNConv(
          name=name + "_out_conv",
          in_channels=encode_dim,
          out_channels=out_channels,
          kernel_size=3,
          use_bias=use_bias,
          norm_layer=None,
          act=out_conv_act,
          act_attr=out_conv_act_attr,
      )
  
file_path: PaddleOCR/StyleText/arch/decoder.py
imports: import paddle
  import paddle.nn
  from arch.base_module import SNConv, SNConvTranspose, ResBlock
label_desc: Use image node_id 1 to create a new SingleDecoder object from inherited base classes: nn with example: obj = SingleDecoder(name, encode_dim, out_channels, use_bias, norm_layer, act, act_attr, conv_block_dropout, conv_block_num, conv_block_dilation, out_conv_act, out_conv_act_attr)