class_docstr: The Transformer block.
  Args:
      dim (`int`):
          Number of features.
      num_heads (`int`):
          Number of heads.
      mlp_ratio (`int`):
          Ratio of mlp layer.
      qkv_bias (`bool`):
          If add bias to qkv layer.
      qk_scale (`float`):
          Number to scale qk.
      drop_ratio (`float`):
          Drop rate at the end of the block (mlp layer)
      attn_drop_ratio (`float`):
          Drop rate of attention layer
      drop_path_ratio (`float`):
          Drop rate of drop_path layer
      act_layer (`nn.Module`):
          Activation layer
      norm_layer (`nn.Module`):
          Normalization layer.
code: def relprop(self, cam, **kwargs):
      (cam1, cam2) = self.add2.relprop(cam, **kwargs)
      cam2 = self.mlp.relprop(cam2, **kwargs)
      cam2 = self.norm2.relprop(cam2, **kwargs)
      cam = self.clone2.relprop((cam1, cam2), **kwargs)
  
      (cam1, cam2) = self.add1.relprop(cam, **kwargs)
      cam2 = self.attn.relprop(cam2, **kwargs)
      cam2 = self.norm1.relprop(cam2, **kwargs)
      cam = self.clone1.relprop((cam1, cam2), **kwargs)
      return cam
  
file_path: towhee/towhee/models/vit/vit_block.py
imports: from torch import nn
  from towhee.models.layers.attention import MultiHeadAttention
  from towhee.models.layers.droppath import DropPath
  from towhee.models.layers.mlp import Mlp
  from towhee.models.layers.layers_with_relprop import GELU, LayerNorm, Add, Clone
label_desc: Use image node_id 3 for calling the Block obj's underlying member method code with example usage: obj.relprop(cam) and returns: cam