class_docstr: MultiScaleBlock for mvit
class_docstr_tok: ["MultiScaleBlock","for","mvit"]
code: def relprop(self, cam, **kwargs):
      thw = kwargs.pop("thw")
      if self.dim != self.dim_out:
          (cam1, cam2) = self.add2.relprop(cam, **kwargs)
          cam_norm1 = self.proj.relprop(cam1, **kwargs)
          cam_norm2 = self.mlp.relprop(cam2, **kwargs)
          cam_norm = self.clone_norm.relprop(
              (cam_norm2, cam_norm1), **kwargs
          )
          cam = self.norm2.relprop(cam_norm, **kwargs)
      else:
          (cam1, cam2) = self.add2.relprop(cam, **kwargs)
          cam_norm = self.mlp.relprop(cam2, **kwargs)
          cam2 = self.norm2.relprop(cam_norm, **kwargs)
          cam = self.clone2.relprop((cam1, cam2), **kwargs)
      (cam1, cam2) = self.add1.relprop(cam, **kwargs)
      cam1, _ = self.atn_pool.relprop(cam1, thw=thw, **kwargs)
      cam2, input_thw = self.attn.relprop(cam2, thw=thw, **kwargs)
      cam2 = self.norm1.relprop(cam2, **kwargs)
      cam = self.clone1.relprop((cam1, cam2), **kwargs)
      return cam, input_thw
  
imports: import math
  from functools import partial
  from typing import Tuple, List
  import numpy
  import torch
  from torch import nn
  from torch.nn.init import trunc_normal_
  from einops import rearrange
  from towhee.models.layers.layers_with_relprop import GELU, Linear, Dropout, Conv2d, Conv3d, Softmax, Sigmoid, LayerNorm, Einsum, Add, Clone, MaxPool3d, IndexSelect
label_desc: Use image node_id 3 for calling the MultiScaleBlock obj's underlying member method code with example usage: obj.relprop(cam) and returns: cam,  input_thw