code: def __init__(self, in_channels, out_channels, stride, sk_ratio=0):
      super().__init__()
      if sk_ratio > 0:
          self.shortcut = nn.Sequential(
              nn.ZeroPad2d((0, 1, 0, 1)),
              # kernel_size = 2 => padding = 1
              nn.AvgPool2d(kernel_size=2, stride=stride, padding=0),
              conv(in_channels, out_channels, kernel_size=1),
          )
      else:
          self.shortcut = conv(
              in_channels, out_channels, kernel_size=1, stride=stride
          )
      self.bn = BatchNormRelu(out_channels, relu=False)
  
imports: import logging
  from enum import Enum
  import torch
  import torch.nn
  import torch.nn.functional
  from vissl.config import AttrDict
  from vissl.models.trunks import register_model_trunk
label_desc: Use image node_id 1 to create a new Projection object from inherited base classes: nn with example: obj = Projection(in_channels, out_channels, stride, sk_ratio)