{"record":{"id":"5d31d9b63ba5a99d","repo":"lllyasviel/ControlNet","slug":"parameterization-self-parameterization-not-yet-s","errorCode":null,"errorMessage":"Parameterization {self.parameterization} not yet supported","messagePattern":"Parameterization (.+?) not yet supported","errorType":"validation","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"ldm/models/diffusion/ddpm.py","lineNumber":395,"sourceCode":"        else:\n            raise NotImplementedError(\"unknown loss type '{loss_type}'\")\n\n        return loss\n\n    def p_losses(self, x_start, t, noise=None):\n        noise = default(noise, lambda: torch.randn_like(x_start))\n        x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise)\n        model_out = self.model(x_noisy, t)\n\n        loss_dict = {}\n        if self.parameterization == \"eps\":\n            target = noise\n        elif self.parameterization == \"x0\":\n            target = x_start\n        elif self.parameterization == \"v\":\n            target = self.get_v(x_start, noise, t)\n        else:\n            raise NotImplementedError(f\"Parameterization {self.parameterization} not yet supported\")\n\n        loss = self.get_loss(model_out, target, mean=False).mean(dim=[1, 2, 3])\n\n        log_prefix = 'train' if self.training else 'val'\n\n        loss_dict.update({f'{log_prefix}/loss_simple': loss.mean()})\n        loss_simple = loss.mean() * self.l_simple_weight\n\n        loss_vlb = (self.lvlb_weights[t] * loss).mean()\n        loss_dict.update({f'{log_prefix}/loss_vlb': loss_vlb})\n\n        loss = loss_simple + self.original_elbo_weight * loss_vlb\n\n        loss_dict.update({f'{log_prefix}/loss': loss})\n\n        return loss, loss_dict\n\n    def forward(self, x, *args, **kwargs):","sourceCodeStart":377,"sourceCodeEnd":413,"githubUrl":"https://github.com/lllyasviel/ControlNet/blob/ed85cd1e25a5ed592f7d8178495b4483de0331bf/ldm/models/diffusion/ddpm.py#L377-L413","documentation":"p_losses must know what the model predicts: 'eps' (noise), 'x0' (clean data), or 'v' (velocity parameterization). An unrecognized parameterization string in the config raises NotImplementedError before loss computation.","triggerScenarios":"Running training/inference with parameters.parameterization set to anything other than 'eps', 'x0', or 'v' (e.g. 'epsilon', 'v-pred', or None).","commonSituations":"Copying configs from v-prediction forks with different naming; hand-merging YAML configs; older configs omitting parameterization while code requires an exact known string.","solutions":["Set parameterization: eps (standard), x0, or v in the diffusion config","If the key is missing in an old config, add it explicitly rather than relying on defaults","For a new parameterization, extend p_losses with your target computation"],"exampleFix":"# before\nparameterization: epsilon\n# after\nparameterization: eps","handlingStrategy":"validation","validationCode":"assert parameterization in ('eps', 'x0', 'v'), f\"unsupported parameterization {parameterization!r}\"","typeGuard":"def is_valid_parameterization(p: str) -> bool:\n    return p in ('eps', 'x0', 'v')","tryCatchPattern":null,"preventionTips":["Pin exact option strings in config templates","Add explicit parameterization to legacy configs rather than relying on defaults"],"tags":["diffusion","parameterization","training","config"],"backgroundTag":"unsupported-config-option","analyzedSha":"ed85cd1e25a5ed592f7d8178495b4483de0331bf","analyzedAt":"2026-08-27T12:58:54.167Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}