循环神经网络(RNN)的变体、拓扑结构及文本生成示例
1. 引言
循环神经网络(RNN)在处理序列数据方面表现出色,但基础的RNN单元存在一些不足。为了克服这些问题,研究人员提出了多种RNN变体和不同的网络拓扑结构。本文将详细介绍这些内容,并通过一个文本生成的示例来展示如何使用RNN。
2. RNN变体
2.1 Peephole LSTM
Peephole LSTM是LSTM的一种变体,由Gers和Schmidhuber首次提出。它在输入门、遗忘门和输出门中添加了“窥视孔”,使这些门能够看到前一个单元状态$c_{t-1}$。与普通LSTM的方程相比,计算输入(i)、遗忘(f)和输出(o)门的输出时多了$c_{t-1}$项:
- $i = \sigma(W_{i}h_{t-1} + U_{i}x_{t} + V_{i}c_{t-1})$
- $f = \sigma(W_{f}h_{t-1} + U_{f}x_{t} + V_{f}c_{t-1})$
- $o = \sigma(W_{o}h_{t-1} + U_{o}x_{t} + V_{o}c_{t-1})$
- $g = \tanh(W_{g}h_{t-1} + U_{g}x_{t})$
- $c_{t} = f \odot c_{t-1} + g \odot i$
- $h_{t} = \tanh(c_{t}) \odot o$
TensorFlow 2.0提供了Peephole LSTM单元的实验性实现。要在自己的RNN层中使用它,需要将单元(或单元列表)包装在RNN包装器中,示例代码如下:
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



