对循环神经网络RNN的初步理解

       之前接触的都是医学图像上广泛使用的卷积神经网络,直到遇到心音的序列数据才刚刚开始使用循环神经网络,刚看的时候觉得与卷积神经网络的区别好大,输入输出怎么都搞不明白,看了一天,觉得稍微有那么点理解了,现在此小结一篇,不然我怕又忘了。

一、不同于CNN的地方:

       CNN每一个与conv kernel 进行卷积的图像区域之间都是独立的,至少在卷积操作中是逐个进行滑窗卷积得到一个feature value的,然后组成一个feature map;而在RNN中,认为后面的序列跟前面的序列是有关系的,即后面一个sequence(序列)输入与前面一个sequence(序列)存在关系,首先前后sequence length必须保持一致(哪怕原本不一致,通过padding处理也要保持一致,因为网络结构一旦确定,输入形状就固定了),这里一个sequence就是由[x1,x2,x3,,,,,,,,,xm]组成的,x1可以是一个值(比如pcg信号的一个强度值),也可以是一个“单词”,但这个单词是要通过词嵌入方式的词向量表示的),即x1的形状可以是(1,),也可以是(特征维度数,)。在这里sequence length就等于m(在pcg信号中就可以是6000,表示将6000个采样点看作一个序列;而在自然语言中就可以是单词的个数,比如将5个单词认为是一个序列,那么sequence length就等于5)。

      怎么表示出后面的序列与前面的序列有关系呢?可以看如下图所示:在t-1时刻输入的序列sequence length也应该是m,经过类似于全连接层的处理后得到隐藏层节点数n的输出节点数,即从m个节点到n个节点的全连接层处理(这里隐藏节点数像全连接层一样可以自定义),那么就得到了n个隐藏节点数的输出;这样一个序列就处理完毕了,其实就是简单的通过了一层的全连接层处理(对的,就是这么简单,不过也可以通过设置num_layers网络层数进行多个全连接层处理,默认是1层全连接层),接着处理下一个序列(也就到了t时刻),又拿一个sequence length等于m的序列进行全连接层的处理,但这时就要将上一个序列的n个隐藏节点输出应用到t时刻上:与输入序列一起进行权重相乘后相加的形式得到t时刻的n个隐藏节点输出,这样又一个序列就处理完毕了,其实就是又简单的通过了一层全连接层处理;然后又处理下一个序列(也就到了t+1时刻),如此循环。

       简单的小结为每一个序列只经过一个简单的全连接层,不同于CNN的“深度”,RNN的深度由序列个数决定(--->)

这里的𝑥𝑡−1就是如上的[x1,x2,x3,,,,,,,,,xm]一个序列(sequence)

二、领域术语:

Sequence length:序列长度,就是输入的长度,网络结构定义时需要明确定义(就是input_shape)

Timestep:就是Sequence length,意义相同,只是说法不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值