class_docstr: The ViT-Adapter
      
code: def _init_weights(self, m):
      if isinstance(m, nn.Linear):
          trunc_normal_init(m.weight, std=0.02)
          if isinstance(m, nn.Linear) and m.bias is not None:
              constant_init(m.bias, value=0)
      elif isinstance(m, nn.LayerNorm) or isinstance(
          m, (nn.BatchNorm2D, nn.SyncBatchNorm)
      ):
          constant_init(m.bias, value=0)
          constant_init(m.weight, value=1.0)
      elif isinstance(m, nn.Conv2D) or isinstance(
          m, nn.Conv2DTranspose
      ):
          fan_out = (
              m._kernel_size[0] * m._kernel_size[1] * m._out_channels
          )
          fan_out //= m._groups
          normal_init(m.weight, std=math.sqrt(2.0 / fan_out))
          if m.bias is not None:
              constant_init(m.bias, value=0)
  
imports: import math
  from functools import partial
  import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager
  from paddleseg.utils import utils, logger
  from paddleseg.cvlibs.param_init import normal_init, trunc_normal_init, constant_init
  from paddleseg.models.backbones.transformer_utils import to_2tuple, DropPath
  from paddleseg.models.layers.vit_adapter_layers import SpatialPriorModule, InteractionBlock, deform_inputs
  from paddleseg.models.layers.ms_deformable_attention import MSDeformAttn
label_desc: Use image node_id 2 for calling the ViTAdapter obj's underlying member method code with example usage: obj._init_weights(m) without return types