在Keras中准备imdb数据时报错AttributeError: module 'keras.preprocessing.sequence' has no attribute 'pad_sequences'
from keras.datasets import imdb
from keras.preprocessing import sequence
max_features = 10000
maxlen = 500
batch_size = 32
print('Lodaing data...')
(input_train, y_train), (input_test, y_test) = imdb.load_data(num_words=max_features)
print(len(input_train), 'train sequences')
print(len(input_test), 'test sequences')
print('Pad sequences (sample x time)')
input_train = sequence.pad_sequences(input_train, maxlen=maxlen)
input_test = sequence.pad_sequences(input_test, maxlen=maxlen)
print('input_train shape:', input_train.shape)
print('input_test shape:', input_test.shape)
运行结果如下:
Lodaing data...
25000 train sequences
25000 test sequences
Pad sequences (sample x time)
Traceback (most recent call last):
File "D:\Projects\LSTM\LSTM1\dataset.py", line 15, in
input_train = sequence.pad_sequences(input_train, maxlen=maxlen)
AttributeError: module 'keras.preprocessing.sequence' has no attribute 'pad_sequences'
重新安装过keras还是有这个问题,我的Keras版本是2.9.0,tensorflow的版本是2.9.1
几种解决方法
1.keras2.9.0没这个方法了,要达到相同效果就用TextVectorization,具体用法查下官方文档就知道
2.把keras降级到2.3.1,pad_sequence是支持的,但tensorflow也要降级到2.2以下左右。
3.自己手写pad_sequence,这个函数并不难,无非超过最大长度截取到最大长度,没到最大长度的以当前batch的最大长度为最大长度补0
tensorflow项目组老是把简单的变复杂,pytorch的流行是有原因的
那个其实新版把from keras.preprocessing.sequence import pad_sequences改成from keras_preprocessing.sequence import pad_sequences或者from keras.utils import pad_sequences就行了
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!