class_docstr: MSCAN Block.
  
  Args:
      dim (int): Number of feature channels.
      atten_kernel_sizes (list[int], optional): The height or width of each strip convolution kernel in attention module.
          Default: [7, 11, 21].
      mlp_ratio (float, optional): Ratio of mlp hidden dim to embedding dim. Default: 4.0.
      drop (float, optional): Dropout rate. Default: 0.0
      attn_drop (float, optional): Attention dropout rate. Default: 0.0.
      drop_path (float, optional): Stochastic depth rate. Default: 0.0.
      act_layer (nn.Layer, optional): Activation layer. Default: nn.GELU.
class_docstr_tok: ["MSCAN","Block",".","Args",":","dim","(","int",")",":","Number","of","feature","channels",".","atten_kernel_sizes","(","list","[","int","]",",","optional",")",":","The","height","or","width","of","each","strip","convolution","kernel","in","attention","module",".","Default",":","[","7",",","11",",","21","]",".","mlp_ratio","(","float",",","optional",")",":","Ratio","of","mlp","hidden","dim","to","embedding","dim",".","Default",":","4.0.","drop","(","float",",","optional",")",":","Dropout","rate",".","Default",":","0.0","attn_drop","(","float",",","optional",")",":","Attention","dropout","rate",".","Default",":","0.0.","drop_path","(","float",",","optional",")",":","Stochastic","depth","rate",".","Default",":","0.0.","act_layer","(","nn.Layer",",","optional",")",":","Activation","layer",".","Default",":","nn.GELU","."]
code: def __init__(
      self,
      dim,
      atten_kernel_sizes=[7, 11, 21],
      mlp_ratio=4.0,
      drop=0.0,
      drop_path=0.0,
      act_layer=nn.GELU,
  ):
      super().__init__()
      self.norm1 = SyncBatchNorm(dim)
      self.attn = SpatialAttention(dim, atten_kernel_sizes)
      self.drop_path = (
          DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
      )
      self.norm2 = SyncBatchNorm(dim)
      self.mlp = Mlp(
          in_features=dim,
          hidden_features=int(dim * mlp_ratio),
          act_layer=act_layer,
          drop=drop,
      )
  
      layer_scale_init_value = paddle.full(
          [dim, 1, 1], fill_value=1e-2, dtype="float32"
      )
      self.layer_scale_1 = paddle.create_parameter(
          [dim, 1, 1], "float32", attr=Assign(layer_scale_init_value)
      )
      self.layer_scale_2 = paddle.create_parameter(
          [dim, 1, 1], "float32", attr=Assign(layer_scale_init_value)
      )
  
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 Block object from inherited base classes: nn with example: obj = Block(dim, atten_kernel_sizes, mlp_ratio, drop, drop_path, act_layer)