1、导入模块
另外部分导入的在这里
from keras.layers import LSTM
2、预处理数据
参考这里
3、搭建模型
对于LSTM神经块输出的shape:
如果return_sequences=True:返回形如(samples,timesteps,output_dim)的3D张量
否则,返回形如(samples,output_dim)的2D张量
在keras开发文档中写明:
to stack recurrent layers, you must use return_sequences=True
为了堆叠循环图层,你需要使用return_sequences=True
到最后的全连接层就不再需要堆叠,所以不使用return_sequences=True
model = Sequential()
model.add(Embedding(vocab_size, 64, input_length = maxword))
model.add(LSTM(128, return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(64, return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(32))
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
print(model.summary())
运行结果:
Layer (type) Output Shape Param #
=================================================================
embedding_4 (Embedding) (None, 400, 64) 5669568
_________________________________________________________________
lstm_4 (LSTM) (None, 400, 128) 98816
_____