class_docstr: Local Patch Interaction module that allows explicit communication between tokens in 3x3
  windows to augment the implicit communcation performed by the block diagonal
  scatter attention. Implemented using 2 layers of separable 3x3 convolutions with
  GeLU and BatchNorm2d
class_docstr_tok: ["Local","Patch","Interaction","module","that","allows","explicit","communication","between","tokens","in","3x3","windows","to","augment","the","implicit","communcation","performed","by","the","block","diagonal","scatter","attention",".","Implemented","using","2","layers","of","separable","3x3","convolutions","with","GeLU","and","BatchNorm2d"]
code: def __init__(
      self,
      in_features,
      hidden_features=None,
      out_features=None,
      act_layer=nn.GELU,
      drop=0.0,
      kernel_size=3,
  ):
      super().__init__()
      out_features = out_features or in_features
  
      padding = kernel_size // 2
  
      self.conv1 = torch.nn.Conv2d(
          in_features,
          out_features,
          kernel_size=kernel_size,
          padding=padding,
          groups=out_features,
      )
      self.act = act_layer()
      self.bn = nn.BatchNorm2d(in_features)
      self.conv2 = torch.nn.Conv2d(
          in_features,
          out_features,
          kernel_size=kernel_size,
          padding=padding,
          groups=out_features,
      )
  
imports: import logging
  import math
  from functools import partial
  from typing import List, Optional
  import torch
  import torch.nn
  from fairscale.nn import checkpoint_wrapper
  from vissl.config import AttrDict
  from vissl.models.model_helpers import DropPath, to_2tuple, trunc_normal_
  from vissl.models.trunks import register_model_trunk
  from vissl.models.trunks.vision_transformer import Mlp
  from vissl.utils.fsdp_utils import fsdp_wrapper
  from vissl.utils.misc import set_torch_seed
label_desc: Use image node_id 1 to create a new LPI object from inherited base classes: nn with example: obj = LPI(in_features, hidden_features, out_features, act_layer, drop, kernel_size)