1.循环神经网络的提出是基于记忆模型的想法,期望网络能够记住前面出现的特征,并依据特征推断后面的结果,而且整体的网络结构不断循环,因而得名循环神经网络。

2.循环神经网络的基本结构特别简单,就是将网络的输出保存在一个记忆单元中,这个记忆单元和下一次的输入一起进入神经网络中。

3.使用双向循环神将网络,网络会先从序列的正方向读取数据,再从反方向读取数据,最后将网络输出的两种结果合在一起形成网络的最终输出结果。

4.解决长时依赖的问题:LSTM,GRU

LSTM(1997):长的短时记忆网络

LSTM由三个门来控制,这三个门分别是输入门,遗忘门和输出门。输入门控制者网络的输入,遗忘门控制者记忆单元,输出门控制者网络的输出。其中最重要的是遗忘门,遗忘门的作用是决定之前的哪些记忆被保留,哪些记忆将被去掉,正是遗忘门的作用,使得LSTM具有长时记忆的功能,对于给定的任务,遗忘门能够自己学习保留多少以前的记忆,这使得不需人为干扰,网络能够自主学习。

LSTM流程:

Ct-1作为上一步t-1时刻网络中的记忆单元,传入t时刻的网络之后,第一步操作是决定它的遗忘程度,将t时刻前面的记忆状态乘上一个0-1的系数进行衰减,接着加上t时刻学到的记忆作为更新之后的记忆传出网络,作为t+1时刻的网络的记忆单元。其中t-1时刻网络记忆的衰减系数是通过t时刻网络的输入和t-1网络输出来确定的,t时刻网络学到的记忆也是根据t时刻网络的输入和t-1时刻网络的输出得到的。

遗忘门:

首先将 t-1 时刻的网络输出ht-1和这一步的输入xt结合起来,然后作用线性变换Wf*[ht-1,xt]+bf再经过sigmoid激活函数,将结果映射到0-1作为记忆的衰减系数,记作ft,可以看到网络具体要保留多少记忆是由前一时刻的输出和这一时刻的输入共同决定的。

衰减系数:

t时刻学到的记忆:    :当前学习到记忆的衰减系数。:当前状态学习到的记忆

最后将t-1时刻的衰减系数乘 t-1时刻的记忆,加上该时刻t下学到的记忆乘它对应的衰减系数,这样便得到了t时刻下的记忆状态

输出门:

当前时刻t的网络输出取决于当前时刻t的记忆状态和t时刻的输入时刻的输出

GRU:

GRU与LSTM最大的不同在于GRU将遗忘门和输入门合成了一个‘更新门’,同时网络不再额外的记忆状态,而是将输出结果作为记忆状态不断向后循环传递。

5.PyTorch的循环网络模块

标准RNN

在Pytorch的调用:nn.RNN()

input_size:表示输入xt的特征维度

hidden_size:表示输出ht的特征维度,

num_layers:表示网络层数,默认是1层,

nonlinearity:非线性激活函数的选择,默认为Tanh,可以选择relu

bias:是否偏置

batch_first:决定网络输入的维度顺序,默认网络输入是按照(seq,batch,feature)输入的,序列长度在最前面,然后是批量,最后是特征维度,如果这个参数设置为True,那么顺序就变为(batch,seq,feature)

dropout:接受一个0-1的数值,会在网络中除了最后一层之外的其他输出层加上dropout层

bidirectional:默认为False,如果设置为True,就是双向循环神经网络的结构。

网络接收的输入和输出:

pytorch_08_RNN的更多相关文章

随机推荐

  1. hibernate opensission.createSQLquery 问题

    在进行分页查询的时候,通常会用到,页码,每页容量等等的参数进行操作,如下图: query.list()的时候会执行得到所需要的集合的值,在这个过程中, 如果使用自定义的返回参数,比如将日期做一些基本处 ...

  2. 百度云盘资源 for MAC 第三方工具不限速下载

    相信大家都比较困惑,百度网盘客户端限速后一般只有几十K的下载速度,Windows有百度网盘破解版,但MAC的破解版似乎不存在,要提速的话,一般的做法是开超级会员(27元/月),身为程序员的我们,是不是 ...

  3. kaldi简介及安装

    操作系统 : Ubuntu18.04_x64 gcc版本 :7.4.0 简介 Kaldi诞生于2009年的JohnsHopkins University,刚开始项目重点是子空间高斯模型(SGMM)建模 ...

  4. 【C++常用函数】头文件<algorithm>中的常用函数(绝对值,交换,比较)

    swap(a,b) 用于交换a,b两个变量的值: max(a,b) 返回a,b中的最大值: min(a,b) 返回a,b中的最小值: abs(x) 返回x的绝对值,x必须是整数:

  5. PHP+Mysql统计文件下载次数实例

    PHP+Mysql统计文件下载次数实例,实现的原理也很简单,是通过前台点击链接download.php传参id,来更新点击次数. 获取文件列表: <?php require 'conn.php' ...

  6. axios请求无法携带cookie

    背景 最近在用vue重构公司公司AngularJS 1.X项目,老项目身份认证采用的cookie,前端ajax库采用是angularJS的$http/$resource服务,新版采用的是axios,但 ...

  7. flutter_inner_drawer 使用

    版本: flutter_inner_drawer: "^0.2.2" github:  https://github.com/Dn-a/flutter_inner_drawer 这 ...

  8. Windows应急日志常用的几个事件ID

    Windows应急日志常用的几个事件ID点击站内没有搜索到,可能搜索姿势不对,发一下吧,应急时可能会用到,根据日志时间点判断入侵 日志路径:C:\Windows\System32\winevt\Log ...

  9. Android Service 启动流程

    执行顺序 : startService -> bindService -> unbindService -> stopService 回调的结果为: 执行顺序 : startServ ...

  10. springboot架构下运用shiro后在configuration,通过@Value获取不到值,总是为null

    通过网上查找资料,是因为shiro的bean @Beanpublic LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return ...