code: def __init__(
      self,
      in_size,
      out_size,
      is_batchnorm,
      n=2,
      ks=3,
      stride=1,
      padding=1,
  ):
      super(unetConv2_SELU, self).__init__()
      self.n = n
      self.ks = ks
      self.stride = stride
      self.padding = padding
      s = stride
      p = padding
      if is_batchnorm:
          for i in range(1, n + 1):
              conv = nn.Sequential(
                  nn.Conv2d(in_size, out_size, ks, s, p),
                  nn.BatchNorm2d(out_size),
                  nn.SELU(inplace=True),
              )
              setattr(self, "conv%d" % i, conv)
              in_size = out_size
  
      else:
          for i in range(1, n + 1):
              conv = nn.Sequential(
                  nn.Conv2d(in_size, out_size, ks, s, p),
                  nn.SELU(inplace=True),
              )
              setattr(self, "conv%d" % i, conv)
              in_size = out_size
  
      # initialise the blocks
      for m in self.children():
          init_weights(m, init_type="kaiming")
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn import init
label_desc: Use image node_id 1 to create a new unetConv2_SELU object from inherited base classes: nn with example: obj = unetConv2_SELU(in_size, out_size, is_batchnorm, n, ks, stride, padding)