class_docstr: The HarDBlock implementation
  
  Args:
      base_channels (int): The base channels.
      growth_rate (tuple|list): The growth rate.
      grmul (float): The channel multiplying factor.
      n_layers (tuple|list): The number of layers.
      keepBase (bool, optional): A bool value indicates whether concatenating the first layer. Default: False.
class_docstr_tok: ["The","HarDBlock","implementation","Args",":","base_channels","(","int",")",":","The","base","channels",".","growth_rate","(","tuple|list",")",":","The","growth","rate",".","grmul","(","float",")",":","The","channel","multiplying","factor",".","n_layers","(","tuple|list",")",":","The","number","of","layers",".","keepBase","(","bool",",","optional",")",":","A","bool","value","indicates","whether","concatenating","the","first","layer",".","Default",":","False","."]
code: def __init__(
      self, base_channels, growth_rate, grmul, n_layers, keepBase=False
  ):
      super().__init__()
      self.keepBase = keepBase
      self.links = []
      layers_ = []
      self.out_channels = 0
      for i in range(n_layers):
          outch, inch, link = get_link(
              i + 1, base_channels, growth_rate, grmul
          )
  
          self.links.append(link)
          layers_.append(
              layers.ConvBNReLU(
                  inch, outch, kernel_size=3, bias_attr=False
              )
          )
          if (i % 2 == 0) or (i == n_layers - 1):
              self.out_channels += outch
      self.layers = nn.LayerList(layers_)
  
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 HarDBlock object from inherited base classes: nn with example: obj = HarDBlock(base_channels, growth_rate, grmul, n_layers, keepBase)