{"record":{"id":"44bc59d953dbd2f7","repo":"lllyasviel/Fooocus","slug":"invalid-distribution-distribution","errorCode":null,"errorMessage":"invalid distribution {distribution}","messagePattern":"invalid distribution (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"ldm_patched/pfn/architecture/timm/weight_init.py","lineNumber":124,"sourceCode":"        denom = fan_in\n    elif mode == \"fan_out\":\n        denom = fan_out\n    elif mode == \"fan_avg\":\n        denom = (fan_in + fan_out) / 2\n\n    variance = scale / denom  # type: ignore\n\n    if distribution == \"truncated_normal\":\n        # constant is stddev of standard normal truncated to (-2, 2)\n        trunc_normal_tf_(tensor, std=math.sqrt(variance) / 0.87962566103423978)\n    elif distribution == \"normal\":\n        tensor.normal_(std=math.sqrt(variance))\n    elif distribution == \"uniform\":\n        bound = math.sqrt(3 * variance)\n        # pylint: disable=invalid-unary-operand-type\n        tensor.uniform_(-bound, bound)\n    else:\n        raise ValueError(f\"invalid distribution {distribution}\")\n\n\ndef lecun_normal_(tensor):\n    variance_scaling_(tensor, mode=\"fan_in\", distribution=\"truncated_normal\")\n","sourceCodeStart":106,"sourceCodeEnd":129,"githubUrl":"https://github.com/lllyasviel/Fooocus/blob/ae05379cc97bc4361ec8b4ec90193dab21be763f/ldm_patched/pfn/architecture/timm/weight_init.py#L106-L129","documentation":"variance_scaling_ in the vendored timm weight-init helper initializes a tensor with fan-based variance using one of three distributions: 'truncated_normal', 'normal', or 'uniform'. An unrecognized distribution string falls through the if/elif chain and raises ValueError(f\"invalid distribution {distribution}\"). This runs at model weight-initialization time, before any training/inference.","triggerScenarios":"Calling variance_scaling_(w, mode=..., distribution='trunc_normal') (missing final 'ed'), 'gaussian', 'xavier', or any non-listed string; or calling the related _init_vit_weights / init helpers with a bad distribution argument.","commonSituations":"Copying init code from another timm version where distribution names differ, or hand-rolling a custom init for a CodeFormer/pfn face model that routes into this helper.","solutions":["Use one of the exact strings: 'truncated_normal', 'normal', or 'uniform'.","For truncated normal you can also call trunc_normal_(tensor, std=...) or lecun_normal_ directly instead of variance_scaling_.","Print/validate the distribution value before init when it comes from a config file."],"exampleFix":"# before\nvariance_scaling_(w, mode='fan_in', distribution='trunc_normal')\n# after\nvariance_scaling_(w, mode='fan_in', distribution='truncated_normal')","handlingStrategy":"validation","validationCode":"DISTRIBUTIONS = ('truncated_normal', 'normal', 'uniform')\nif distribution not in DISTRIBUTIONS:\n    raise ValueError(f'distribution must be one of {DISTRIBUTIONS}, got {distribution!r}')","typeGuard":"def is_valid_distribution(v) -> bool:\n    return v in ('truncated_normal', 'normal', 'uniform')","tryCatchPattern":null,"preventionTips":["Prefer the named helpers (trunc_normal_, lecun_normal_) over variance_scaling_ with a string argument.","Validate init config strings once at config-load time, not deep inside model building."],"tags":["pytorch","weight-init","timm","constructor-validation"],"backgroundTag":null,"analyzedSha":"ae05379cc97bc4361ec8b4ec90193dab21be763f","analyzedAt":"2026-08-15T04:23:59.533Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}