Tensorflow2.0——循环神经网络RNN

时间序列表示

波形

[ b, 100, 1 ] :b条线,100个时刻,每个时刻有一个价格。
在这里插入图片描述

图片

[b, 28, 28] :b副图,共28个时刻,每个时刻取28个像素点。
在这里插入图片描述

文字

序列表示:[b, seq_len, feature_len]
b个句子,seq_len每个句子单词数,feature_len每个单词的维度。

可以根据需要调整b的位置:
在这里插入图片描述
[words, word vec]
在这里插入图片描述
具有的特性:
1.矩阵形式
2.高维
3.可表示并可计算相关性
4.可进行训练

Word embedding

二维的embedding:
在这里插入图片描述
Embedding layer:
初始化一个语料库,里面有10个单词,若要表示的词在里面就可以对应序号取出向量。
在这里插入图片描述
在这里插入图片描述
其他常用的embedding方法:
在这里插入图片描述

循环神经网络

RNN

在这里插入图片描述

假设上图,会出现两个问题:一是网络参数量过大,二是没有考虑到句子整体语义。所以,按照权值共享的思想,有下图的循环神经网络。
在这里插入图片描述
在这里插入图片描述
一个序列的当前输出与前面的输出也是有关的。具体体现在后面层数的输入值要加入前面层的输出值,即隐藏层之间不再是不相连的而是有连接的。

RNN layer使用

在这里插入图片描述

单层RNN:

在这里插入图片描述
在这里插入图片描述

多层RNN:
在这里插入图片描述
在这里插入图片描述

最常用的,不用自己管理 RNN Layer:

在这里插入图片描述

梯度离散和梯度爆炸

Whh的k次方,Whh大于1趋近于无穷大梯度爆炸,Whh小于1趋近于0梯度离散。

梯度爆炸

当神经网络很深时,梯度呈指数级增长,最后到输入时,梯度将会非常大,我们会得到一个非常大的权重更新,这就是梯度爆炸的问题,在循环神经网络中最为常见。

在这里插入图片描述
如上图,如果出现loss值急剧增大的现象,就可能是梯度爆炸问题。

在这里插入图片描述
方法:
梯度裁剪:
把沿梯度下降方向的步长限制在一个范围之内,计算出来的梯度的步长的范数大于这个阈值的话,就以这个范数为基准做归一化,使这个新的的梯度的范数等于这个阈值就行了。

梯度检查:
梯度计算很不稳定,使用梯度检查来检查梯度计算是否出了错误。通过解析的梯度值与计算得到的梯度值进行对比计算相对误差,如果这个误差小于一个很小的下限值,那么就没什么问题。

梯度离散

解决:LSTM

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值