你如何实现可变长度的递归神经网络?

How do you implement variable-length recurrent neural networks?

什么是可变长度序列输入循环神经网络 (RNN) 的完整工作示例(不是片段)?

例如,据说 PyTorch 可以实现可变长度序列作为 RNN 的输入,但似乎没有完整的工作代码示例。

相关: https://github.com/pytorch/pytorch/releases/tag/v0.1.10 https://discuss.pytorch.org/t/about-the-variable-length-input-in-rnn-scenario/345

遗憾的是,没有 'variable length' 神经网络这样的东西。这是因为网络无法 'know' 将哪些权重用于未经训练的额外输入节点。

但是,您在该页面上看到 'variable length' 的原因是因为他们处理:

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

他们将所有 'empty' 个变量转换为 0。这是有道理的,因为 0 不会向网络隐藏层添加任何内容,无论权重如何,如 anything*0 = 0.

所以基本上,您可以有 'variable length' 个输入,但您必须定义某种最大尺寸;所有小于该大小的输入都应该用零填充。

另一方面,如果您要对句子进行分类,则可以使用 LSTM/GRU 网络按顺序处理输入。