Pytorch 源码阅读之RNN

我之前一直主要研究CNN,对RNN一直望而生畏,但一直有一股明知山有虎偏向虎山行的莽劲,决心弄明白RNN背后的原理。这是我第一次为了弄懂一个基础网络结构专门去阅读源码。我主要使用pytorch框架,因此这里主要讨论pytorch框架下RNN的实现问题。这里我仅以自己的角度去描述这个问题,有可能有各位读者需要的内容,也有可能没有。
国内百度一下"RNN",大多的博客都是用如下的图示表示:


RNN.png

RNN1.png

RNN2.png

笔者看过很多类似的博客,这些图都只是告诉了我RNN的理论结构,并不能让我知道RNN中内部到底发生了什么,尤其像我这种强迫症患者,一定要知道内部整个数据流动才能让我放心地去使用。相比CNN,整个过程相当透明,因此十分容易上手,但RNN一直是我“不敢接近之地”。后来我试着去找一些国内外从代码的角度来解释RNN的博客。在介绍这些博客之前,我想先定一个调子。请记住RNN内部就是MLP,MLPMLP。这个结论可能有的读者早已领悟,笔者比较愚钝,直到使用了CNN一年半之后才明白这个道理(不敢甩锅给国内一些博客,确实是自己笨)。文章最后会附上笔者觉得比较好的博客给大家参考。
现在,我们来看看RNN的公式 :
上面公式中,和表示的是第t时刻的跟上一个时刻的隐藏状态 的权重系数,这个公式直接来源于pytorch的源码文件中
RNN4.png

从这里其实可以看出RNN就是一个mlp的结构(本人愚钝)。接下来我们看下RNN的接口参数的使用 torch.nn.rnn(input_size,hidden_size,num_layers,nolinearity,bias,batch_first,dropout,bidrectional

  • input_size: 表示输入的特征大小,即mlp的输入层的神经元个数。
  • hidden_size:表示隐层状态的大小,可以认为是mlp输出层的神经元个数
  • num_layers: 表示的是要堆叠多少个RNN的cell。
  • nolinearity: 表示使用的激活函数选择
  • bias: 是否使用偏差
  • batch_first: 告诉网络输入数据的结构里,第一维是batch大小还是输入x_t的大小。
  • dropout: 在mlp里是否使用dropout
  • bidirectional: 这个应该是否使用双向RNN,这个笔者目前还不会用.默认不使用
    以上是构建了RNN的实例过程,在以上过程中,笔者对num_layers的理解有过错误。最初笔者理解的num_layers表示的mlp的层数。一度与实验室同学讨论激烈,但后来看了源码才感觉是自己错了。仅此记录
    构建完RNN实例后,我们来看看这个实例的输入有哪些限制
  • input: 输入数据的shape形状模式是(seq_len,batch,input_size)
  • h_0:h_0表示的给每层RNN的初始状态,shape的大小应该是(num
    _layers,batch,hidden_size)
    而对于输出的数据:
  • output:输出数据的大小是(seq_len,batch,hidden_size)
  • h_n:h_n表示最后的输出状态,大小是(num
    _layers,batch,hidden_size)

以上,读者应该对RNN的整体结构有了一个了解。对于数据的流动过程,有一位博主的实验做得很好,这里先贴出链接来分享给大家,后来我会加上一些实验,验证自己的想法. https://blog.csdn.net/out_of_memory_error/article/details/81456501 这个博客是对方博主自己写了一个关于RNN的代码,还是很简单易懂的。https://www.jianshu.com/p/298116084ec7

未完待续

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容