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. Linux发行版的系统目录名称命名规则以及用途

    linux各种发行版都遵循LSB(Linux Stadards Base)规则,使用一致的相关的基础目录名称,使用根目录系统结构(root filesystem),使用FHS(Files Hierar ...

  2. Red Hat Enterprise Linux 官方正式版镜像下载

    Red Hat Enterprise Linux是美国红帽公司开发的商业市场导向的Linux发行版,为方便大家学习研究,整理分享历代红帽官方正式版镜像给有需要的朋友们. 下载地址:https://ww ...

  3. curl 带 body

    curl -H "Content-Type:plain/text" -X POST -d '<?xml version="1.0" encoding=&q ...

  4. 获取IP的三种方法

    第一种 取本主机ip地址 public string GetLocalIp() { ///获取本地的IP地址 string AddressIP = string.Empty; foreach (IPA ...

  5. swoole怎么保持不掉线

    正常情况下客户端中断TCP连接时,会发送一个FIN包,进行4次断开握手来通知服务器.但一些异常情况下,如客户端突然断电断网或者网络异常,服务器可能无法得知客户端已断开连接. 尤其是移动网络,TCP连接 ...

  6. Json数组(以[ ] 中括号开头)字符串转为json对象

    以 [] 开头的json数组字符串: str = "[{ "姓名":"张三", "年龄":"28" }]&qu ...

  7. 腾讯短信+SpringBoot+Redis实现注册逻辑

    使用redis做缓存实现用户的注册功能: 异步请求发送短信,给 发送短信的按钮 绑定异步事件 调用发送短信逻辑发送短信 缓存 key1:验证码 缓存 key2:短信发送时刻的时间 用户提交表单 包含用 ...

  8. Java题库——Chapter11 继承和多态

    1)Analyze the following code: public class Test { public static void main(String[ ] args) { B b = ne ...

  9. node http 模块 常用知识点记录

    关于 node,总是断断续续的学一点,也只能在本地自己模拟实战,相信总会有实战的一天~~ http 作为服务端,开启服务,处理路由,响应等 http 作为客户端,发送请求 http.https.htt ...

  10. docker安装mysql、es、jenkins等一些步骤以及如何设置docker国内镜像

    CentOS7安装Docker步骤: (0)删除旧的可能安装过的包 yum remove docker \                   docker-client \              ...