class_docstr: Convolution block, including squeeze-and-excitation.
  
  Arguments
  ---------
  input_shape : tuple of ints
      The expected size of the inputs.
  channels : int
      Number of output channels.
  activation : function
      Function applied before each block.
  normalization : class
      Name of a class to use for constructing norm layers.
  dropout : float
      Portion of block outputs to drop during training.
  
  Example
  -------
  >>> inputs = torch.rand([10, 20, 30, 128])
  >>> block = ConvBlock(input_shape=inputs.shape, channels=256)
  >>> outputs = block(inputs)
  >>> outputs.shape
  torch.Size([10, 20, 15, 256])
docstr: Processes the input tensor with a convolutional block.
docstr_tok: ["Processes","the","input","tensor","with","a","convolutional","block","."]
code: def forward(self, x):
      """Processes the input tensor with a convolutional block."""
      x = self.downsample(x)
      residual = self.activation(x)
      residual = self.norm1(residual)
      residual = self.dropout(residual)
      residual = self.conv1(residual)
      residual = self.activation(residual)
      residual = self.norm2(residual)
      residual = self.dropout(residual)
      residual = self.conv2(residual)
      residual *= self.se_block(residual)
      return x + residual
  
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 ConvBlock obj's underlying member method code with example usage: obj.forward(x) and returns: unknown