2017-10-08 139 views
0

我發現了兩種可能的解決方案,用Keras中的RNN處理可變尺寸輸入序列。 溶液之一:Keras:可變輸入序列:填充vs形狀無?

input = Input(shape=(None, num_classes)) 

然後我可以把任何序列大小作爲用於訓練和驗證的輸入。

解決辦法二:

input = Input(shape=(max_seq_length, num_classes)) 
... 
pad_sequences(input_data, maxlen=max_seq_length, padding='post') 

建議哪些解決方案?

我認爲這兩個好處。我在解決方案2中看到的是對輸入大小的驗證。輸入不能大於max_seq_size,而且我可以決定填充類型(前/後),並且對於太大序列的定時也是如此。

使用解決方案進行了哪種填充和修整? pad_sequence的默認參數?

我已經對兩種解決方案的訓練模型的時間進行了基準測試,並且大致是同一時間。我想,在引擎蓋下它是一樣的,就像max_seq_length是從訓練序列的最大長度計算的,對嗎?

謝謝你的任何澄清!

回答

0

解決方案中根本沒有填充或修整。它按原樣處理並處理它。該模型完全獨立於序列長度。

在解決方案二中,最好的做法是添加一個Masking圖層。它將簡單地跳過處理填充值。