class_docstr: A basic Swin Transformer layer for one stage
  
  Args:
      dim (int): Number of input channels
      input_resolution (tuple[int]): Input resolution
      depth (int): Number of blocks
      num_heads (int): Number of attention heads
      window_size (int): Local window size
      mlp_ratio (float, optional): Ratio of mlp hidden dim to embedding dim
      qkv_bias (bool, optional): If True, add a learnable bias to query, key, value. Default: True
      qk_scale (float | None, optional): Override default query and key scale of head_dim ** -0.5 if set
      drop (float, optional): Dropout rate. Default: 0.0
      attn_drop (float, optional): Attention dropout rate. Default: 0.0
      drop_path (float | tuple[float], optional): Stochastic depth rate. Default: 0.0
      norm_layer (nn.Module, optional): Normalization layer. Default: nn.LayerNorm
      upsample (nn.Module | None, optional): Upsample layer at the end of the layer. Default: None
class_docstr_tok: ["A","basic","Swin","Transformer","layer","for","one","stage","Args",":","dim","(","int",")",":","Number","of","input","channels","input_resolution","(","tuple","[","int","]",")",":","Input","resolution","depth","(","int",")",":","Number","of","blocks","num_heads","(","int",")",":","Number","of","attention","heads","window_size","(","int",")",":","Local","window","size","mlp_ratio","(","float",",","optional",")",":","Ratio","of","mlp","hidden","dim","to","embedding","dim","qkv_bias","(","bool",",","optional",")",":","If","True",",","add","a","learnable","bias","to","query",",","key",",","value",".","Default",":","True","qk_scale","(","float","|","None",",","optional",")",":","Override","default","query","and","key","scale","of","head_dim","*","*","-0.5","if","set","drop","(","float",",","optional",")",":","Dropout","rate",".","Default",":","0.0","attn_drop","(","float",",","optional",")",":","Attention","dropout","rate",".","Default",":","0.0","drop_path","(","float","|","tuple","[","float","]",",","optional",")",":","Stochastic","depth","rate",".","Default",":","0.0","norm_layer","(","nn.Module",",","optional",")",":","Normalization","layer",".","Default",":","nn.LayerNorm","upsample","(","nn.Module","|","None",",","optional",")",":","Upsample","layer","at","the","end","of","the","layer",".","Default",":","None"]
code: def forward(self, x):
      # calculate attention mask for SW-MSA
      H, W = self.input_resolution
      Hp = int(np.ceil(H / self.window_size)) * self.window_size
      Wp = int(np.ceil(W / self.window_size)) * self.window_size
      img_mask = paddle.zeros((1, Hp, Wp, 1))  # 1 Hp Wp 1
      h_slices = (
          slice(0, -self.window_size),
          slice(-self.window_size, -self.shift_size),
          slice(-self.shift_size, None),
      )
      w_slices = (
          slice(0, -self.window_size),
          slice(-self.window_size, -self.shift_size),
          slice(-self.shift_size, None),
      )
      cnt = 0
      for h in h_slices:
          for w in w_slices:
              img_mask[:, h, w, :] = cnt
              cnt += 1
  
      mask_windows = window_partition(
          img_mask, self.window_size
      )  # nW, window_size, window_size, 1
      mask_windows = mask_windows.reshape(
          [-1, self.window_size * self.window_size]
      )
      attn_mask = mask_windows.unsqueeze(1) - mask_windows.unsqueeze(2)
  
      huns = paddle.full_like(attn_mask, -100)
      attn_mask = huns * (attn_mask != 0).astype("float32")
      for blk in self.blocks:
          x = blk(x)
      if self.upsample is not None:
          x = self.upsample(x)
      return x
  
imports: import numpy
  import paddle
  import paddle.nn
  from medicalseg.cvlibs import manager, param_init
  from medicalseg.models.backbones.swin_transformer import SwinTransformerBlock, window_partition
  from medicalseg.utils import load_pretrained_model
label_desc: Use image node_id 2 for calling the BasicUpLayer obj's underlying member method code with example usage: obj.forward(x) and returns: x