code: def __init__(self):
      super(AliceNet2, self).__init__()
      self.conv1 = torch.nn.Conv2d(1, 16, kernel_size=5, padding=0)
      self.conv2 = torch.nn.Conv2d(16, 16, kernel_size=5, padding=0)
      self.fc1 = torch.nn.Linear(16 * 4 * 4, 100)
      self.fc2 = torch.nn.Linear(100, 10)
      self.batchnorm1 = torch.nn.BatchNorm2d(16)
      self.batchnorm2 = torch.nn.BatchNorm2d(16)
      self.batchnorm3 = torch.nn.BatchNorm1d(100)
  
imports: import copy
  import itertools
  import logging
  import unittest
  import crypten
  import crypten.communicator
  import torch
  import torch.nn.functional
  from crypten.common.rng import generate_random_ring_element
  from crypten.common.tensor_types import is_float_tensor
  from crypten.config import cfg
  from crypten.encoder import FixedPointEncoder
  from test.multiprocess_test_case import get_random_linear, get_random_test_tensor, MultiProcessTestCase, onehot
label_desc: Use image node_id 1 to create a new AliceNet2 object from inherited base classes: torch.nn with example: obj = AliceNet2()