code: def __init__(
      self,
      spatial_dims: int,
      f_int: int,
      f_g: int,
      f_l: int,
      dropout=0.0,
  ):
      super().__init__()
      self.W_g = nn.Sequential(
          Convolution(
              spatial_dims=spatial_dims,
              in_channels=f_g,
              out_channels=f_int,
              kernel_size=1,
              strides=1,
              padding=0,
              dropout=dropout,
              conv_only=True,
          ),
          Norm[Norm.BATCH, spatial_dims](f_int),
      )
  
      self.W_x = nn.Sequential(
          Convolution(
              spatial_dims=spatial_dims,
              in_channels=f_l,
              out_channels=f_int,
              kernel_size=1,
              strides=1,
              padding=0,
              dropout=dropout,
              conv_only=True,
          ),
          Norm[Norm.BATCH, spatial_dims](f_int),
      )
  
      self.psi = nn.Sequential(
          Convolution(
              spatial_dims=spatial_dims,
              in_channels=f_int,
              out_channels=1,
              kernel_size=1,
              strides=1,
              padding=0,
              dropout=dropout,
              conv_only=True,
          ),
          Norm[Norm.BATCH, spatial_dims](1),
          nn.Sigmoid(),
      )
  
      self.relu = nn.ReLU()
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  import torch
  import torch.nn
  from monai.networks.blocks.convolutions import Convolution
  from monai.networks.layers.factories import Norm
label_desc: Use image node_id 1 to create a new AttentionBlock object from inherited base classes: nn with example: obj = AttentionBlock(spatial_dims, f_int, f_g, f_l, dropout)