class_docstr: The initial block is composed of two branches:
  1. a main branch which performs a regular convolution with stride 2;
  2. an extension branch which performs max-pooling.
  Doing both operations in parallel and concatenating their results
  allows for efficient downsampling and expansion. The main branch
  outputs 13 feature maps while the extension branch outputs 3, for a
  total of 16 feature maps after concatenation.
  
  Args:
      in_channels (int): the number of input channels.
      out_channels (int): the number output channels.
      kernel_size (int, optional): the kernel size of the filters used in
          the convolution layer. Default: 3.
      padding (int, optional): zero-padding added to both sides of the
          input. Default: 0.
      bias (bool, optional): Adds a learnable bias to the output if
          ``True``. Default: False.
      relu (bool, optional): When ``True`` ReLU is used as the activation
          function; otherwise, PReLU is used. Default: True.
class_docstr_tok: ["The","initial","block","is","composed","of","two","branches",":","1.","a","main","branch","which","performs","a","regular","convolution","with","stride","2",";","2.","an","extension","branch","which","performs","max-pooling",".","Doing","both","operations","in","parallel","and","concatenating","their","results","allows","for","efficient","downsampling","and","expansion",".","The","main","branch","outputs","13","feature","maps","while","the","extension","branch","outputs","3",",","for","a","total","of","16","feature","maps","after","concatenation",".","Args",":","in_channels","(","int",")",":","the","number","of","input","channels",".","out_channels","(","int",")",":","the","number","output","channels",".","kernel_size","(","int",",","optional",")",":","the","kernel","size","of","the","filters","used","in","the","convolution","layer",".","Default",":","3.","padding","(","int",",","optional",")",":","zero-padding","added","to","both","sides","of","the","input",".","Default",":","0.","bias","(","bool",",","optional",")",":","Adds","a","learnable","bias","to","the","output","if","``","True","``",".","Default",":","False",".","relu","(","bool",",","optional",")",":","When","``","True","``","ReLU","is","used","as","the","activation","function",";","otherwise",",","PReLU","is","used",".","Default",":","True","."]
code: def __init__(self, in_channels, out_channels, bias=False, relu=True):
      super(InitialBlock, self).__init__()
  
      if relu:
          activation = nn.ReLU
      else:
          activation = nn.PReLU
  
      self.main_branch = nn.Conv2D(
          in_channels,
          out_channels - 3,
          kernel_size=3,
          stride=2,
          padding=1,
          bias_attr=bias,
      )
  
      self.ext_branch = nn.MaxPool2D(3, stride=2, padding=1)
  
      self.batch_norm = layers.SyncBatchNorm(out_channels)
  
      self.out_activation = activation()
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg import utils
  from paddleseg.models import layers
  from paddleseg.cvlibs import manager, param_init
label_desc: Use image node_id 1 to create a new InitialBlock object from inherited base classes: nn with example: obj = InitialBlock(in_channels, out_channels, bias, relu)