TensorFlow 2.7.0运行fit_generator()报错KeyError: 'see'如何解决
问题根因与修复方案
1. 核心错误:KeyError: 'see'
该错误是因为你构建的词汇索引字典input_token_index中,不存在样本里出现的单词see,触发原因通常有两种:
- 仅在训练集文本上构建了词汇表,测试集出现了训练集未覆盖的未登录词,生成验证集批次时触发报错
- 构建词汇表时遗漏了部分文本的分词结果,导致常见词也未被收录到
input_token_index中
修复方案:
- 构建词汇表时统一纳入训练集+测试集的所有输入文本,确保所有可能出现的词都被收录
- 如果仅需要用训练集构建词汇表,给
input_token_index添加默认的未知词<UNK>对应的索引,遇到不在字典里的词默认用<UNK>的索引代替,修改示例:
# 给input_token_index新增未知词条目,索引值注意避开已占用的数值 input_token_index['<UNK>'] = 0 # 替换generate_batch中的赋值行 encoder_input_data[i, t] = input_token_index.get(word, input_token_index['<UNK>'])
建议目标端的target_token_index也做相同的未知词兼容处理,避免后续出现同类报错。
2. 弃用警告:Model.fit_generator 已弃用
该提示为版本兼容警告,Keras新版本已经将生成器支持整合到了普通fit方法中,直接替换调用方法即可,不会影响原有运行逻辑:
model.fit( generate_batch(X_train, y_train, batch_size = batch_size), steps_per_epoch = train_samples//batch_size, epochs=epochs, validation_data = generate_batch(X_test, y_test, batch_size = batch_size), validation_steps = val_samples//batch_size )
内容的提问来源于stack exchange,提问作者Asrivast
相关产品推荐
相关产品推荐

