keras: 在构建LSTM模型时,使用变长序列的方法
2016-11-22 14:46
1611 查看
众所周知,LSTM的一大优势就是其能够处理变长序列。而在使用keras搭建模型时,如果直接使用LSTM层作为网络输入的第一层,需要指定输入的大小。如果需要使用变长序列,那么,只需要在LSTM层前加一个Masking层,或者embedding层即可。
使用方法:首先将序列转换为定长序列,如,选取一个序列最大长度,不足这个长度的序列补-1。然后在Masking层中mask_value中指定过滤字符。如上代码所示,序列中补的-1全部被过滤掉。
此外,embedding层也有过滤的功能,但与masking层不同的是,它只能过滤0,不能指定其他字符,并且因为是embedding层,它会将序列映射到一个固定维度的空间中。因此,如果诉求仅仅是让keras中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】序贯Sequential模型实例之使用LSTM的序列分类
- keras在构建LSTM模型时对变长序列的处理
- 使用Keras快速构建集成卷积网络模型
- 使用双向LSTM模型构建中文分词器
- 【keras】序贯Sequential模型实例之用于序列分类的栈式LSTM
- Python中用Keras构建LSTM模型进行时间序列预测
- 【keras】函数式(Functional)模型学习以LSTM为例构建多输入和多输出模型及完整实例(二)
- 8.4.2 时间序列预测——使用TFLearn自定义模型——代码运行错误及解决方法
- 【keras】序贯Sequential模型实例之使用1D卷积的序列分类
- Oracle 创建自增字段的方法—使用序列方法
- 在SharePoint中服务器端使用Word编程模型转换PDF遇到的问题以及解决方法
- 读书笔记 - .net2.0 异步编程模型: 使用 IAsyncResult 调用异步方法
- android学习序列笔记之Intent使用方法
- hibernate中orcal自增序列的使用方法
- 使用TSP数据构建过程性能模型
- 使用BruteForce方法构建交通网络拓扑关系
- 在VB6中,使用ADO对象模型时,ADO对象、属性、方法不“无法显示帮助”的问题?
- 使用jetty 嵌入式构建 https 服务--自定义keystore 和加密方法
- Java中使用hql,sql查询--多表查询后的新实体构建方法详解
- Oracle 创建自增字段的方法—使用序列方法(1)