You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tf.keras内置IMDB数据集时Tokenizer报'int无lower属性'错误原因?

报错根因

tf.keras.datasets.imdb.load_data() 接口返回的数据集已经完成了文本转整数索引的预处理,你拿到的X_train、X_test的每个元素都是由整数组成的序列,而非原始字符串文本。而Tokenizer.fit_on_texts() 方法要求输入为字符串格式的文本样本,内部默认会对每个元素执行转小写的lower()操作,对整数调用该方法就触发了AttributeError: 'int' object has no attribute 'lower'报错。

另外你的代码里冗余导入了第三方imdb包,和Keras内置的IMDB数据集工具无关,可以直接删除。

修复方案

直接使用内置接口预处理好的整数序列即可,无需额外调用Tokenizer做文本处理,修改后代码如下:

import tensorflow as tf
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.layers import Embedding, LSTM
from keras.layers import Conv1D, Flatten, MaxPooling1D
from keras.datasets import imdb
import wandb
from wandb.keras import WandbCallback
import numpy as np

wandb.init(mode="disabled") # disabled for debugging
config = wandb.config

# set parameters:
config.vocab_size = 1000        
config.maxlen = 1000
config.batch_size = 32
config.embedding_dims = 10
config.filters = 16
config.kernel_size = 3
config.hidden_dims = 250
config.epochs = 10

# 加载数据集时直接指定词汇表大小
(X_train, y_train), (X_test, y_test) = tf.keras.datasets.imdb.load_data(num_words=config.vocab_size)

# 直接做序列截断补全,不需要走Tokenizer流程
X_train = sequence.pad_sequences(X_train, maxlen=config.maxlen)
X_test = sequence.pad_sequences(X_test, maxlen=config.maxlen)
弃用警告说明

你看到的VisibleDeprecationWarning是旧版本TensorFlow加载IMDB数据集时的已知提示,属于版本兼容问题,不影响代码正常运行,升级TensorFlow到2.4+版本即可消除该警告。


内容的提问来源于stack exchange,提问作者Keegan Clarke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:57:03