class_docstr: Squeeze-and-excitation block.
  
  Defined: https://arxiv.org/abs/1709.01507
  
  Arguments
  ---------
  input_size : tuple of ints
      Expected size of the input tensor
  
  Example
  -------
  >>> inputs = torch.rand([10, 20, 30, 256])
  >>> se_block = SEblock(input_size=inputs.shape[-1])
  >>> outputs = se_block(inputs)
  >>> outputs.shape
  torch.Size([10, 1, 1, 256])
docstr: Processes the input tensor with a squeeze-and-excite block.
docstr_tok: ["Processes","the","input","tensor","with","a","squeeze-and-excite","block","."]
code: def forward(self, x):
      """Processes the input tensor with a squeeze-and-excite block."""
      # torch.mean causes weird inplace error
      # x = torch.mean(x, dim=(1, 2), keepdim=True)
      count = x.size(1) * x.size(2)
      x = torch.sum(x, dim=(1, 2), keepdim=True) / count
      x = self.linear1(x)
      x = torch.nn.functional.relu(x)
      x = self.linear2(x)
      return torch.sigmoid(x)
  
file_path: speechbrain/speechbrain/lobes/models/EnhanceResnet.py
imports: import torch
  import speechbrain
  from speechbrain.processing.features import STFT, ISTFT, spectral_magnitude
label_desc: Use image node_id 2 for calling the SEblock obj's underlying member method code with example usage: obj.forward(x) and returns: torch