{"record":{"id":"f2567417c235994e","repo":"huggingface/pytorch-image-models","slug":"unsupported-model-mode","errorCode":null,"errorMessage":"Unsupported model {mode}","messagePattern":"Unsupported model (.+?)","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"timm/models/mvitv2.py","lineNumber":291,"sourceCode":"                    padding=padding_kv,\n                    groups=dim_conv,\n                    bias=False,\n                    **dd,\n                )\n                self.norm_k = norm_layer(dim_conv, **dd)\n                self.pool_v = nn.Conv2d(\n                    dim_conv,\n                    dim_conv,\n                    kernel_kv,\n                    stride=stride_kv,\n                    padding=padding_kv,\n                    groups=dim_conv,\n                    bias=False,\n                    **dd,\n                )\n                self.norm_v = norm_layer(dim_conv, **dd)\n        else:\n            raise NotImplementedError(f\"Unsupported model {mode}\")\n\n        # relative pos embedding\n        self.rel_pos_type = rel_pos_type\n        if self.rel_pos_type == 'spatial':\n            assert feat_size[0] == feat_size[1]\n            size = feat_size[0]\n            q_size = size // stride_q[1] if len(stride_q) > 0 else size\n            kv_size = size // stride_kv[1] if len(stride_kv) > 0 else size\n            rel_sp_dim = 2 * max(q_size, kv_size) - 1\n\n            self.rel_pos_h = nn.Parameter(torch.zeros(rel_sp_dim, self.head_dim, **dd))\n            self.rel_pos_w = nn.Parameter(torch.zeros(rel_sp_dim, self.head_dim, **dd))\n            trunc_normal_tf_(self.rel_pos_h, std=0.02)\n            trunc_normal_tf_(self.rel_pos_w, std=0.02)\n\n        self.residual_pooling = residual_pooling\n\n    def forward(self, x, feat_size: List[int]):","sourceCodeStart":273,"sourceCodeEnd":309,"githubUrl":"https://github.com/huggingface/pytorch-image-models/blob/9a5261e31b3b5128526eb2658333b4c0a54464ae/timm/models/mvitv2.py#L273-L309","documentation":"MViTv2's patch embedding supports several modes (e.g. 'sweep' / 'max' overlapping-window aggregation, and plain conv) selected by the mode argument; any other string falls through to NotImplementedError(f'Unsupported model {mode}') at construction time.","triggerScenarios":"Building mvitv2 or the PatchEmbedding class directly with mode set to an unrecognized value (typo like 'avg', 'pool', or empty string), typically in custom configs.","commonSituations":"Porting MViTv2 configs from another repo where mode names differ; hand-editing video/backbone YAML; whitespace or case differences ('Sweep' vs 'sweep') in config-driven mode names.","solutions":["Use one of the supported modes declared in the branches above line 291 (check timm/models/mvitv2.py, typically 'sweep' or 'max')","Create the model through mvitv2_tiny/small/base/base_224 factories, which set mode correctly","Normalize/validate config strings (strip, lower-case) before passing to the constructor"],"exampleFix":"# before\nembed = PatchEmbedding(..., mode='avg')\n# after\nembed = PatchEmbedding(..., mode='max')","handlingStrategy":"validation","validationCode":"allowed_modes = {'sweep', 'max'}  # per timm.models.mvitv2 branches\nmode = cfg.get('mode', 'sweep').strip().lower()\nassert mode in allowed_modes, f'unsupported mvitv2 patch-embed mode: {mode}'\nembed = PatchEmbedding(..., mode=mode)","typeGuard":"def is_valid_mvitv2_mode(mode: str) -> bool:\n    return isinstance(mode, str) and mode.strip().lower() in {'sweep', 'max'}","tryCatchPattern":"try:\n    model = timm.create_model('mvitv2_small', **cfg)\nexcept NotImplementedError as e:\n    if 'Unsupported model' in str(e):\n        cfg['mode'] = 'sweep'\n        model = timm.create_model('mvitv2_small', **cfg)\n    else:\n        raise","preventionTips":["Normalize enum-like strings (strip/lower) from configs before use","Prefer factory functions over direct class construction","Pin the timm version and read supported modes from its source"],"tags":["timm","mvitv2","constructor","unsupported-operation"],"backgroundTag":"invalid-enum-argument","analyzedSha":"9a5261e31b3b5128526eb2658333b4c0a54464ae","analyzedAt":"2026-08-27T02:34:25.417Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}