class_docstr: This block implements the Squeeze-and-Excitation block from https://arxiv.org/abs/1709.01507 (see Fig. 1).
  Parameters ``activation``, and ``scale_activation`` correspond to ``delta`` and ``sigma`` in eq. 3.
  
  Args:
      input_channels (int): Number of channels in the input image
      squeeze_channels (int): Number of squeeze channels
      activation (Callable[..., torch.nn.Module], optional): ``delta`` activation. Default: ``torch.nn.ReLU``
      scale_activation (Callable[..., torch.nn.Module]): ``sigma`` activation. Default: ``torch.nn.Sigmoid``
code: def __init__(
      self,
      input_channels: int,
      squeeze_channels: int,
      activation: Callable[..., torch.nn.Module] = torch.nn.ReLU,
      scale_activation: Callable[
          ..., torch.nn.Module
      ] = torch.nn.Sigmoid,
  ) -> None:
      super().__init__()
      _log_api_usage_once(self)
      self.avgpool = torch.nn.AdaptiveAvgPool2d(1)
      self.fc1 = torch.nn.Conv2d(input_channels, squeeze_channels, 1)
      self.fc2 = torch.nn.Conv2d(squeeze_channels, input_channels, 1)
      self.activation = activation()
      self.scale_activation = scale_activation()
  
imports: import warnings
  from typing import Callable, List, Optional, Sequence, Tuple, Union
  import torch
  from torch import Tensor
  from ..utils import _log_api_usage_once, _make_ntuple
label_desc: Use image node_id 1 to create a new SqueezeExcitation object from inherited base classes: torch.nn with example: obj = SqueezeExcitation(input_channels, squeeze_channels, activation, scale_activation)