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

在使用RNN based model處理序列的應用中,若是使用並行運算batch sample,咱們幾乎必定會遇到變長序列的問題。spa

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

最後由n個sample組成的dataset能造成一個shape == (n, max_length)的矩陣。而後能夠將這個矩陣傳遞到後續的模型中使用。blog

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

 

Embedding提供mask_zero來進行對padding爲0的處理。當咱們構建一個Embedding Layer時,能夠設置mask_zero=Trueget

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

 

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

相關文章
相關標籤/搜索