code: def __init__(self, model_config: AttrDict, model_name: str):
      super().__init__()
  
      # first setup the sobel filter
      grayscale = nn.Conv2d(3, 1, kernel_size=1, stride=1, padding=0)
      grayscale.weight.data.fill_(1.0 / 3.0)
      grayscale.bias.data.zero_()
  
      sobel_filter = nn.Conv2d(1, 2, kernel_size=3, stride=1, padding=1)
      sobel_filter.weight.data[0, 0].copy_(
          torch.FloatTensor([[1, 0, -1], [2, 0, -2], [1, 0, -1]])
      )
      sobel_filter.weight.data[1, 0].copy_(
          torch.FloatTensor([[1, 2, 1], [0, 0, 0], [-1, -2, -1]])
      )
      sobel_filter.bias.data.zero_()
      self.sobel = nn.Sequential(grayscale, sobel_filter)
      for p in self.sobel.parameters():
          p.requires_grad = False
  
      # Setup the features
      conv1_bn_relu = nn.Sequential(
          nn.Conv2d(2, 96, kernel_size=11, stride=4, padding=2),
          nn.BatchNorm2d(96),
          nn.ReLU(inplace=True),
      )
  
      pool1 = nn.MaxPool2d(kernel_size=3, stride=2)
  
      conv2_bn_relu = nn.Sequential(
          nn.Conv2d(96, 256, kernel_size=5, stride=1, padding=2),
          nn.BatchNorm2d(256),
          nn.ReLU(inplace=True),
      )
  
      pool2 = nn.MaxPool2d(kernel_size=3, stride=2)
  
      conv3_bn_relu = nn.Sequential(
          nn.Conv2d(256, 384, kernel_size=3, stride=1, padding=1),
          nn.BatchNorm2d(384),
          nn.ReLU(inplace=True),
      )
  
      conv4_bn_relu = nn.Sequential(
          nn.Conv2d(384, 384, kernel_size=3, stride=1, padding=1),
          nn.BatchNorm2d(384),
          nn.ReLU(inplace=True),
      )
  
      conv5_bn_relu = nn.Sequential(
          nn.Conv2d(384, 256, kernel_size=3, stride=1, padding=1),
          nn.BatchNorm2d(256),
          nn.ReLU(inplace=True),
      )
  
      pool3 = nn.MaxPool2d(kernel_size=3, stride=2)
  
      flatten = Flatten()
  
      self._feature_blocks = nn.ModuleList(
          [
              conv1_bn_relu,
              pool1,
              conv2_bn_relu,
              pool2,
              conv3_bn_relu,
              conv4_bn_relu,
              conv5_bn_relu,
              pool3,
              flatten,
          ]
      )
      self.all_feat_names = [
          "conv1",
          "pool1",
          "conv2",
          "pool2",
          "conv3",
          "conv4",
          "conv5",
          "pool5",
          "flatten",
      ]
      assert len(self.all_feat_names) == len(self._feature_blocks)
  
file_path: vissl/vissl/models/trunks/alexnet_deepcluster.py
imports: import torch
  import torch.nn
  from vissl.config import AttrDict
  from vissl.models.model_helpers import Flatten, get_trunk_forward_outputs_module_list
  from vissl.models.trunks import register_model_trunk
label_desc: Use image node_id 1 to create a new AlexNetDeepCluster object from inherited base classes: nn with example: obj = AlexNetDeepCluster(model_config, model_name)