class_docstr: Hand-tuned architecture for MNIST.
  Weirdness I've noticed so far with this architecture:
  - adding a linear layer after the mean-pool in features hurts
      RotatedMNIST-100 generalization severely.
class_docstr_tok: ["Hand-tuned","architecture","for","MNIST",".","Weirdness","I","'ve","noticed","so","far","with","this","architecture",":","-","adding","a","linear","layer","after","the","mean-pool","in","features","hurts","RotatedMNIST-100","generalization","severely","."]
code: def forward(self, x):
      x = self.conv1(x)
      x = F.relu(x)
      x = self.bn0(x)
  
      x = self.conv2(x)
      x = F.relu(x)
      x = self.bn1(x)
  
      x = self.conv3(x)
      x = F.relu(x)
      x = self.bn2(x)
  
      x = self.conv4(x)
      x = F.relu(x)
      x = self.bn3(x)
  
      x = self.avgpool(x)
      x = x.view(len(x), -1)
      return x
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import torchvision.models
label_desc: Use image node_id 2 for calling the MNIST_CNN obj's underlying member method code with example usage: obj.forward(x) and returns: x