class_docstr: SE Module as defined in original SE-Nets with a few additions
  Additions include:
      * divisor can be specified to keep channels % div == 0 (default: 8)
      * reduction channels can be specified directly by arg (if rd_channels is set)
      * reduction channels can be specified by float rd_ratio (default: 1/16)
      * global max pooling can be added to the squeeze aggregation
      * customizable activation, normalization, and gate layer
code: def __init__(
      self,
      channels,
      rd_ratio=1.0 / 16,
      rd_channels=None,
      rd_divisor=8,
      bias=True,
      act_layer=nn.ReLU,
      gate_layer="sigmoid",
  ):
      super().__init__()
      if not rd_channels:
          rd_channels = make_divisible(
              channels * rd_ratio, rd_divisor, round_limit=0.0
          )
      self.fc1 = nn.Linear(channels, rd_channels, bias=bias)
      self.act = create_act_layer(act_layer, inplace=True)
      self.fc2 = nn.Linear(rd_channels, channels, bias=bias)
      self.gate = create_act_layer(gate_layer)
  
file_path: pytorch-image-models/timm/layers/squeeze_excite.py
imports: from torch import nn
  from .create_act import create_act_layer
  from .helpers import make_divisible
label_desc: Use image node_id 1 to create a new SqueezeExciteCl object from inherited base classes: nn with example: obj = SqueezeExciteCl(channels, rd_ratio, rd_channels, rd_divisor, bias, act_layer, gate_layer)