keras: 在构建LSTM模型时,使用变长序列的方法

Posted yuki_lee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras: 在构建LSTM模型时,使用变长序列的方法相关的知识,希望对你有一定的参考价值。

众所周知,LSTM的一大优势就是其能够处理变长序列。而在使用keras搭建模型时,如果直接使用LSTM层作为网络输入的第一层,需要指定输入的大小。如果需要使用变长序列,那么,只需要在LSTM层前加一个Masking层,或者embedding层即可。

from keras.layers import Masking, Embedding
from keras.layers import LSTM
    model = Sequential()
    model.add(Masking(mask_value= -1,input_shape=(sequenceLength, 23*3,)))
    model.add(LSTM(100, dropout_W=0.2, dropout_U=0.2, input_shape=(sequenceLength, 23*3,))) 

  使用方法:首先将序列转换为定长序列,如,选取一个序列最大长度,不足这个长度的序列补-1。然后在Masking层中mask_value中指定过滤字符。如上代码所示,序列中补的-1全部被过滤掉。

 

    此外,embedding层也有过滤的功能,但与masking层不同的是,它只能过滤0,不能指定其他字符,并且因为是embedding层,它会将序列映射到一个固定维度的空间中。因此,如果诉求仅仅是让keras中LSTM能够处理边长序列,使用Masking层会比使用Embedding层更加适合。

以上是关于keras: 在构建LSTM模型时,使用变长序列的方法的主要内容,如果未能解决你的问题,请参考以下文章

Keras深度学习实战(33)——基于LSTM的序列预测模型

Keras深度学习实战——使用长短时记忆网络构建情感分析模型

在 keras 中使用 CNN-LSTM 模型进行序列到序列分类

python tensorflow 2.0 不使用 Keras 搭建简单的 LSTM 网络

使用keras构建LSTM分类器

Keras LSTM 模型的 batch_input_shape