Keras报错:module 'keras.preprocessing.sequence'无pad_sequences属性
解决AttributeError: module 'keras.preprocessing.sequence' has no attribute 'pad_sequences'
你的问题出在导入路径与代码调用不匹配,加上Keras版本迭代后API位置变更,具体修正方案如下:
核心问题分析
- 你已经从
keras.utils导入了pad_sequences,但代码里却错误调用sequence.pad_sequences,且未导入sequence模块; - Keras 2.10+版本后,
pad_sequences已从keras.preprocessing.sequence迁移到keras.utils路径下,旧路径不再生效。
修正方案(推荐)
直接使用已导入的pad_sequences,同时修正Tokenizer的调用路径(你之前的代码未正确导入text模块):
import keras from keras import preprocessing from keras.utils import pad_sequences # 修正Tokenizer的调用方式 tokenizer = preprocessing.text.Tokenizer(num_words=max_features) tokenizer.fit_on_texts(x_train) tokenized_train = tokenizer.texts_to_sequences(x_train) # 直接使用导入的pad_sequences,无需sequence前缀 x_train = pad_sequences(tokenized_train, maxlen=maxlen) tokenized_test = tokenizer.texts_to_sequences(x_test) X_test = pad_sequences(tokenized_test, maxlen=maxlen)
兼容旧版本方案(不推荐)
如果你使用Keras 2.10以下版本,可调整导入路径并确保导入sequence模块:
import keras from keras.preprocessing import text, sequence tokenizer = text.Tokenizer(num_words=max_features) tokenizer.fit_on_texts(x_train) tokenized_train = tokenizer.texts_to_sequences(x_train) x_train = sequence.pad_sequences(tokenized_train, maxlen=maxlen) tokenized_test = tokenizer.texts_to_sequences(x_test) X_test = sequence.pad_sequences(tokenized_test, maxlen=maxlen)
内容的提问来源于stack exchange,提问作者Satyam Sahu
相关产品推荐
相关产品推荐

