class_docstr: DaViT
      A PyTorch implementation of `DaViT: Dual Attention Vision Transformers`  - https://arxiv.org/abs/2204.03645
      Supports arbitrary input sizes and pyramid feature extraction
      
  Args:
      in_chans (int): Number of input image channels. Default: 3
      num_classes (int): Number of classes for classification head. Default: 1000
      depths (tuple(int)): Number of blocks in each stage. Default: (1, 1, 3, 1)
      embed_dims (tuple(int)): Patch embedding dimension. Default: (96, 192, 384, 768)
      num_heads (tuple(int)): Number of attention heads in different layers. Default: (3, 6, 12, 24)
      window_size (int): Window size. Default: 7
      mlp_ratio (float): Ratio of mlp hidden dim to embedding dim. Default: 4
      qkv_bias (bool): If True, add a learnable bias to query, key, value. Default: True
      drop_path_rate (float): Stochastic depth rate. Default: 0.1
      norm_layer (nn.Module): Normalization layer. Default: nn.LayerNorm.
class_docstr_tok: ["DaViT","A","PyTorch","implementation","of","`","DaViT",":","Dual","Attention","Vision","Transformers","`","-","https",":","\/\/arxiv.org\/abs\/2204.03645","Supports","arbitrary","input","sizes","and","pyramid","feature","extraction","Args",":","in_chans","(","int",")",":","Number","of","input","image","channels",".","Default",":","3","num_classes","(","int",")",":","Number","of","classes","for","classification","head",".","Default",":","1000","depths","(","tuple","(","int",")",")",":","Number","of","blocks","in","each","stage",".","Default",":","(","1",",","1",",","3",",","1",")","embed_dims","(","tuple","(","int",")",")",":","Patch","embedding","dimension",".","Default",":","(","96",",","192",",","384",",","768",")","num_heads","(","tuple","(","int",")",")",":","Number","of","attention","heads","in","different","layers",".","Default",":","(","3",",","6",",","12",",","24",")","window_size","(","int",")",":","Window","size",".","Default",":","7","mlp_ratio","(","float",")",":","Ratio","of","mlp","hidden","dim","to","embedding","dim",".","Default",":","4","qkv_bias","(","bool",")",":","If","True",",","add","a","learnable","bias","to","query",",","key",",","value",".","Default",":","True","drop_path_rate","(","float",")",":","Stochastic","depth","rate",".","Default",":","0.1","norm_layer","(","nn.Module",")",":","Normalization","layer",".","Default",":","nn.LayerNorm","."]
code: def forward(self, x):
      x = self.forward_features(x)
      x = self.forward_head(x)
      return x
  
imports: from functools import partial
  from typing import Tuple
  import torch
  import torch.nn
  import torch.nn.functional
  from torch import Tensor
  from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
  from timm.layers import DropPath, to_2tuple, trunc_normal_, Mlp, LayerNorm2d, get_norm_layer, use_fused_attn
  from timm.layers import NormMlpClassifierHead, ClassifierHead
  from ._builder import build_model_with_cfg
  from ._features_fx import register_notrace_function
  from ._manipulate import checkpoint_seq
  from ._registry import generate_default_cfgs, register_model
label_desc: Use image node_id 8 for calling the DaVit obj's underlying member method code with example usage: obj.forward(x) and returns: x