docstr: Initialize decoder layers.
docstr_tok: ["Initialize","decoder","layers","."]
code: def _init_layers(self) -> None:
      """Initialize decoder layers."""
      self.layers = ModuleList(
          [
              GroundingDinoTransformerDecoderLayer(**self.layer_cfg)
              for _ in range(self.num_layers)
          ]
      )
      self.embed_dims = self.layers[0].embed_dims
      if self.post_norm_cfg is not None:
          raise ValueError(
              "There is not post_norm in " f"{self._get_name()}"
          )
      self.ref_point_head = MLP(
          self.embed_dims * 2, self.embed_dims, self.embed_dims, 2
      )
      self.norm = nn.LayerNorm(self.embed_dims)
  
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 1 for calling the GroundingDinoTransformerDecoder obj's underlying member method code with example usage: obj._init_layers() without return types