class_docstr: This class defines the Squeeze-excitation module, in the `SENet paper <https://arxiv.org/abs/1709.01507>`_
  
  Args:
      opts: command-line arguments
      in_channels (int): :math:`C` from an expected input of size :math:`(N, C, H, W)`
      squeeze_factor (Optional[int]): Reduce :math:`C` by this factor. Default: 4
      squeeze_channels (Optional[int]): This module's output channels. Overrides squeeze_factor if specified
      scale_fn_name (Optional[str]): Scaling function name. Default: sigmoid
  
  Shape:
      - Input: :math:`(N, C, H, W)`
      - Output: :math:`(N, C, H, W)`
class_docstr_tok: ["This","class","defines","the","Squeeze-excitation","module",",","in","the","`","SENet","paper","<","https",":","\/\/arxiv.org\/abs\/1709.01507",">","`","_","Args",":","opts",":","command-line","arguments","in_channels","(","int",")",":",":","math",":","`","C","`","from","an","expected","input","of","size",":","math",":","`","(","N",",","C",",","H",",","W",")","`","squeeze_factor","(","Optional","[","int","]",")",":","Reduce",":","math",":","`","C","`","by","this","factor",".","Default",":","4","squeeze_channels","(","Optional","[","int","]",")",":","This","module","'s","output","channels",".","Overrides","squeeze_factor","if","specified","scale_fn_name","(","Optional","[","str","]",")",":","Scaling","function","name",".","Default",":","sigmoid","Shape",":","-","Input",":",":","math",":","`","(","N",",","C",",","H",",","W",")","`","-","Output",":",":","math",":","`","(","N",",","C",",","H",",","W",")","`"]
code: def __repr__(self) -> str:
      return (
          "{}(in_channels={}, squeeze_factor={}, scale_fn={})".format(
              self.__class__.__name__,
              self.in_channels,
              self.squeeze_factor,
              self.scale_fn,
          )
      )
  
file_path: ml-cvnets/cvnets/modules/squeeze_excitation.py
imports: from typing import Optional
  import torch
  from torch import Tensor, nn
  from cvnets.layers import AdaptiveAvgPool2d, ConvLayer2d
  from cvnets.layers.activation import build_activation_layer
  from cvnets.modules import BaseModule
  from utils.math_utils import make_divisible
label_desc: Use image node_id 3 for calling the SqueezeExcitation obj's underlying member method code with example usage: obj.__repr__() and returns: str