class_docstr: Squeeze and excitation block that acts as the attention module in SSPCAB.
  
  Args:
      channels (int): Number of input channels.
      reduction_ratio (int): Reduction ratio of the attention module.
docstr: Forward pass through the attention module.
docstr_tok: ["Forward","pass","through","the","attention","module","."]
code: def forward(self, inputs: Tensor) -> Tensor:
      """Forward pass through the attention module."""
      # reduce feature map to 1d vector through global average pooling
      avg_pooled = inputs.mean(dim=(2, 3))
  
      # squeeze and excite
      act = self.fc1(avg_pooled)
      act = F.relu(act)
      act = self.fc2(act)
      act = F.sigmoid(act)
  
      # multiply with input
      se_out = inputs * act.view(act.shape[0], act.shape[1], 1, 1)
  
      return se_out
  
file_path: anomalib/src/anomalib/models/components/layers/sspcab.py
imports: import torch
  import torch.nn.functional
  from torch import Tensor, nn
label_desc: Use image node_id 2 for calling the AttentionModule obj's underlying member method code with example usage: obj.forward(inputs) and returns: se_out