class_docstr: An implementation of Squeeze-and-Excitation Block.
  
  Arguments
  ---------
  channels : int
      The number of channels.
  reduction : int
      The reduction factor of channels.
  
  Example
  -------
  >>> inp_tensor = torch.rand([1, 64, 80, 40])
  >>> se_layer = SEBlock(64)
  >>> out_tensor = se_layer(inp_tensor)
  >>> out_tensor.shape
  torch.Size([1, 64, 80, 40])
code: def __init__(self, channels, reduction=1, activation=nn.ReLU):
      super(SEBlock, self).__init__()
  
      self.avg_pool = nn.AdaptiveAvgPool2d(1)
  
      self.fc = nn.Sequential(
          nn.Linear(channels, channels // reduction),
          activation(),
          nn.Linear(channels // reduction, channels),
          nn.Sigmoid(),
      )
  
imports: import math
  import torch
  import torch.nn
  import torch.nn.functional
  from speechbrain.nnet.normalization import BatchNorm1d
  from speechbrain.nnet.linear import Linear
label_desc: Use image node_id 1 to create a new SEBlock object from inherited base classes: nn with example: obj = SEBlock(channels, reduction, activation)