class_docstr: SpatialAttention Layer.
  
  Args:
      d_model (int): Number of input channels.
      atten_kernel_sizes (list[int], optional): The height or width of each strip convolution kernel in attention module.
          Default: [7, 11, 21].
class_docstr_tok: ["SpatialAttention","Layer",".","Args",":","d_model","(","int",")",":","Number","of","input","channels",".","atten_kernel_sizes","(","list","[","int","]",",","optional",")",":","The","height","or","width","of","each","strip","convolution","kernel","in","attention","module",".","Default",":","[","7",",","11",",","21","]","."]
code: def __init__(self, d_model, atten_kernel_sizes=[7, 11, 21]):
      super().__init__()
      self.d_model = d_model
      self.proj_1 = nn.Conv2D(d_model, d_model, 1)
      self.activation = nn.GELU()
      self.spatial_gating_unit = AttentionModule(
          d_model, atten_kernel_sizes
      )
      self.proj_2 = nn.Conv2D(d_model, d_model, 1)
  
imports: import math
  import numpy
  import paddle
  import paddle.nn
  from paddle.nn import Conv2D
  from paddle.nn.initializer import Assign, Normal
  from paddleseg.cvlibs import manager
  from paddleseg.models.backbones.transformer_utils import DropPath, ones_, to_2tuple, zeros_
  from paddleseg.models.layers import SyncBatchNorm
  from paddleseg.utils import utils
label_desc: Use image node_id 1 to create a new SpatialAttention object from inherited base classes: nn with example: obj = SpatialAttention(d_model, atten_kernel_sizes)