class_docstr: The Decoder implementation of FC-HardDNet 70.
  
  Args:
      n_blocks (int): The number of blocks in the Encoder module.
      in_channels (int): The number of input channels.
      skip_connection_channels (tuple|list): The channels of shortcut layers in encoder.
      grmul (float): The channel multiplying factor in HarDBlock, which is m in the paper.
      gr (tuple|list): The growth rate in each HarDBlock, which is k in the paper.
      n_layers (tuple|list): The number of layers in each HarDBlock.
class_docstr_tok: ["The","Decoder","implementation","of","FC-HardDNet","70",".","Args",":","n_blocks","(","int",")",":","The","number","of","blocks","in","the","Encoder","module",".","in_channels","(","int",")",":","The","number","of","input","channels",".","skip_connection_channels","(","tuple|list",")",":","The","channels","of","shortcut","layers","in","encoder",".","grmul","(","float",")",":","The","channel","multiplying","factor","in","HarDBlock",",","which","is","m","in","the","paper",".","gr","(","tuple|list",")",":","The","growth","rate","in","each","HarDBlock",",","which","is","k","in","the","paper",".","n_layers","(","tuple|list",")",":","The","number","of","layers","in","each","HarDBlock","."]
code: def __init__(
      self,
      n_blocks,
      in_channels,
      skip_connection_channels,
      gr,
      grmul,
      n_layers,
      align_corners=False,
  ):
      super().__init__()
      prev_block_channels = in_channels
      self.n_blocks = n_blocks
      self.dense_blocks_up = nn.LayerList()
      self.conv1x1_up = nn.LayerList()
  
      for i in range(n_blocks - 1, -1, -1):
          cur_channels_count = (
              prev_block_channels + skip_connection_channels[i]
          )
          conv1x1 = layers.ConvBNReLU(
              cur_channels_count,
              cur_channels_count // 2,
              kernel_size=1,
              bias_attr=False,
          )
          blk = HarDBlock(
              base_channels=cur_channels_count // 2,
              growth_rate=gr[i],
              grmul=grmul,
              n_layers=n_layers[i],
          )
  
          self.conv1x1_up.append(conv1x1)
          self.dense_blocks_up.append(blk)
  
          prev_block_channels = blk.get_out_ch()
  
      self.out_channels = prev_block_channels
      self.align_corners = align_corners
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from paddleseg.utils import utils
label_desc: Use image node_id 1 to create a new Decoder object from inherited base classes: nn with example: obj = Decoder(n_blocks, in_channels, skip_connection_channels, gr, grmul, n_layers, align_corners)