class_docstr: Implements decoder layer in Conditional DETR transformer.
class_docstr_tok: ["Implements","decoder","layer","in","Conditional","DETR","transformer","."]
docstr: Initialize self-attention, cross-attention, FFN, and
  normalization.
docstr_tok: ["Initialize","self-attention",",","cross-attention",",","FFN",",","and","normalization","."]
code: def _init_layers(self):
      """Initialize self-attention, cross-attention, FFN, and
      normalization."""
      self.self_attn = ConditionalAttention(**self.self_attn_cfg)
      self.cross_attn = ConditionalAttention(**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(3)
      ]
      self.norms = ModuleList(norms_list)
  
file_path: mmdetection/mmdet/models/layers/transformer/conditional_detr_layers.py
imports: import torch
  from mmcv.cnn import build_norm_layer
  from mmcv.cnn.bricks.transformer import FFN
  from torch import Tensor
  from torch.nn import ModuleList
  from .detr_layers import DetrTransformerDecoder, DetrTransformerDecoderLayer
  from .utils import MLP, ConditionalAttention, coordinate_to_encoding
label_desc: Use image node_id 1 for calling the ConditionalDetrTransformerDecoderLayer obj's underlying member method code with example usage: obj._init_layers() without return types