keras-team/keras · error · TypeError
Unrecognized keyword arguments: {str(kwargs)}
Error message
Unrecognized keyword arguments: {str(kwargs)} What it means
The legacy Tokenizer __init__ accepts only a fixed set of keyword arguments; after handling the deprecated nb_words alias and popping document_count, any remaining kwargs raise TypeError listing the offending names, so misspelled or removed arguments are never silently ignored.
Source
Thrown at keras/src/legacy/preprocessing/text.py:105
num_words=None,
filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n',
lower=True,
split=" ",
char_level=False,
oov_token=None,
analyzer=None,
**kwargs,
):
# Legacy support
if "nb_words" in kwargs:
warnings.warn(
"The `nb_words` argument in `Tokenizer` "
"has been renamed `num_words`."
)
num_words = kwargs.pop("nb_words")
document_count = kwargs.pop("document_count", 0)
if kwargs:
raise TypeError(f"Unrecognized keyword arguments: {str(kwargs)}")
self.word_counts = collections.OrderedDict()
self.word_docs = collections.defaultdict(int)
self.filters = filters
self.split = split
self.lower = lower
self.num_words = num_words
self.document_count = document_count
self.char_level = char_level
self.oov_token = oov_token
self.index_docs = collections.defaultdict(int)
self.word_index = {}
self.index_word = {}
self.analyzer = analyzer
def fit_on_texts(self, texts):
for text in texts:
self.document_count += 1View on GitHub (pinned to 7a34a03db6)
Solutions
- Fix each name printed in the message against the real signature (num_words, filters, lower, split, char_level, oov_token, document_count, analyzer)
- Replace nb_words with num_words (only that alias is auto-handled)
- Drop arguments removed in this Keras version
Example fix
# before Tokenizer(num_word=5000, lower=True) # after Tokenizer(num_words=5000, lower=True)
Defensive patterns
Strategy: type-guard
Validate before calling
allowed = {'num_words','filters','lower','split','char_level','oov_token','document_count','analyzer'}
bad = set(kwargs) - allowed
if bad:
raise TypeError(f'typo(s): {bad}') Type guard
def valid_tokenizer_kwargs(kw):
allowed = {'num_words','filters','lower','split','char_level','oov_token','document_count','analyzer'}
return not (set(kw) - allowed) Prevention
- Let the IDE type the signature; avoid hand-typing kwargs from memory
When it happens
Trigger: Constructing Tokenizer with a misspelled or outdated kwarg such as num_word=100, or Keras 1.x-era names other than nb_words.
Common situations: Copy-pasting Tokenizer code from old tutorials; IDE autocompletion picking the wrong name; version migrations from Keras 1.x.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- Specify a dimension (`num_words` argument), or fit on some t
- Fit the Tokenizer on some data before using tfidf mode.
- Unknown vectorization mode:
- If using `weights="imagenet"` as true, `classes` should be 1
- The number of repeats in `EfficientNet` must be > 0. Receive
AI-assisted analysis of keras-team/keras@7a34a03db6 (2026-08-25).
Data as JSON: /api/errors/2a9b3c40aa09aaef.
Report an issue: GitHub.