code: def __init__(
      self,
      in_f: int,
      out_f: int,
      kernel_size: int = 3,
      stride: int = 1,
      use_batch_norm: bool = True,
      activation: str = "leaky",
  ):
      super().__init__()
      self.conv = nn.Conv2d(
          in_f,
          out_f,
          stride=stride,
          kernel_size=kernel_size,
          padding=kernel_size // 2,
          bias=False if use_batch_norm else True,
      )
      self.batch_norm = (
          nn.BatchNorm2d(out_f) if use_batch_norm else noop
      )
      self.leaky_relu = (
          nn.LeakyReLU(0.1, inplace=True)
          if activation == "leaky"
          else noop
      )
  
imports: from typing import Union, List, Tuple, Optional
  import torch
  import torch.nn
  import numpy
  from .utils import transform_prediction
label_desc: Use image node_id 1 to create a new ConvLayer object from inherited base classes: nn with example: obj = ConvLayer(in_f, out_f, kernel_size, stride, use_batch_norm, activation)