open-mmlab/mmdetection · error · ValueError
There is not post_norm in {name}
Error message
There is not post_norm in {name} What it means
DeformableDetrTransformerDecoder raises ValueError if post_norm_cfg is not None. Deformable DETR's decoder applies norm per-layer and does not support an extra post-norm, so the config explicitly forbids it.
Source
Thrown at mmdet/models/layers/transformer/deformable_detr_layers.py:132
reference_points_list.append(ref)
reference_points = torch.cat(reference_points_list, 1)
# [bs, sum(hw), num_level, 2]
reference_points = reference_points[:, :, None] * valid_ratios[:, None]
return reference_points
class DeformableDetrTransformerDecoder(DetrTransformerDecoder):
"""Transformer Decoder of Deformable DETR."""
def _init_layers(self) -> None:
"""Initialize decoder layers."""
self.layers = ModuleList([
DeformableDetrTransformerDecoderLayer(**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()}')
def forward(self,
query: Tensor,
query_pos: Tensor,
value: Tensor,
key_padding_mask: Tensor,
reference_points: Tensor,
spatial_shapes: Tensor,
level_start_index: Tensor,
valid_ratios: Tensor,
reg_branches: Optional[nn.Module] = None,
**kwargs) -> Tuple[Tensor]:
"""Forward function of Transformer decoder.
Args:
query (Tensor): The input queries, has shape (bs, num_queries,
dim).View on GitHub (pinned to cfd5d3a985)
Solutions
- Set post_norm_cfg=None in the deformable decoder transformer config
- Check config inheritance (_base_) for a post_norm_cfg key that leaks in and override it
Example fix
# before post_norm_cfg=dict(type='LN') # after post_norm_cfg=None
Defensive patterns
Strategy: validation
Validate before calling
assert cfg.get('post_norm_cfg', None) is None, 'DeformableDetr decoder forbids post_norm_cfg' Prevention
- Diff inherited config dicts for post_norm_cfg before building
- Use print_cfg to inspect the resolved config
When it happens
Trigger: Building a DeformableDetrTransformerDecoder with a config that includes a post_norm_cfg entry (e.g. dict(type='LN')) instead of None/setting it to None.
Common situations: Porting DETR or DAB-DETR configs (which do use post_norm) into a Deformable DETR pipeline; config inheritance that leaves post_norm_cfg set from a base config.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- Unknown query_scale_type: {}
- There is not post_norm in {name}
- Invalid text mode "{self.text_mode}".
- The type of frame_range must be int or list.
- results does not contain masks.
AI-assisted analysis of open-mmlab/mmdetection@cfd5d3a985 (2026-08-27).
Data as JSON: /api/errors/81c1de0e67ad4028.
Report an issue: GitHub.