{"record":{"id":"d60553954b84776b","repo":"keras-team/keras","slug":"weight-count-mismatch-for-layer-k-named-layer","errorCode":null,"errorMessage":"Weight count mismatch for layer #{k} (named {layer.name} in the current model, {name} in the save file). Layer expects {len(symbolic_weights)} weight(s). Received {len(weight_values)} saved weight(s)","messagePattern":"Weight count mismatch for layer #(.+?) \\(named (.+?) in the current model, (.+?) in the save file\\)\\. Layer expects (.+?) weight\\(s\\)\\. Received (.+?) saved weight\\(s\\)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/legacy/saving/legacy_h5_format.py","lineNumber":387,"sourceCode":"            layer_group, \"weight_names\"\n        )\n        if weight_names:\n            filtered_layer_names.append(name)\n    layer_names = filtered_layer_names\n    if len(layer_names) != len(filtered_layers):\n        raise ValueError(\n            \"Layer count mismatch when loading weights from file. \"\n            f\"Model expected {len(filtered_layers)} layers, found \"\n            f\"{len(layer_names)} saved layers.\"\n        )\n\n    for k, name in enumerate(layer_names):\n        layer_group = safe_get_h5_group(group, name)\n        layer = filtered_layers[k]\n        symbolic_weights = _legacy_weights(layer)\n        weight_values = load_subset_weights_from_hdf5_group(layer_group)\n        if len(weight_values) != len(symbolic_weights):\n            raise ValueError(\n                f\"Weight count mismatch for layer #{k} (named {layer.name} in \"\n                f\"the current model, {name} in the save file). \"\n                f\"Layer expects {len(symbolic_weights)} weight(s). Received \"\n                f\"{len(weight_values)} saved weight(s)\"\n            )\n        _set_weights(\n            layer,\n            symbolic_weights,\n            weight_values,\n            skip_mismatch=skip_mismatch,\n            name=f\"layer #{k} (named {layer.name})\",\n        )\n\n    if \"top_level_model_weights\" in group:\n        symbolic_weights = list(\n            # model.weights\n            v\n            for v in model._trainable_variables + model._non_trainable_variables","sourceCodeStart":369,"sourceCodeEnd":405,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/legacy/saving/legacy_h5_format.py#L369-L405","documentation":"After matching layer #k between file and model, load_weights_from_hdf5_group compares the number of weight tensors in the saved layer group against the layer's symbolic weights. A per-layer count mismatch raises this ValueError naming both the current and saved layer names.","triggerScenarios":"A layer whose weight count changed between save and load: toggling use_bias off, changing units, replacing a layer with a similar one that has fewer/more weights (e.g. BatchNormalization vs LayerNormalization), even when overall layer counts match.","commonSituations":"Fine-tuning setups where layers were rebuilt with different hyperparameters; loading checkpoints across model refactors; loading before model.build so symbolic weights do not exist yet.","solutions":["Align the layer definition with the checkpoint (same use_bias, units, etc.)","Ensure the model is built (call build(input_shape) or run a forward pass) before load_weights","Use by_name=True so only matching layers are loaded and inspect the mismatched layer named in the message"],"exampleFix":"# before\ndense = layers.Dense(64, use_bias=False)  # saved with use_bias=True\nmodel.load_weights('w.h5')\n# after\ndense = layers.Dense(64, use_bias=True)\nmodel.load_weights('w.h5')","handlingStrategy":"validation","validationCode":"model.build(input_shape)  # ensure symbolic weights exist before loading","typeGuard":null,"tryCatchPattern":"try:\n    model.load_weights(p)\nexcept ValueError as e:\n    if 'Weight count mismatch' not in str(e):\n        raise\n    model.load_weights(p, by_name=True)","preventionTips":["Call model.build() before load_weights","Keep layer hyperparameters (use_bias, units) identical to the checkpoint"],"tags":["keras","loading","hdf5","weights","layer-mismatch"],"backgroundTag":"checkpoint-architecture-mismatch","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}