回答

-1

可悲的是,沒有這樣的事情 '變長' 神經網絡。這是因爲網絡無法「知道」哪些權重用於未經過培訓的額外輸入節點。

但是,你看到的是頁面上的「變長」的原因,是因爲他們處理:

a b c d e 
a b c d e f g h 
a b c d 
a b 

a b c d e 0 0 0 
a b c d e f g h 
a b c d 0 0 0 0 
a b 0 0 0 0 0 0 

他們將所有「空」變量0。這是有道理的,因爲0不會爲網絡隱藏層添加任何內容,而不考慮權重,因爲anything*0 = 0。所以基本上,你可以有'可變長度'輸入,但你必須定義某種最大尺寸;所有小於該大小的輸入都應該用零填充。

如果您正在對句子進行分類,則可以使用LSTM/GRU網絡按順序處理輸入。

+0

你寫的部分不正確。 RNN旨在處理可變輸入。它不是網絡的限制,而是張量的限制(由pytorch設計)。如果您在每個訓練步驟(通過批量大小= 1)進行單個樣本,而無任何填充,則仍然可以將變量輸入傳遞給pytorch中的RNN。如果你想處理一個微型批處理,填充會起作用,並且由於張量在技術上不可能有任何尺寸可變的尺寸,所以你必須使用填充。 – entrophy

+0

這沒有回答這個問題。顯然,每個網站都支持將可變長度序列分爲RNN:「nn.RNN,nn.LSTM,nn.GRU現在支持序列長度可變的小批量。」 – mikal94305

+0

遞歸神經網絡中的變長輸入並不是指每個樣本的大小都是可變的,而是等長輸入序列的大小是可變的。想象一下學習單詞序列 - 您需要在切換到新句子時重置權重。句子可以是不同的長度 –