code: def DnConv(
      input_tensor,
      output_dim,
      kernel_size=(5, 5, 5),
      stride_size=(2, 2, 2),
      dim=3,
      padding="SAME",
      initializer_std=0.02,
      activation=None,
      name=None,
      dropout=0,
      batch_norm=False,
      backend="tensorflow",
  ):
      """TODO: Provide different options for intializers, and resolve inconsistencies bewteen 2D and 3D."""
  
      if name is None:
          name = "conv" + str(dim) + "d"
  
      if backend == "tensorflow":
          padding = padding.upper()
  
          if dim == 2:
              conv = conv2d(
                  input_tensor,
                  output_dim,
                  kernel_size=kernel_size,
                  stride_size=stride_size,
                  padding=padding,
                  initializer_std=initializer_std,
                  name=name,
              )
          elif dim == 3:
              conv = conv3d(
                  input_tensor,
                  output_dim,
                  kernel_size=kernel_size,
                  stride_size=stride_size,
                  padding=padding,
                  initializer_std=initializer_std,
                  name=name,
              )
  
      elif backend == "keras":
          if dim == 2:
              conv = Conv2D(
                  output_dim,
                  kernel_size=kernel_size,
                  strides=stride_size,
                  padding=padding,
                  name=name,
              )(input_tensor)
          elif dim == 3:
              conv = Conv3D(
                  output_dim,
                  kernel_size=kernel_size,
                  strides=stride_size,
                  padding=padding,
                  name=name,
              )(input_tensor)
  
          if activation is not None:
              conv = Activation("sigmoid")(conv)
  
      if batch_norm:
          conv = DnBatchNormalization(conv, backend=backend)
  
      if dropout > 0:
          conv = DnDropout(conv, dropout, backend=backend)
  
      return conv
  
file_path: DeepNeuro/deepneuro/models/dn_ops.py
imports: import tensorflow
  from keras.layers import UpSampling2D, UpSampling3D, Conv3D, MaxPooling3D, Conv2D, MaxPooling2D, Activation, BatchNormalization, Dropout, ZeroPadding2D, ZeroPadding3D
  from deepneuro.models.ops import pixel_norm_2d, pixel_norm_3d, conv2d, conv3d, deconv2d, deconv3d, upscale2d
label_desc: Use image node_id 5 for calling a global function with example usage: DnConv(input_tensor, output_dim, kernel_size, stride_size, dim, padding, initializer_std, activation, name, dropout, batch_norm, backend) and returns: conv