使用Keras复现论文深度神经网络

目录

什么是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
oling2D(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即可完成这一步骤,剩下的作用则就是全连接+分类。

keras

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/

往期回顾

1.你还在一个文件一个文件的进行复制操作吗?

2.医学图像分割之—脑区域分割

3.目标检测中Bounding Box的详细解读与Python实现

4.深度学习CV?图像数据不足咋办?看这里

5.不知道咋批量爬取想要图片?老司机带你驰骋“百度图片”库

小白CV将在第一时间发布AI新动态,整理好文章

(文章原创,转载请后台联系我们)

发布了74 篇原创文章 · 获赞 64 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/wsLJQian/article/details/95092245