class_docstr: A CNN architecture shown to be a good baseline for a CIFAR-10 benchmark.
  
  Parameters
  ----------
  input_channel : int
  n_outputs : int
  dropout_rate : float
  top_bn : bool
  
  Methods
  -------
  forward
    forward pass in PyTorch
code: def __init__(
      self,
      input_channel=3,
      n_outputs=10,
      dropout_rate=0.25,
      top_bn=False,
  ):
      self.dropout_rate = dropout_rate
      self.top_bn = top_bn
      super(CNN, self).__init__()
      self.c1 = nn.Conv2d(
          input_channel, 128, kernel_size=3, stride=1, padding=1
      )
      self.c2 = nn.Conv2d(128, 128, kernel_size=3, stride=1, padding=1)
      self.c3 = nn.Conv2d(128, 128, kernel_size=3, stride=1, padding=1)
      self.c4 = nn.Conv2d(128, 256, kernel_size=3, stride=1, padding=1)
      self.c5 = nn.Conv2d(256, 256, kernel_size=3, stride=1, padding=1)
      self.c6 = nn.Conv2d(256, 256, kernel_size=3, stride=1, padding=1)
      self.c7 = nn.Conv2d(256, 512, kernel_size=3, stride=1, padding=0)
      self.c8 = nn.Conv2d(512, 256, kernel_size=3, stride=1, padding=0)
      self.c9 = nn.Conv2d(256, 128, kernel_size=3, stride=1, padding=0)
      self.l_c1 = nn.Linear(128, n_outputs)
      self.bn1 = nn.BatchNorm2d(128)
      self.bn2 = nn.BatchNorm2d(128)
      self.bn3 = nn.BatchNorm2d(128)
      self.bn4 = nn.BatchNorm2d(256)
      self.bn5 = nn.BatchNorm2d(256)
      self.bn6 = nn.BatchNorm2d(256)
      self.bn7 = nn.BatchNorm2d(512)
      self.bn8 = nn.BatchNorm2d(256)
      self.bn9 = nn.BatchNorm2d(128)
  
imports: import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new CNN object from inherited base classes: nn with example: obj = CNN(input_channel, n_outputs, dropout_rate, top_bn)