class_docstr: WaveViT
  Args:
      in_chans (`int`):
          Number of image channels.
      num_classes (`int`):
          Number of image classes.
      stem_hidden_dim (`int`):
          Stem layer hidden dim.
      embed_dims (`list`):
          Every layer`s embedding dim.
      num_heads (`list`):
          Every layer`s head number.
      mlp_ratios (`list`):
          Every layer`s mlp ration.
      drop_path_rate (`float`):
          Every layer`s drop rate.
      norm_layer (`nn.Module`):
          Default nn.LayerNorm.
      depths (`int`):
          Number of depths.
      sr_ratios (`list`):
          Every block`s sr ration.
      num_stages (`int`):
          Number of stages.
      token_label (`bool`):
          Whether to use the token_label.
class_docstr_tok: ["WaveViT","Args",":","in_chans","(","`","int","`",")",":","Number","of","image","channels",".","num_classes","(","`","int","`",")",":","Number","of","image","classes",".","stem_hidden_dim","(","`","int","`",")",":","Stem","layer","hidden","dim",".","embed_dims","(","`","list","`",")",":","Every","layer","`","s","embedding","dim",".","num_heads","(","`","list","`",")",":","Every","layer","`","s","head","number",".","mlp_ratios","(","`","list","`",")",":","Every","layer","`","s","mlp","ration",".","drop_path_rate","(","`","float","`",")",":","Every","layer","`","s","drop","rate",".","norm_layer","(","`","nn.Module","`",")",":","Default","nn.LayerNorm",".","depths","(","`","int","`",")",":","Number","of","depths",".","sr_ratios","(","`","list","`",")",":","Every","block","`","s","sr","ration",".","num_stages","(","`","int","`",")",":","Number","of","stages",".","token_label","(","`","bool","`",")",":","Whether","to","use","the","token_label","."]
code: def forward_features(self, x):
      b = x.shape[0]
      for i in range(self.num_stages):
          patch_embed = getattr(self, f"patch_embed{i + 1}")
          block = getattr(self, f"block{i + 1}")
          x, h, w = patch_embed(x)
  
          for blk in block:
              x = blk(x, h, w)
  
          if i != self.num_stages - 1:
              norm = getattr(self, f"norm{i + 1}")
              x = norm(x)
              x = (
                  x.reshape(b, h, w, -1)
                  .permute(0, 3, 1, 2)
                  .contiguous()
              )
  
      x = self.forward_cls(x)[:, 0]
      norm = getattr(self, f"norm{self.num_stages}")
      x = norm(x)
      return x
  
file_path: towhee/towhee/models/wave_vit/wave_vit.py
imports: import torch
  from torch import nn
  from typing import List, Any
  import numpy
  from timm.models.vision_transformer import _cfg
  from towhee.models.wave_vit.wave_vit_block import rand_bbox, Stem, DownSamples, Block, ClassBlock
  from towhee.models.utils.init_vit_weights import init_vit_weights
  from towhee.models.wave_vit.wave_vit_utils import get_configs
label_desc: Use image node_id 3 for calling the WaveViT obj's underlying member method code with example usage: obj.forward_features(x) and returns: x