class_docstr: SSPCAB block.
  
  Args:
      in_channels (int): Number of input channels.
      kernel_size (int): Size of the receptive fields of the masked convolution kernel.
      dilation (int): Dilation factor of the masked convolution kernel.
      reduction_ratio (int): Reduction ratio of the attention module.
docstr: Forward pass through the SSPCAB block.
docstr_tok: ["Forward","pass","through","the","SSPCAB","block","."]
code: def forward(self, inputs: Tensor) -> Tensor:
      """Forward pass through the SSPCAB block."""
      # compute masked convolution
      padded = F.pad(inputs, (self.pad,) * 4)
      masked_out = torch.zeros_like(inputs)
      masked_out += self.masked_conv1(
          padded[..., : -self.crop, : -self.crop]
      )
      masked_out += self.masked_conv2(
          padded[..., : -self.crop, self.crop :]
      )
      masked_out += self.masked_conv3(
          padded[..., self.crop :, : -self.crop]
      )
      masked_out += self.masked_conv4(
          padded[..., self.crop :, self.crop :]
      )
  
      # apply channel attention module
      sspcab_out = self.attention_module(masked_out)
      return sspcab_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 SSPCAB obj's underlying member method code with example usage: obj.forward(inputs) and returns: sspcab_out