RNN 循环神经网络(包括:循环核、用tf表述循环计算层、输入字母预测下一个)

一、回顾卷积

在这里插入图片描述

  • 这种特征提取是借助卷积核实现的参数空间共享。
  • 实现离散数据的分类。

然而,有些数据是与时间序列相关的,可以根据上文预测出下文,由此引出循环核。

二、 循环核

1、介绍

循环核具有记忆力,通过不同时刻的参数共享,实现了对时间序列的信息提取。
在这里插入图片描述

  • ht:记忆体当前时刻存储的状态信息。ht-1:记忆体上一时刻存储的状态信息。xt:当前时刻的输入特征。bh,by:偏置项。
  • 记忆体内存储着每个时刻的状态信息ht.
  • 前向传播时,三个参数矩阵固定不变。

2、循环核按时间步展开

在这里插入图片描述
按循环步展开,就是把循环核按时间轴展开。

每个时刻记忆体状态信息ht被刷新,记忆体周围的参数矩阵固定不变,我们训练优化的就是这些参数矩阵。

训练完成后,完成效果最好的参数矩阵执行前向传播,输出预测结果。

3、循环神经网络

借助循环核,实现时间的特征提取,再把提取到的信息送入全连接网络。实现连续数据的预测。

4、循环计算层

在这里插入图片描述

三、tensorflow描述循环计算层

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

  • 第一个送入循环核两组数据,有一个循环核,每一组有三个数 【2,1,3】

四、循环计算过程

1、输入一个字母预测下一个

在这里插入图片描述

  • 神经网络的输入都是数字,如果预测字母,要先将其用数字表示出来。(用独热码进行编码)
  • 脑中的记忆因为当前输入的信息更新了。
  • 模型认为有91%的可能性输出字母c.

用RNN实现输入一个字母,预测下一个字母的One hot编码(独热码):

在这里插入图片描述

  • 按照六步法,首先import相关模块。
  • 为了送入神经网络,把字母表示成数字0-4。
  • 把数字编码为独热码。
  • 生成训练用的输入特征x_train 和 标签y_train.
  • 输入特征a对应的标签是b,b对应的标签是c,…以此类推,e对应的标签a。
  • 把它们打乱顺序。random
  • 把输入特征变成RNN层期待的形状。
  • 第一个维度是输入样本数,第二个维度是循环核时间展开步数,第三个维度是每个时间步输入特征的个数。(参数解释:第一个参数是整个数据集的样本数,用len(x_train)得到;第二个参数,因为输入一个字母就得到输出,所以是1;第三个参数,每个时间步输入的是字母对应的独热码,是五个数,所以是5)
  • 把y_train变为numpy格式。

搭建具有三个记忆体的循环层:在这里插入图片描述

  • 可自行调整记忆体的个数,记忆体越多,记忆力越好。但是占用资源会更多。

  • Dense层–全连接
    在这里插入图片描述
    在这里插入图片描述

  • for循环,先输入执行几次预测任务。

  • 等待输入一个字母。

  • 把字母转化为独热码。

  • 调整为rnn期望的形状。reshape 参数1,1,5解释同上。

  • 通过predict预测,并选出最大的一个结果输出。

2、连续输入字母预测下一个

连续输入四个字母预测下一个:
在这里插入图片描述
在这里插入图片描述
代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值