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. 关于字符串的格式化----format与%

    格式化字符串一般有两种方法 1.%(d整数,s字符,f浮点数) 2.format 用处极为广泛且限制不多 注意:第一种对于数组的传递会报TypeError,所以必须传递数组 a = (1, 2, 3) ...

  2. C# 对 Excel 的相关操作

    C# 对Excel的操作 学习自: 教练辅导 C# 对Excel的读取操作 我们需要额外添加引用: References 搜索Excel 这样我们的基础就添加完成了. 并且在using 中添加: us ...

  3. 递归找到多级文件夹中所有pdf文件的py程序

    因个人需要,写了一个可以递归找到多级文件夹中所有pdf的小程序,发布出来供有需要的人参考或使用. import os import re import shutil from os.path impo ...

  4. docker 部署springcloud项目

    一.首先从 docker.hub[地址:https://hub.docker.com] 中根据各自的需求 pull 对应的 openjdk镜像(本次直接在修改后的docker镜像源中下载) docke ...

  5. ETCD:基于角色的访问控制

    原文地址:Role-based access control 总览 身份验证已添加到etcd 2.1中. etcd v3 API略微修改了身份验证功能的API和用户界面,以更好地适应新的数据模型.本指 ...

  6. ETCD:配置参数

    原文地址:Configuration flags etcd通过配置文件,多命令行参数和环境变量进行配置, 可重用的配置文件是YAML文件,其名称和值由一个或多个下面描述的命令行标志组成.为了使用此文件 ...

  7. ASP.NET Server对象

    Server.HtmlEncode() 执行文本代码Server.HtmlDecode()可以将代码显示 而不是执行它 但是ASP.NET会认为恶意 我们可以将aspx代码开头添加validateRe ...

  8. 将python项目打包为可运行的windows桌面exe程序

    ---恢复内容开始--- 步骤大概如下: 1.需要一个python文件/项目.也就是我们想要打包的文件 2.安装pyinstaller,目的是将我们的python文件生成为exe可执行程序. 3.使用 ...

  9. springcloud Springboot vue.js Activiti6 前后分离 跨域 工作流 集成代码生成器 shiro权限

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  10. Data Management Technology(3) -- SQL

    SQL is a very-high-level language, in which the programmer is able to avoid specifying a lot of data ...