使用Keras重现论文深度学习框架

写在前面的话
对于深度学习网络复现,很多最新论文不会将神经网络开源,但是又需要借用这个网络来解决自己的问题。所以根据论文的网络示意图来编写网络程序将是一个很重要的技能。深度学习能不能跑起来,一个是网络搭建,一个是训练样本的制作。在基础研究中,训练样本使用开源的几个数据集做测试,二训练网络并不是想要论文作者开源就能开源的,所以我们用keras来打开这扇大门。

什么是keras?


以上则是keras的百度百科介绍,可以说keras就是集成度超高的API调用工具,对于较复杂的网络层搭建,keras则可能一行代码就能实现。对论文的网络实验,或者测试,以tf、CNTK等网络框架做后端。由于它的高集成度,所以对于完成网络编写也是极大方便了研究人员。

一、任务分析


上图就是一个简单的卷积神经网络示意图,基本步骤是卷积-下采样-全连接-分类。本文即将以此网络示意图进行详细讲解根据网络图搭建神经网络。网络示意图的观看顺序,一般从左至右或者从上至下。此图是从左至右,可以从整体上看,首先查看网络的输入和输出为格式32*32的图片与对应的10个分类。在网络设计中,首先了解网络的输入输出是一个较为重要的步骤,关系到后续网络层的设计。如果弄错输入格式,网络很有可能要从新设计。

二、详细方案

1、下图就是网络设计的第一层,输入+卷积。图中涉及到的参数有INPUT格式32X32,以及输入到下一层的关系为卷积,卷积的滤波器个数为6个,滤波器的尺寸大小为5X5,以及从32X32图片到28X28的格式则在卷积时不会使用填充这一操作,图中能获取的参数就是这些,但是还有一些没有的参数,例如,激活函数,一般对照着论文就能知道这些参数。


model.add(Conv2D(filters=6,      #对应图中6个模板,也就是6个filter
                 kernel_size=(5,5),       #对应的5*5的尺寸
                 padding='valid',          #对应图中32*32的图片缩小到28*28,所以这个参数对应的是valid
                 input_shape=(32,32,1),   #对应左边的INPUT,输入一张图片
                 activation='relu'))           #对于cnn常用的激活函数relu

2、第二步则从图中看到是做下采样操作,尺寸由28X28减到14X14,缩小一半,在网络中对应的是池化(pooling)操作。图中,subsampling则为下采样,代码中使用池化操作。池化也是特征提取的一个过程,所以此层输出的特征图为14X14格式,特征图个数为6。并且整个池化过程相较于卷积更为简单,参数相对也少了很多。


model.add(MaxPooling2D(pool_size=(2, 2)))  #降采样用最大池化操作,池化尺寸2*2也就是将图片缩小一半

3、接下来是卷积层参数是使用16个5X5的滤波器,卷积层输出为16个10X10的特征图。


model.add(Conv2D(filters=16,      #对应图中16个滤波器
                 kernel_size=(5,5),       #对应图中的5*5的尺寸
                 padding='valid',          #对应图中14*14的图片缩小到10*10
                 activation='relu'))           #对于cnn常用的激活函数relu

4、继续下采样,10X10的图片缩小到5X5,滤波器数量为16


model.add(MaxPooling2D(pool_size=(2, 2))) 
 #降采样用最大池化操作,池化尺寸2*2也就是将图片缩小一半

5、第五层到输出层将放在一起做代码详解,可以看到从2维图片格式变为1维向量就在这一步实现,在keras里也是一个API即可完成这一步骤,剩下的作用则就是全连接+分类。


model.add(Flatten())
# 全连接,120
model.add(Dense(120, activation='relu'))
model.add(Dropout(0.5))    #避免过拟合
# output layer
model.add(Dense(10,activation='softmax'))    #分类常用激活函数。

以上则是整个完整方案详解。需要对网络原理进行了解的请关注后续的更文。

三、总结

作为论文的网络复现,用keras进行验证、创建网络是十分方便的,需要后续的产品输出也有强大的tensorflow做后端,不愁将自己的ideal实现成产品。本文的目的旨在抛砖引玉,实际小编在论文中接触到的网络复杂的多,但是万变不离其宗,后续的不管是更复杂的操作,在keras中表现形式一般就是一个参数的调动,或者就是更新的API函数,只要细读keras文档,都能找到对应功效的网络层操作。此处附上keras的中文文档:https://keras.io/zh/

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

推荐阅读更多精彩内容