{"record":{"id":"5f0c558593badfe2","repo":"Comfy-Org/ComfyUI","slug":"got-params-axes-dim-but-expected-positional-dim-5f0c55","errorCode":null,"errorMessage":"Got {params.axes_dim} but expected positional dim {pe_dim}","messagePattern":"Got (.+?) but expected positional dim (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"critical","filePath":"comfy/ldm/chroma_radiance/model.py","lineNumber":65,"sourceCode":"    \"\"\"\n\n    def __init__(self, image_model=None, final_layer=True, dtype=None, device=None, operations=None, **kwargs):\n        if operations is None:\n            raise RuntimeError(\"Attempt to create ChromaRadiance object without setting operations\")\n        nn.Module.__init__(self)\n        self.dtype = dtype\n        params = ChromaRadianceParams(**kwargs)\n        self.params = params\n        self.patch_size = params.patch_size\n        self.in_channels = params.in_channels\n        self.out_channels = params.out_channels\n        if params.hidden_size % params.num_heads != 0:\n            raise ValueError(\n                f\"Hidden size {params.hidden_size} must be divisible by num_heads {params.num_heads}\"\n            )\n        pe_dim = params.hidden_size // params.num_heads\n        if sum(params.axes_dim) != pe_dim:\n            raise ValueError(f\"Got {params.axes_dim} but expected positional dim {pe_dim}\")\n        self.hidden_size = params.hidden_size\n        self.num_heads = params.num_heads\n        self.in_dim = params.in_dim\n        self.out_dim = params.out_dim\n        self.hidden_dim = params.hidden_dim\n        self.n_layers = params.n_layers\n        self.pe_embedder = EmbedND(dim=pe_dim, theta=params.theta, axes_dim=params.axes_dim)\n        self.img_in_patch = operations.Conv2d(\n            params.in_channels,\n            params.hidden_size,\n            kernel_size=params.patch_size,\n            stride=params.patch_size,\n            bias=True,\n            dtype=dtype,\n            device=device,\n        )\n        self.txt_in = operations.Linear(params.context_in_dim, self.hidden_size, dtype=dtype, device=device)\n        # set as nn identity for now, will overwrite it later.","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy/ldm/chroma_radiance/model.py#L47-L83","documentation":"ChromaRadiance requires sum(axes_dim) == hidden_size // num_heads (pe_dim) for its rotational position embeddings, identical to the Chroma check. axes_dim distributes the per-head dimension across the positional axes (typically two spatial axes plus a time/extra axis in radiance models); an inconsistent sum means RoPE cannot be constructed over the per-head dim. The check runs right after the divisibility check in __init__.","triggerScenarios":"Constructing ChromaRadiance with an axes_dim list whose sum differs from hidden_size // num_heads, e.g. reusing Flux's [16, 56, 56] with a 125-dim head, or editing the spatial axis sizes for higher-resolution radiance output without rebalancing the total.","commonSituations":"Tuning axes_dim for custom resolutions/view counts in radiance generation; porting configs between Chroma and ChromaRadiance; hand-built configs for NeRF-style experiments.","solutions":["Set axes_dim entries so they sum to hidden_size // num_heads","Derive the last axis as pe_dim minus the fixed spatial axes instead of hard-coding all entries","Keep the checkpoint's original axes_dim; do not override it in transformer options"],"exampleFix":"# before\n# hidden_size=3000, num_heads=24 -> pe_dim=125\naxes_dim = [16, 56, 56]  # sum 128 != 125\n\n# after\naxes_dim = [125 - 56 - 56, 56, 56]  # [13, 56, 56], sums to 125","handlingStrategy":"validation","validationCode":"pe_dim = config[\"hidden_size\"] // config[\"num_heads\"]\nif sum(config[\"axes_dim\"]) != pe_dim:\n    spatial = config[\"axes_dim\"][1:]\n    config[\"axes_dim\"] = [pe_dim - sum(spatial)] + spatial","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Do not override axes_dim in transformer options","Keep axes_dim sums locked to pe_dim in any config-editing code"],"tags":["chroma-radiance","rope","positional-encoding","config"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}