zoukankan      html  css  js  c++  java
  • 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层更加适合。

  • 相关阅读:
    Quartz2.0以上版本的单机和集群
    Mysql的Haproxy反向代理和负载均衡
    spring AOP原理解析
    Restful接口调用方法超详细总结
    mysql数据库主从同步
    数据备份的OSS接口
    读取properties配置文件的方法
    算法学习——堆排序(二叉树排序)
    回溯算法的实现
    冒泡排序
  • 原文地址:https://www.cnblogs.com/leeshum/p/6089286.html
Copyright © 2011-2022 走看看