{"record":{"id":"538d712e455fe527","repo":"XingangPan/DragGAN","slug":"unknown-tensorflow-kwarg","errorCode":null,"errorMessage":"Unknown TensorFlow kwarg","messagePattern":"Unknown TensorFlow kwarg","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"legacy.py","lineNumber":155,"sourceCode":"            num_layers      = kwarg('mapping_layers',       8),\n            embed_features  = kwarg('label_fmaps',          None),\n            layer_features  = kwarg('mapping_fmaps',        None),\n            activation      = kwarg('mapping_nonlinearity', 'lrelu'),\n            lr_multiplier   = kwarg('mapping_lrmul',        0.01),\n            w_avg_beta      = kwarg('w_avg_beta',           0.995,  none=1),\n        ),\n    )\n\n    # Check for unknown kwargs.\n    kwarg('truncation_psi')\n    kwarg('truncation_cutoff')\n    kwarg('style_mixing_prob')\n    kwarg('structure')\n    kwarg('conditioning')\n    kwarg('fused_modconv')\n    unknown_kwargs = list(set(tf_kwargs.keys()) - known_kwargs)\n    if len(unknown_kwargs) > 0:\n        raise ValueError('Unknown TensorFlow kwarg', unknown_kwargs[0])\n\n    # Collect params.\n    tf_params = _collect_tf_params(tf_G)\n    for name, value in list(tf_params.items()):\n        match = re.fullmatch(r'ToRGB_lod(\\d+)/(.*)', name)\n        if match:\n            r = kwargs.img_resolution // (2 ** int(match.group(1)))\n            tf_params[f'{r}x{r}/ToRGB/{match.group(2)}'] = value\n            kwargs.synthesis.kwargs.architecture = 'orig'\n    #for name, value in tf_params.items(): print(f'{name:<50s}{list(value.shape)}')\n\n    # Convert params.\n    G = network_class(**kwargs).eval().requires_grad_(False)\n    # pylint: disable=unnecessary-lambda\n    # pylint: disable=f-string-without-interpolation\n    _populate_module_params(G,\n        r'mapping\\.w_avg',                                  lambda:     tf_params[f'dlatent_avg'],\n        r'mapping\\.embed\\.weight',                          lambda:     tf_params[f'mapping/LabelEmbed/weight'].transpose(),","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/XingangPan/DragGAN/blob/336f120ce126aca6f55dc58537e76c10d19eabd0/legacy.py#L137-L173","documentation":"Same version guard as the generator, but in legacy.convert_tf_discriminator: TF discriminator pickles must have version >= 4 to be convertible to the PyTorch Discriminator class. Older discriminator classes (StyleGAN v1 etc.) have different param naming (no dlatent/FromRGB layout assumed here) and are rejected.","triggerScenarios":"Calling convert_tf_discriminator (usually via legacy.load_network_pickle with a TF pickle) where tf_D.version < 4 — e.g. the D pickle from the original stylegan repo.","commonSituations":"Porting old TF experiments' discriminator checkpoints; re-serialized pickles where version was not preserved; mixed checkpoints (new G with old D).","solutions":["Use discriminator pickles exported by the stylegan2(-ada) TF repos with version >= 4","Re-save the TF D network with version bumped only after verifying kwargs/params match the v4 layout","Load already-converted PyTorch .pkl files","If converting an old D is required, write a custom converter mirroring convert_tf_discriminator"],"exampleFix":"# before\nD = legacy.convert_tf_discriminator(old_stylegan1_D)  # ValueError\n\n# after\nD = legacy.convert_tf_discriminator(stylegan2_D)  # version >= 4\n# or skip: D = legacy.load_network_pickle('stylegan2-ffhq-1024x1024.pkl').D","handlingStrategy":"validation","validationCode":"if getattr(tf_D, 'version', 0) < 4:\n    raise ValueError('Needs a version>=4 TF discriminator pickle')","typeGuard":"def is_convertible_tf_discriminator(tf_D) -> bool:\n    return getattr(tf_D, 'version', 0) >= 4","tryCatchPattern":"try:\n    D = legacy.convert_tf_discriminator(tf_D)\nexcept ValueError as e:\n    if 'version too low' in str(e):\n        # obtain v4 D pickle or custom-convert\n        ...\n    raise","preventionTips":["Use StyleGAN2-era discriminator pickles only","Pair G and D from the same export batch","Load native PyTorch checkpoints when available"],"tags":["stylegan2","tensorflow","pickle","version-mismatch","model-conversion"],"backgroundTag":"unsupported-checkpoint-version","analyzedSha":"336f120ce126aca6f55dc58537e76c10d19eabd0","analyzedAt":"2026-08-27T06:29:00.251Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}