open-mmlab/mmdetection · error · NotImplementedError
Unknown query_scale_type: {}
Error message
Unknown query_scale_type: {} What it means
DABDetrTransformerDecoder's _init_layers only supports query_scale_type values 'cond_elewise', 'cond_scalar', and 'fix_elewise'. Any other value raises NotImplementedError at construction time, before any training occurs.
Source
Thrown at mmdet/models/layers/transformer/dab_detr_layers.py:150
]
self.layers = ModuleList([
DABDetrTransformerDecoderLayer(**self.layer_cfg)
for _ in range(self.num_layers)
])
embed_dims = self.layers[0].embed_dims
self.embed_dims = embed_dims
self.post_norm = build_norm_layer(self.post_norm_cfg, embed_dims)[1]
if self.query_scale_type == 'cond_elewise':
self.query_scale = MLP(embed_dims, embed_dims, embed_dims, 2)
elif self.query_scale_type == 'cond_scalar':
self.query_scale = MLP(embed_dims, embed_dims, 1, 2)
elif self.query_scale_type == 'fix_elewise':
self.query_scale = nn.Embedding(self.num_layers, embed_dims)
else:
raise NotImplementedError('Unknown query_scale_type: {}'.format(
self.query_scale_type))
self.ref_point_head = MLP(self.query_dim // 2 * embed_dims, embed_dims,
embed_dims, 2)
if self.with_modulated_hw_attn and self.query_dim == 4:
self.ref_anchor_head = MLP(embed_dims, embed_dims, 2, 2)
self.keep_query_pos = self.layers[0].keep_query_pos
if not self.keep_query_pos:
for layer_id in range(self.num_layers - 1):
self.layers[layer_id + 1].cross_attn.qpos_proj = None
def forward(self,
query: Tensor,
key: Tensor,
query_pos: Tensor,
key_pos: Tensor,View on GitHub (pinned to cfd5d3a985)
Solutions
- Set query_scale_type to one of 'cond_elewise' (default), 'cond_scalar', or 'fix_elewise'
- Check for typos in the key/value in the model config dict
Example fix
// before query_scale_type='fix_scalar' // after query_scale_type='cond_elewise'
Defensive patterns
Strategy: validation
Validate before calling
assert query_scale_type in ('cond_elewise', 'cond_scalar', 'fix_elewise'), query_scale_type Prevention
- Pin mmdet version and read its DABDetrTransformerDecoder source for valid options
- Copy canonical DAB-DETR configs from mmdet's config zoo
When it happens
Trigger: Building a DAB-DETR model (DABDetrTransformerDecoder) with query_scale_type set to something like 'fix_scalar', 'constant', '', or omitted but with a typo in the config key.
Common situations: Adapting DAB-DETR configs from papers or other repos where the query_scale_type naming differs; hand-editing transformer decoder configs and guessing valid values.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- {kernel} kernel is not supported in matrix nms!
- There is not post_norm in {name}
- There is not post_norm in {name}
- Invalid text mode "{self.text_mode}".
- The type of frame_range must be int or list.
AI-assisted analysis of open-mmlab/mmdetection@cfd5d3a985 (2026-08-27).
Data as JSON: /api/errors/4c028c6ff9a1874c.
Report an issue: GitHub.