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層更加適合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM