由于我的输入是可变长度的,因此我需要全部填充它们以使其具有相同的大小,以便将它们输入到双向LSTM。
但是,预填充与后填充相比有什么区别
例如:
input [3,2,1,2]
prepad [0,0,0,3,2,1,2]
postpad [3,2,1,2,0,0,0]
哪个变体有助于更好的梯度流动?
答案 0 :(得分:2)
通常,循环网络会更加强调其上次看到的信息。现在是应该使用填充前还是填充后,高度取决于您的问题。
请考虑以下示例: 您具有编码器-解码器体系结构。编码器读取数据并输出一些固定尺寸的表示,而解码器则相反。现在,对于编码器而言,预先填充输入将很有意义,这样它就不会只读最后的填充而忘记了之前看到的实际有意义的内容。另一方面,对于解码器而言,后填充可能会更好,因为后填充可能应该学会在末尾产生一些序列结束令牌,而忽略其余的后续(填充)。
现在很难说什么更适合于双向LSTM,并且最终还可能取决于实际问题。在最简单的情况下,这并不重要。