RNN

RNN

主要用于处理序列数据,在传统神经网络模型中,是从输入层到隐藏层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的,但是这种普通的神经网络对于很多问题却无能为力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。

RNN之所以称为循环神经网络,即一个序列当前的输出与前面的输出有关,具体的表现形式为网络会对应前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

LSTM网络

是一种RNN特殊的类型,可以学习长期依赖信息,在很多问题,LSTM都取得相当大的成功,并得到广泛的使用,它是RNN的标准。

LSTM的窍门在于拥有一个固定权值为1的自动连接,以及一个线性激活函数,因此其局部偏导始终为1,这样的话,误差就能在时间步中传递,而不是消失或爆炸。

LSTM通过门对通过的信息进行控制,门是让信息选择式通过的方法,LSTM通过门可以让信息不通过,完全通过,通过一部分。

LSTM网络的变体GRU

GRU门限循环单元,与LSTM相比,GRU结构更加简单,它有一个更新门,更新门决定了内部状态与输入state状态的融合比例,简单来说,GRU和LSTM网络相比,建构简单,计算少,效果相当。

keras支持RNN两种变体:

layers.LSTM

layers.GRU

序列数据的形状:第一维度是这个序列数据的batch,第二维度是这个序列数据的长度,第三维度是数据的向量化表示(比如batch×长度)

经过这两个网络中输出的结果是一个评价,二维的数据,第一维度是batch,第二维度是最后的输出

原文地址:https://www.cnblogs.com/Fantac/p/13768836.html