class_docstr: Swin Transformer Block.
      
class_docstr_tok: ["Swin","Transformer","Block","."]
code: def _calc_window_shift(
      self, target_window_size, target_shift_size
  ) -> Tuple[Tuple[int, int], Tuple[int, int]]:
      target_window_size = to_2tuple(target_window_size)
      target_shift_size = to_2tuple(target_shift_size)
      window_size = [
          r if r <= w else w
          for r, w in zip(self.input_resolution, target_window_size)
      ]
      shift_size = [
          0 if r <= w else s
          for r, w, s in zip(
              self.input_resolution, window_size, target_shift_size
          )
      ]
      return tuple(window_size), tuple(shift_size)
  
imports: import logging
  import math
  from typing import Callable, List, Optional, Tuple, Union
  import torch
  import torch.nn
  from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
  from timm.layers import PatchEmbed, Mlp, DropPath, ClassifierHead, to_2tuple, to_ntuple, trunc_normal_, _assert, use_fused_attn, resize_rel_pos_bias_table, resample_patch_embed
  from ._builder import build_model_with_cfg
  from ._features_fx import register_notrace_function
  from ._manipulate import checkpoint_seq, named_apply
  from ._registry import generate_default_cfgs, register_model, register_model_deprecations
  from .vision_transformer import get_init_weights_vit
label_desc: Use image node_id 2 for calling the SwinTransformerBlock obj's underlying member method code with example usage: obj._calc_window_shift(target_window_size, target_shift_size) and returns: tuple,  tuple