huggingface/pytorch-image-models · error · RuntimeError
features_only not implemented for ConvMixer models.
Error message
features_only not implemented for ConvMixer models.
What it means
ConvMixer factory functions reject features_only=True. ConvMixer is a stack of identical conv+patch-embed blocks without hierarchical stages, so it does not register the feature_locations needed by timm's feature extraction wrapper; _create_convmixer raises immediately.
Source
Thrown at timm/models/convmixer.py:114
x = checkpoint_seq(self.blocks, x)
else:
x = self.blocks(x)
return x
def forward_head(self, x, pre_logits: bool = False):
x = self.pooling(x)
x = self.head_drop(x)
return x if pre_logits else self.head(x)
def forward(self, x):
x = self.forward_features(x)
x = self.forward_head(x)
return x
def _create_convmixer(variant, pretrained=False, **kwargs):
if kwargs.get('features_only', None):
raise RuntimeError('features_only not implemented for ConvMixer models.')
return build_model_with_cfg(ConvMixer, variant, pretrained, **kwargs)
def _cfg(url='', **kwargs):
return {
'url': url,
'num_classes': 1000, 'input_size': (3, 224, 224), 'pool_size': None,
'crop_pct': .96, 'interpolation': 'bicubic',
'mean': IMAGENET_DEFAULT_MEAN, 'std': IMAGENET_DEFAULT_STD, 'classifier': 'head',
'first_conv': 'stem.0', 'license': 'mit',
**kwargs
}
default_cfgs = generate_default_cfgs({
'convmixer_1536_20.in1k': _cfg(hf_hub_id='timm/'),
'convmixer_768_32.in1k': _cfg(hf_hub_id='timm/'),View on GitHub (pinned to 9a5261e31b)
Solutions
- Drop features_only and use forward_intermediates to obtain intermediate ConvMixer block outputs
- If true multi-scale maps are needed, choose a hierarchical backbone (e.g. ResNet, ConvNeXt, EfficientNet)
- Register a custom feature_cfgs via timm's build_model_with_cfg escape hatch only if you fully control the wrapper
Example fix
# before
model = timm.create_model('convmixer_1536_20', features_only=True)
# after
model = timm.create_model('convmixer_1536_20')
feats = model.forward_intermediates(x, indices=[5, 10, 15, 19]) Defensive patterns
Strategy: validation
Validate before calling
import timm
m = timm.create_model('convmixer_1024_20_ks9_p14')
assert not hasattr(m, 'feature_info'), 'no feature_info; do not pass features_only'
model = timm.create_model('convmixer_1024_20_ks9_p14') Type guard
def supports_features_only(name: str) -> bool:
import timm
m = timm.create_model(name)
ok = hasattr(m, 'feature_info')
del m
return ok Try / catch
try:
model = timm.create_model(variant, features_only=True)
except RuntimeError:
model = timm.create_model(variant) Prevention
- Validate features_only support before construction
- Use forward_intermediates for uniform feature APIs
- Keep a backbone allowlist for detection/segmentation training
When it happens
Trigger: Calling timm.create_model('convmixer_1024_20_ks9_p14', features_only=True) (or the 1536/768 variants) with features_only truthy.
Common situations: Reuse of detection/segmentation scaffold code that unconditionally sets features_only=True; assuming feature-extraction support is uniform across timm models.
Related errors
- features_only not implemented for Vision Transformer models.
- features_only not implemented for Vision Transformer models.
- features_only not implemented for Vision Transformer models.
- Gemma4VitEncoder does not support classification use cases.
- MobileNetV5Encoder does not support classification use cases
AI-assisted analysis of huggingface/pytorch-image-models@9a5261e31b (2026-08-27).
Data as JSON: /api/errors/a22f47aee51040b5.
Report an issue: GitHub.