code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size,
      stride=1,
      padding=0,
      bias=True,
      norm_type=None,
      relu=False,
  ):
      super().__init__()
  
      self.conv = nn.Conv2d(
          in_channels,
          out_channels,
          kernel_size,
          stride,
          padding,
          bias=bias,
      )
      self.norm_type = norm_type
  
      if self.norm_type:
          if self.norm_type == "bn":
              self.bn = nn.BatchNorm2d(out_channels)
          elif self.norm_type == "gn":
              self.bn = nn.GroupNorm(out_channels // 16, out_channels)
          elif self.norm_type == "in":
              self.bn = nn.InstanceNorm2d(out_channels)
          else:
              raise ValueError("Wrong norm_type")
      else:
          self.bn = None
  
      if relu:
          self.relu = nn.ReLU(inplace=True)
      else:
          self.relu = None
  
      self.reset_parameters()
  
imports: from torch.nn import init
  import sys
  import torch
  import torch
  import torchvision
  from torch import nn
  from datetime import datetime
  from fate.ml.nn.model_zoo.agg_layer.fedpass._passport_block import ConvPassportBlock
  from fate.ml.nn.model_zoo.hetero_nn_model import HeteroNNModelGuest, HeteroNNModelHost
  from fate.ml.nn.hetero.hetero_nn import HeteroNNTrainerGuest, HeteroNNTrainerHost, TrainingArguments, FedPassArgument
label_desc: Use image node_id 1 to create a new ConvBlock object from inherited base classes: nn with example: obj = ConvBlock(in_channels, out_channels, kernel_size, stride, padding, bias, norm_type, relu)