回答

-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

递归神经网络中的变长输入并不是指每个样本的大小都是可变的,而是等长输入序列的大小是可变的。想象一下学习单词序列 - 您需要在切换到新句子时重置权重。句子可以是不同的长度 –