Keras中RNN不定長輸入的處理--padding and masking


在使用RNN based model處理序列的應用中,如果使用並行運算batch sample,我們幾乎一定會遇到變長序列的問題。

通常解決變長的方法主要是將過長的序列截斷,將過短序列用0補齊到一個固定長度(例如max_length)。

最后由n個sample組成的dataset能形成一個shape == (n, max_length)的矩陣。然后可以將這個矩陣傳遞到后續的模型中使用。

然而我們可以很明顯,如果用0或者其他整數補齊,勢必會影響到模型自身(莫名其妙被輸入很多個0,顯然是有問題的)。有什么方法能夠做到“能夠使用一個二維矩陣作為輸入數據集,從而達到並行化的同時,還能讓RNN模型自行決定真正輸入其中的序列的長度”。

 

Embedding提供mask_zero來進行對padding為0的處理。當我們構建一個Embedding Layer時,可以設置mask_zero=True

encoder_inputs = Input(shape=(None,))
encoder_embedded = Embedding(num_input_tokens, embedding_size, mask_zero=True)(encoder_inputs)

 

更多閱讀:Keras中關於Recurrent Network的Padding與Masking


免責聲明!

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



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