code: def __init__(
      self,
      block,
      layers,
      num_classes=1000,
      zero_init_residual=False,
      groups=1,
      width_per_group=64,
      norm_layer=None,
      filter_size=1,
      pool_only=True,
      replace_stride_with_dilation=None,
  ):
      super(ResNet, self).__init__()
      if norm_layer is None:
          norm_layer = nn.BatchNorm2d
      self._norm_layer = norm_layer
  
      self.inplanes = 64
      self.dilation = 1
      if replace_stride_with_dilation is None:
          # each element in the tuple indicates if we should replace
          # the 2x2 stride with a dilated convolution instead
          replace_stride_with_dilation = [False, False, False]
      if len(replace_stride_with_dilation) != 3:
          raise ValueError(
              "replace_stride_with_dilation should be None "
              "or a 3-element tuple, got {}".format(
                  replace_stride_with_dilation
              )
          )
  
      self.groups = groups
      self.base_width = width_per_group
  
      if pool_only:
          self.conv1 = nn.Conv2d(
              3,
              self.inplanes,
              kernel_size=7,
              stride=2,
              padding=3,
              bias=False,
          )
          self.bn1 = norm_layer(self.inplanes)
          self.relu = nn.ReLU(inplace=True)
          self.maxpool = nn.Sequential(
              *[
                  nn.MaxPool2d(kernel_size=2, stride=1),
                  BlurPool(
                      self.inplanes,
                      filt_size=filter_size,
                      stride=2,
                  ),
              ]
          )
      else:
          self.conv1 = nn.Conv2d(
              3,
              self.inplanes,
              kernel_size=7,
              stride=1,
              padding=3,
              bias=False,
          )
          self.bn1 = norm_layer(self.inplanes)
          self.relu = nn.ReLU(inplace=True)
          self.maxpool = nn.Sequential(
              *[
                  BlurPool(
                      self.inplanes,
                      filt_size=filter_size,
                      stride=2,
                  ),
                  nn.MaxPool2d(kernel_size=2, stride=1),
                  BlurPool(
                      self.inplanes,
                      filt_size=filter_size,
                      stride=2,
                  ),
              ]
          )
  
      self.layer1 = self._make_layer(block, 64, layers[0])
      self.layer2 = self._make_layer(
          block,
          128,
          layers[1],
          stride=2,
          dilate=replace_stride_with_dilation[0],
          filter_size=filter_size,
      )
      self.layer3 = self._make_layer(
          block,
          256,
          layers[2],
          stride=2,
          dilate=replace_stride_with_dilation[1],
          filter_size=filter_size,
      )
      self.layer4 = self._make_layer(
          block,
          512,
          layers[3],
          stride=2,
          dilate=replace_stride_with_dilation[2],
          filter_size=filter_size,
      )
      self.avgpool = nn.AdaptiveAvgPool2d((1, 1))
      self.fc = nn.Linear(512 * block.expansion, num_classes)
  
      for m in self.modules():
          if isinstance(m, nn.Conv2d):
              if (
                  m.in_channels != m.out_channels
                  or m.out_channels != m.groups
                  or m.bias is not None
              ):
                  # don't want to reinitialize downsample layers, code assuming normal conv layers will not have these characteristics
                  nn.init.kaiming_normal_(
                      m.weight, mode="fan_out", nonlinearity="relu"
                  )
              else:
                  print("Not initializing")
          elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)):
              nn.init.constant_(m.weight, 1)
              nn.init.constant_(m.bias, 0)
  
      # Zero-initialize the last BN in each residual branch,
      # so that the residual branch starts with zeros, and each residual block behaves like an identity.
      # This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677
      if zero_init_residual:
          for m in self.modules():
              if isinstance(m, Bottleneck):
                  nn.init.constant_(m.bn3.weight, 0)
              elif isinstance(m, BasicBlock):
                  nn.init.constant_(m.bn2.weight, 0)
  
imports: import torch.nn
  import torch.utils.model_zoo
  from antialiased_cnns import *
label_desc: Use image node_id 1 to create a new ResNet object from inherited base classes: nn with example: obj = ResNet(block, layers, num_classes, zero_init_residual, groups, width_per_group, norm_layer, filter_size, pool_only, replace_stride_with_dilation)