{"record":{"id":"d875f695f38a3f54","repo":"huggingface/pytorch-image-models","slug":"cannot-initialize-position-embeddings-without-grid","errorCode":null,"errorMessage":"Cannot initialize position embeddings without grid_size.Please provide img_size or pos_embed_grid_size.","messagePattern":"Cannot initialize position embeddings without grid_size\\.Please provide img_size or pos_embed_grid_size\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"timm/models/naflexvit.py","lineNumber":517,"sourceCode":"            )\n        else:\n            self.patch_interpolator = None\n\n        self.supports_patch_interpolation = bool(\n            self.is_linear\n            and self.patch_interpolator is not None\n            and self.norm_input is None\n        )\n\n        # Create normalization layer after the projection\n        assert not (proj_norm_layer is True and norm_layer is None), \\\n            \"`norm_layer` must be given when proj_norm_layer=True\"\n        proj_norm_layer = norm_layer if proj_norm_layer is True else (proj_norm_layer or None)\n        self.norm = proj_norm_layer(embed_dim) if proj_norm_layer else nn.Identity()\n\n        # Create position embedding if needed - only for patches, never for prefix tokens\n        if pos_embed in ('factorized', 'learned') and self.pos_embed_grid_size is None:\n            raise ValueError(\n                \"Cannot initialize position embeddings without grid_size.\"\n                \"Please provide img_size or pos_embed_grid_size.\")\n        self.pos_embed: Optional[torch.Tensor] = None\n        self.pos_embed_y: Optional[torch.Tensor] = None\n        self.pos_embed_x: Optional[torch.Tensor] = None\n        if not pos_embed or pos_embed == 'none':\n            self.pos_embed_type = 'none'\n        elif pos_embed == 'factorized':\n            assert self.pos_embed_grid_size is not None\n            h, w = self.pos_embed_grid_size\n            self.pos_embed_type = 'factorized'\n            self.pos_embed_y = nn.Parameter(torch.empty(1, h, embed_dim, **dd))\n            self.pos_embed_x = nn.Parameter(torch.empty(1, w, embed_dim, **dd))\n        else:\n            assert self.pos_embed_grid_size is not None\n            h, w = self.pos_embed_grid_size\n            self.pos_embed = nn.Parameter(torch.empty(1, h, w, embed_dim, **dd))\n            self.pos_embed_type = 'learned'","sourceCodeStart":499,"sourceCodeEnd":535,"githubUrl":"https://github.com/huggingface/pytorch-image-models/blob/9a5261e31b3b5128526eb2658333b4c0a54464ae/timm/models/naflexvit.py#L499-L535","documentation":"NaFlexViT requires a known patch grid before it can build factorized or learned position embeddings. If neither img_size nor pos_embed_grid_size is provided, self.pos_embed_grid_size is None and the embedding cannot be initialized, so __init__ aborts.","triggerScenarios":"Creating NaFlexViT (or naflex_vit_* factories / vit with patch_embed capable of dynamic sizes) with pos_embed='factorized' or 'learned' while omitting both img_size and pos_embed_grid_size.","commonSituations":"Switching a config from absolute learned pos_embed with fixed img_size to factorized embeddings and dropping img_size; building NaFlex models from partial YAML configs.","solutions":["Pass img_size=(H, W) so the grid can be derived","Or pass pos_embed_grid_size=(gh, gw) explicitly","Or use pos_embed=None/'none'/'rope' if position info is not needed"],"exampleFix":"# before\nmodel = naflexvit_base(pos_embed='factorized')\n# after\nmodel = naflexvit_base(pos_embed='factorized', pos_embed_grid_size=(16, 16))","handlingStrategy":"validation","validationCode":"if cfg['pos_embed'] in ('factorized', 'learned'):\n    assert cfg.get('img_size') or cfg.get('pos_embed_grid_size'), 'grid size required'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat pos_embed type and grid size as coupled config keys","Always specify img_size when changing pos_embed style"],"tags":["timm","naflexvit","pos-embed","config"],"backgroundTag":"missing-required-config","analyzedSha":"9a5261e31b3b5128526eb2658333b4c0a54464ae","analyzedAt":"2026-08-27T02:34:25.417Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}