code: def _init_weights(self):
      linear_init_(self.qkv)
      linear_init_(self.proj)
  
      if self.use_rel_pos:
          self.rel_pos_h = self.create_parameter(
              [2 * self.window_size - 1, self.head_dim],
              attr=ParamAttr(learning_rate=self.lr_factor),
              default_initializer=Constant(value=0.0),
          )
          self.rel_pos_w = self.create_parameter(
              [2 * self.window_size - 1, self.head_dim],
              attr=ParamAttr(learning_rate=self.lr_factor),
              default_initializer=Constant(value=0.0),
          )
  
          if not self.rel_pos_zero_init:
              TruncatedNormal(self.rel_pos_h, std=0.02)
              TruncatedNormal(self.rel_pos_w, std=0.02)
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  import numpy
  import math
  from paddle import ParamAttr
  from paddle.regularizer import L2Decay
  from paddle.nn.initializer import Constant, TruncatedNormal
  from ppdet.modeling.shape_spec import ShapeSpec
  from ppdet.core.workspace import register, serializable
  from .transformer_utils import zeros_, DropPath, Identity, window_partition, window_unpartition
  from ..initializer import linear_init_
label_desc: Use image node_id 2 for calling the Attention obj's underlying member method code with example usage: obj._init_weights() without return types