{"record":{"id":"c90274562e2c7b41","repo":"huggingface/pytorch-image-models","slug":"features-only-not-implemented-for-vision-transform-c90274","errorCode":null,"errorMessage":"features_only not implemented for Vision Transformer models.","messagePattern":"features_only not implemented for Vision Transformer models\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"timm/models/visformer.py","lineNumber":485,"sourceCode":"            x = self.stage3(x)\n\n        x = self.norm(x)\n        return x\n\n    def forward_head(self, x, pre_logits: bool = False):\n        x = self.global_pool(x)\n        x = self.head_drop(x)\n        return x if pre_logits else self.head(x)\n\n    def forward(self, x):\n        x = self.forward_features(x)\n        x = self.forward_head(x)\n        return x\n\n\ndef _create_visformer(variant, pretrained=False, default_cfg=None, **kwargs):\n    if kwargs.get('features_only', None):\n        raise RuntimeError('features_only not implemented for Vision Transformer models.')\n    model = build_model_with_cfg(Visformer, variant, pretrained, **kwargs)\n    return model\n\n\ndef _cfg(url='', **kwargs):\n    return {\n        'url': url,\n        'num_classes': 1000, 'input_size': (3, 224, 224), 'pool_size': (7, 7),\n        'crop_pct': .9, 'interpolation': 'bicubic', 'fixed_input_size': True,\n        'mean': IMAGENET_DEFAULT_MEAN, 'std': IMAGENET_DEFAULT_STD,\n        'first_conv': 'stem.0', 'classifier': 'head',\n        'license': 'apache-2.0',\n        **kwargs\n    }\n\n\ndefault_cfgs = generate_default_cfgs({\n    'visformer_tiny.in1k': _cfg(hf_hub_id='timm/'),","sourceCodeStart":467,"sourceCodeEnd":503,"githubUrl":"https://github.com/huggingface/pytorch-image-models/blob/9a5261e31b3b5128526eb2658333b4c0a54464ae/timm/models/visformer.py#L467-L503","documentation":"The visformer factories explicitly reject features_only=True because Visformer's feature extraction isn't wired through build_model_with_cfg's feature-only pathway; a RuntimeError (not ValueError) is raised at model creation.","triggerScenarios":"timm.create_model('visformer_tiny', features_only=True) or any visformer_* with features_only in kwargs.","commonSituations":"Generic FPN/segmentation code that blindly passes features_only=True to every backbone in a model zoo.","solutions":["Create the model without features_only and call forward_intermediates() to get intermediate features","Choose a backbone that supports features_only if a feature pyramid API is required"],"exampleFix":"# before\nmodel = timm.create_model('visformer_tiny', features_only=True)\n# after\nmodel = timm.create_model('visformer_tiny', features_only=False)\nfeats = model.forward_intermediates(x, indices=[1, 3, 5, 7])","handlingStrategy":"validation","validationCode":"kwargs.pop('features_only', False) if name.startswith('visformer') else None\nmodel = timm.create_model(name, **kwargs)","typeGuard":"def supports_features_only(name: str) -> bool:\n    return not name.startswith('visformer')","tryCatchPattern":"try:\n    model = timm.create_model(name, features_only=True)\nexcept RuntimeError:\n    model = timm.create_model(name)  # use forward_intermediates instead","preventionTips":["Check timm.features or model capability before passing features_only","Prefer forward_intermediates for transformers needing intermediates"],"tags":["timm","visformer","features-only","unsupported"],"backgroundTag":"unsupported-operation","analyzedSha":"9a5261e31b3b5128526eb2658333b4c0a54464ae","analyzedAt":"2026-08-27T02:34:25.417Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}