{"record":{"id":"4f5fcb50db0771b3","repo":"keras-team/keras","slug":"unknown-data-format-data-format","errorCode":null,"errorMessage":"Unknown data_format: {data_format}","messagePattern":"Unknown data_format: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/legacy/backend.py","lineNumber":243,"sourceCode":"    if tf.executing_eagerly() or tf.inside_function():\n        for x, value in tuples:\n            value = np.asarray(value, dtype=x.dtype.name)\n            x.assign(value)\n\n\n@keras_export(\"keras._legacy.backend.batch_normalization\")\ndef batch_normalization(x, mean, var, beta, gamma, axis=-1, epsilon=1e-3):\n    \"\"\"DEPRECATED.\"\"\"\n    return tf.nn.batch_normalization(x, mean, var, beta, gamma, epsilon)\n\n\n@keras_export(\"keras._legacy.backend.bias_add\")\ndef bias_add(x, bias, data_format=None):\n    \"\"\"DEPRECATED.\"\"\"\n    if data_format is None:\n        data_format = backend.image_data_format()\n    if data_format not in {\"channels_first\", \"channels_last\"}:\n        raise ValueError(f\"Unknown data_format: {data_format}\")\n    bias_shape = bias.shape\n    if len(bias_shape) != 1 and len(bias_shape) != ndim(x) - 1:\n        raise ValueError(\n            f\"Unexpected bias dimensions {len(bias_shape)}. \"\n            f\"Expected it to be 1 or {ndim(x) - 1} dimensions\"\n        )\n\n    if len(bias_shape) == 1:\n        if data_format == \"channels_first\":\n            return tf.nn.bias_add(x, bias, data_format=\"NCHW\")\n        return tf.nn.bias_add(x, bias, data_format=\"NHWC\")\n    if ndim(x) in (3, 4, 5):\n        if data_format == \"channels_first\":\n            bias_reshape_axis = (1, bias_shape[-1]) + bias_shape[:-1]\n            return x + reshape(bias, bias_reshape_axis)\n        return x + reshape(bias, (1,) + bias_shape)\n    return tf.nn.bias_add(x, bias)\n","sourceCodeStart":225,"sourceCodeEnd":261,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/legacy/backend.py#L225-L261","documentation":"bias_add() from the deprecated Keras backend only accepts the data_format strings 'channels_first' or 'channels_last'. When data_format is None it falls back to the global backend.image_data_format(), so the error means either an explicitly passed bad string or a globally misconfigured image_data_format. Any other value ('NCHW', 'NHWC', 'first', typos) is rejected.","triggerScenarios":"Calling keras._legacy.backend.bias_add(x, bias, data_format='NCHW') or any string outside {'channels_first','channels_last'}; or keras.config.set_image_data_format() having been set to an invalid value earlier in the process.","commonSituations":"Code migrated from TF-speak ('NHWC'/'NCHW') instead of Keras-speak; a config file or notebook cell that set image_data_format to a TensorFlow-style string; copy-pasted layers that pass data_format through unvalidated from user input.","solutions":["Pass 'channels_last' or 'channels_first' explicitly (Keras names, not 'NHWC'/'NCHW')","If you omitted data_format, check what keras.config.image_data_format() returns and reset it with keras.config.set_image_data_format('channels_last')","Map TF-style names before calling: data_format = {'NHWC':'channels_last','NCHW':'channels_first'}[tf_fmt]"],"exampleFix":"// before\nout = K.bias_add(x, b, data_format='NHWC')\n\n// after\nout = K.bias_add(x, b, data_format='channels_last')","handlingStrategy":"type-guard","validationCode":"fmt = data_format if data_format is not None else keras.config.image_data_format()\nassert fmt in ('channels_first', 'channels_last'), f'bad data_format: {fmt!r}'","typeGuard":"def is_valid_data_format(v) -> bool:\n    return v is None or v in {'channels_first', 'channels_last'}","tryCatchPattern":"except ValueError as e:\n    if 'data_format' in str(e):\n        out = K.bias_add(x, bias, data_format='channels_last')\n    else:\n        raise","preventionTips":["Always pass Keras-style data_format strings, never 'NHWC'/'NCHW'","Centralize a tf_to_keras_format() mapping in ported code","Assert keras.config.image_data_format() in test setup"],"tags":["keras","tensorflow","data-format","argument-validation"],"backgroundTag":"invalid-argument-value","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}