class_docstr: A self-attention module.
code: def __init__(self, in_channels, key_channels):
      super().__init__()
  
      self.in_channels = in_channels
      self.key_channels = key_channels
  
      self.f_pixel = nn.Sequential(
          layers.ConvBNReLU(
              in_channels, key_channels, 1, bias_attr=False
          ),
          layers.ConvBNReLU(
              key_channels, key_channels, 1, bias_attr=False
          ),
      )
  
      self.f_object = nn.Sequential(
          layers.ConvBNReLU(
              in_channels, key_channels, 1, bias_attr=False
          ),
          layers.ConvBNReLU(
              key_channels, key_channels, 1, bias_attr=False
          ),
      )
  
      self.f_down = layers.ConvBNReLU(
          in_channels, key_channels, 1, bias_attr=False
      )
  
      self.f_up = layers.ConvBNReLU(
          key_channels, in_channels, 1, bias_attr=False
      )
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager, param_init
  from paddleseg.models import layers
label_desc: Use image node_id 1 to create a new ObjectAttentionBlock object from inherited base classes: nn with example: obj = ObjectAttentionBlock(in_channels, key_channels)