【重点】常见变体 – RNN LSTM GRU
摘要:Bidirectional RNNs通过结合前后序列信息,增强了对上下文的捕捉能力,适合填补缺失词语等任务。而Deep RNNs则通过叠加多层RNN,提升模型的表示能力。Bidirectional LSTMs和Stacked LSTMs分别在双向和深度结构上与RNNs类似,进一步增强了序列建模效果。
1 Bidirectional RNNs
- Bidirectional RNNs将两层RNNs叠加在一起,当前时刻输出(第t步的输出)不仅仅与之前序列有关,还与之后序列有关。例如:为了预测一个语句中的缺失词语,就需要该词汇的上下文信息。
- RNN的输出形状从
(batch_size, sequence_length, hidden_size)
变为(batch_size, sequence_length, hidden_size * 2)
。
# 代码实现:修改bidirectional参数
rnn = nn.RNN(input_size=2, hidden_size=4, bidirectional=True, batch_first=True)
Copy
2 Deep RNNs
- Deep RNNs旨在通过增加隐藏层的数量来增强模型的表示能力,每个时间步的隐藏状态都经过多个RNN层的处理,例如第一个RNN层生成的隐藏状态作为第二个RNN层的输入。
- Deep RNNs不会改变模型输出形状,因为输出形状是由最后一层RNN的输出决定的。
# 代码实现:修改num_layers参数
rnn = nn.RNN(input_size=2, hidden_size=4, num_layers=3, batch_first=True)
Copy
3 Bidirectional LSTMs
与Bidirectional RNNs类似。
4 Stacked LSTMs
与Deep RNNs类似。
版权声明:
作者:Zhang, Hongxing
链接:http://zhx.info/archives/128
来源:张鸿兴的学习历程
文章版权归作者所有,未经允许请勿转载。
THE END
二维码