code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size=3,
      stride=1,
      dilation=1,
      groups=1,
      bias=False,
      has_shuffle=False,
      use_bn=True,
      act_func="relu",
      dropout_rate=0,
      ops_order="weight_bn_act",
  ):
      self.kernel_size = kernel_size
      self.stride = stride
      self.dilation = dilation
      self.groups = groups
      self.bias = bias
      self.has_shuffle = has_shuffle
  
      super(ConvLayer, self).__init__(
          in_channels,
          out_channels,
          use_bn,
          act_func,
          dropout_rate,
          ops_order,
      )
  
imports: from collections import OrderedDict
  from nni.retiarii.serializer import basic_unit
  import torch
  import nni.retiarii.nn.pytorch
  from putils import get_same_padding, build_activation
label_desc: Use image node_id 1 to create a new ConvLayer object from inherited base classes: Base2DLayer with example: obj = ConvLayer(in_channels, out_channels, kernel_size, stride, dilation, groups, bias, has_shuffle, use_bn, act_func, dropout_rate, ops_order)