docstr: Initialize self_attn, cross-attn, ffn, and norms.
docstr_tok: ["Initialize","self_attn",",","cross-attn",",","ffn",",","and","norms","."]
code: def _init_layers(self) -> None:
      """Initialize self_attn, cross-attn, ffn, and norms."""
      self.self_attn = MultiheadAttention(**self.self_attn_cfg)
      self.cross_attn_text = MultiheadAttention(
          **self.cross_attn_text_cfg
      )
      self.cross_attn = MultiScaleDeformableAttention(
          **self.cross_attn_cfg
      )
      self.embed_dims = self.self_attn.embed_dims
      self.ffn = FFN(**self.ffn_cfg)
      norms_list = [
          build_norm_layer(self.norm_cfg, self.embed_dims)[1]
          for _ in range(4)
      ]
      self.norms = ModuleList(norms_list)
  
imports: import torch
  import torch.nn
  from mmcv.cnn import build_norm_layer
  from mmcv.cnn.bricks.transformer import FFN, MultiheadAttention
  from mmcv.ops import MultiScaleDeformableAttention
  from mmengine.model import ModuleList
  from torch import Tensor
  from mmdet.models.utils.vlfuse_helper import SingleScaleBiAttentionBlock
  from mmdet.utils import ConfigType, OptConfigType
  from .deformable_detr_layers import DeformableDetrTransformerDecoderLayer, DeformableDetrTransformerEncoder, DeformableDetrTransformerEncoderLayer
  from .detr_layers import DetrTransformerEncoderLayer
  from .dino_layers import DinoTransformerDecoder
  from .utils import MLP, get_text_sine_pos_embed
label_desc: Use image node_id 2 for calling the GroundingDinoTransformerDecoderLayer obj's underlying member method code with example usage: obj._init_layers() without return types