{"record":{"id":"81ee88bacc6736df","repo":"open-mmlab/mmdetection","slug":"there-is-not-post-norm-in-name-81ee88","errorCode":null,"errorMessage":"There is not post_norm in {name}","messagePattern":"There is not post_norm in (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mmdet/models/layers/transformer/grounding_dino_layers.py","lineNumber":266,"sourceCode":"                query_pos=query_pos,\n                reference_points=reference_points,\n                spatial_shapes=spatial_shapes,\n                level_start_index=level_start_index,\n                key_padding_mask=key_padding_mask)\n        return output, memory_text\n\n\nclass GroundingDinoTransformerDecoder(DinoTransformerDecoder):\n\n    def _init_layers(self) -> None:\n        \"\"\"Initialize decoder layers.\"\"\"\n        self.layers = ModuleList([\n            GroundingDinoTransformerDecoderLayer(**self.layer_cfg)\n            for _ in range(self.num_layers)\n        ])\n        self.embed_dims = self.layers[0].embed_dims\n        if self.post_norm_cfg is not None:\n            raise ValueError('There is not post_norm in '\n                             f'{self._get_name()}')\n        self.ref_point_head = MLP(self.embed_dims * 2, self.embed_dims,\n                                  self.embed_dims, 2)\n        self.norm = nn.LayerNorm(self.embed_dims)\n","sourceCodeStart":248,"sourceCodeEnd":271,"githubUrl":"https://github.com/open-mmlab/mmdetection/blob/cfd5d3a985b0249de009b67d04f37263e11cdf3d/mmdet/models/layers/transformer/grounding_dino_layers.py#L248-L271","documentation":"GroundingDinoTransformerDecoder raises ValueError if post_norm_cfg is not None. Like the deformable decoder, Grounding DINO's decoder handles normalization internally and explicitly rejects a configured post-norm.","triggerScenarios":"Building GroundingDinoTransformerDecoder with a config inherited from a DETR-style base that sets post_norm_cfg (e.g. dict(type='LN')).","commonSituations":"Config inheritance from DETR/DAB-DETR baselines; porting configs between detection transformer variants.","solutions":["Set post_norm_cfg=None in the decoder config","Audit _base_ config files for a stray post_norm_cfg and override it"],"exampleFix":"# before\npost_norm_cfg=dict(type='LN')\n# after\npost_norm_cfg=None","handlingStrategy":"validation","validationCode":"assert decoder_cfg.get('post_norm_cfg', None) is None","typeGuard":null,"tryCatchPattern":null,"preventionTips":["When porting configs between detector families, strip post_norm_cfg for deformable/grounding decoders"],"tags":["mmdet","grounding-dino","transformer","config"],"backgroundTag":"invalid-config-value","analyzedSha":"cfd5d3a985b0249de009b67d04f37263e11cdf3d","analyzedAt":"2026-08-27T20:54:20.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}