{"record":{"id":"27a257133a492b6e","repo":"keras-team/keras","slug":"if-max-tokens-is-set-for-integerlookup-it-mus","errorCode":null,"errorMessage":"If `max_tokens` is set for `IntegerLookup`, it must be greater than 1. Received: max_tokens={max_tokens}","messagePattern":"If `max_tokens` is set for `IntegerLookup`, it must be greater than 1\\. Received: max_tokens=(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/integer_lookup.py","lineNumber":359,"sourceCode":"        vocabulary=None,\n        vocabulary_dtype=\"int64\",\n        idf_weights=None,\n        invert=False,\n        output_mode=\"int\",\n        sparse=False,\n        pad_to_max_tokens=False,\n        oov_method=\"floormod\",\n        salt=None,\n        name=None,\n        **kwargs,\n    ):\n        if not tf.available:\n            raise ImportError(\n                \"Layer IntegerLookup requires TensorFlow. \"\n                \"Install it via `pip install tensorflow`.\"\n            )\n        if max_tokens is not None and max_tokens <= 1:\n            raise ValueError(\n                \"If `max_tokens` is set for `IntegerLookup`, it must be \"\n                f\"greater than 1. Received: max_tokens={max_tokens}\"\n            )\n        if num_oov_indices < 0:\n            raise ValueError(\n                \"The value of `num_oov_indices` argument for `IntegerLookup` \"\n                \"must >= 0. Received: num_oov_indices=\"\n                f\"{num_oov_indices}\"\n            )\n        if sparse and backend.backend() != \"tensorflow\":\n            raise ValueError(\n                \"`sparse=True` can only be used with the TensorFlow backend.\"\n            )\n        if vocabulary_dtype != \"int64\":\n            raise ValueError(\n                \"Only `vocabulary_dtype='int64'` is supported \"\n                \"at this time. Received: \"\n                f\"vocabulary_dtype={vocabulary_dtype}\"","sourceCodeStart":341,"sourceCodeEnd":377,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/integer_lookup.py#L341-L377","documentation":"IntegerLookup requires max_tokens > 1 because at least one OOV slot plus one real token must fit; a value of 1 or less makes the lookup meaningless. The check runs in __init__ before any other setup.","triggerScenarios":"Passing max_tokens=1, 0, or a negative number to keras.layers.IntegerLookup(); computing max_tokens from data (e.g. number of unique values) that turns out to be <=1.","commonSituations":"Config files with placeholder max_tokens=1; dynamically sized layers over very low-cardinality integer features.","solutions":["Set max_tokens to at least 2 (num_oov_indices + at least one vocabulary slot)","Leave max_tokens=None to let the layer size itself from adapt()","Validate computed caps: max_tokens = max(2, num_unique + num_oov_indices)"],"exampleFix":"// before\nlayer = IntegerLookup(max_tokens=1)\n// after\nlayer = IntegerLookup(max_tokens=None)  # or >= 2","handlingStrategy":"validation","validationCode":"if max_tokens is not None:\n    assert max_tokens > 1, 'max_tokens must be > 1'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Clamp computed caps: max(2, n)","Omit max_tokens to let adapt size the layer"],"tags":["keras","argument-validation","integer-lookup"],"backgroundTag":"invalid-argument-value","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}