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 模型进行序列到序列分类