class_docstr: Squeeze-and-Excitation (SE) block w/ Swish: AvgPool, FC, Swish, FC, Sigmoid.
docstr: Args:
      dim_in (int): the channel dimensions of the input.
      ratio (float): the channel reduction ratio for squeeze.
      relu_act (bool): whether to use ReLU activation instead
          of Swish (default).
      divisor (int): the new width should be dividable by divisor.
docstr_tok: ["Args",":","dim_in","(","int",")",":","the","channel","dimensions","of","the","input",".","ratio","(","float",")",":","the","channel","reduction","ratio","for","squeeze",".","relu_act","(","bool",")",":","whether","to","use","ReLU","activation","instead","of","Swish","(","default",")",".","divisor","(","int",")",":","the","new","width","should","be","dividable","by","divisor","."]
code: def __init__(self, dim_in, ratio, relu_act=True):
      """
      Args:
          dim_in (int): the channel dimensions of the input.
          ratio (float): the channel reduction ratio for squeeze.
          relu_act (bool): whether to use ReLU activation instead
              of Swish (default).
          divisor (int): the new width should be dividable by divisor.
      """
      super(SE, self).__init__()
      self.avg_pool = nn.AdaptiveAvgPool3d((1, 1, 1))
      dim_fc = self._round_width(dim_in, ratio)
      self.fc1 = nn.Conv3d(dim_in, dim_fc, 1, bias=True)
      self.fc1_act = nn.ReLU() if relu_act else Swish()
      self.fc2 = nn.Conv3d(dim_fc, dim_in, 1, bias=True)
  
      self.fc2_sig = nn.Sigmoid()
  
file_path: SlowFast/slowfast/models/operators.py
imports: import math
  import torch
  import torch.nn
  import torch.nn.functional
  import torchvision
  from slowfast.models.utils import get_gkern
  from pytorchvideo.layers.swish import Swish
label_desc: Use image node_id 2 to create a new SE object from inherited base classes: nn with example: obj = SE(dim_in, ratio, relu_act)