class_docstr: Attention module
  Attention module for ViT, here q, k, v are assumed the same.
  The qkv mappings are stored as one single param.
  Attributes:
      num_heads: number of heads
      attn_head_size: feature dim of single head
      all_head_size: feature dim of all heads
      qkv: a nn.Linear for q, k, v mapping
      scales: 1 / sqrt(single_head_feature_dim)
      out: projection of multi-head attention
      attn_dropout: dropout for attention
      proj_dropout: final dropout before output
      softmax: softmax op for attention
code: def _init_weights(self):
      weight_attr = paddle.ParamAttr(
          initializer=nn.initializer.TruncatedNormal(std=0.02)
      )
      bias_attr = paddle.ParamAttr(
          initializer=nn.initializer.Constant(0.0)
      )
      return weight_attr, bias_attr
  
imports: import copy
  import paddle
  import paddle.nn
  from disco_diffusion_ernievil_base.vit_b_16x.ernievil2.transformers.droppath import DropPath
label_desc: Use image node_id 2 for calling the Attention obj's underlying member method code with example usage: obj._init_weights() and returns: weight_attr,  bias_attr