C++卷积神经网络实例:tiny_cnn代码具体解释(6)——average_pooling_layer层结构类分析
在之前的博文中我们着重分析了convolutional_layer类的代码结构。在这篇博文中分析相应的下採样层average_pooling_layer类:
一、下採样层的作用
下採样层的作用理论上来说由两个,主要是降维,其次是提高一点特征的鲁棒性。在LeNet-5模型中。每一个卷积层后面都跟着一个下採样层:
原因就是当图像在经过卷积层之后。因为每一个卷积层都有多个卷积模板,直接导致卷积结果输出的特征矩阵相对于输入的数据矩阵其维数要提高数倍。再加上存在若干卷积层(谷歌的某些模型甚至超过100层),若不进行降维操作。最后的特征维数可想而知,因此在这里下採样层就充当了一个特征降维的角色。比方这里用的是2*2模板均值下採样,说白了就是四个相邻像素经过加权计算变成一个,维数变为原来的四分之中的一个,降维性能显而易见。
至于鲁棒性问题,理论上仅仅要是合理的降维手段。对鲁棒性都会有一定的提升(当然这是我的个人观点)。
二、average_pooling_layer类结构
average_pooling_layer类相同继承自基类partial_connected_layer,和前文中所说的convolutional_layer类算是相同继承层次,因此与convolutional_layer类在结构上也很类似,但下採样层因为其功能相对单一,因此在结构上比convolutional_layer类要简洁不少
2.1 成员变量
average_pooling_layer类的成员变量一共同拥有两个,分别保存输入数据矩阵的属性和下採样后输出特征矩阵的属性:
至于有关layer_size_t、index3d等类型的相关知识在上一篇博客中已经进行了具体介绍,这里不再赘述。
2.2 构造函数
average_pooling_layer类的构造函数十分简洁,基本上就是调用了基类partial_connected_layer的构造函数,然后在完毕自己类中两个成员变量的初始化而已:
这里稍稍介绍一下pooling_size_mismatch()函数。这是一个定义在基类layer中的函数,作用就是抛出尺寸异常的信息,而在每一层中对尺寸匹配的检验标准都不同。因此各个子类在调用这个函数给出异常信息时,须要根据相应层的标准来进行推断,比方在下採样层,我们觉得假设输入数据矩阵的尺寸不是下採样窗体的整数倍时,则无法正常进行分块降维,即视为尺寸不匹配。抛出尺寸异常信息:
2.3 其它函数
除了构造函数,下採样层还提供了一些其它函数,包含下採样矩阵权重初始化函数和偏置初始化函数(在下採样的过程中相同须要加上偏置)init_connection(),权重矩阵设置函数connect_kernel(),以及输出特征矩阵图像化的转换函数output_to_image()。以上这些函数与前一篇博文中convolutional_layer类中的相应的函数功能能够说是全然相同(毕竟都是继承与同一个基类)。这里不再赘述。
三、注意事项
1、下採样层后的激活函数
在实际的卷积神经网络模型中,对卷积特征输出进行下採样之后,紧接着应该送入激活函数中,换句话说下採样层和激活函数应该是紧密相关的。只是在这里作者并没有将激活函数直接放在average_pooling_layer类中,而是将每一个激活函数都封装成相应的类,并放到activation命名空间下:
2、LeNet-5模型的经典性
这里在介绍卷积伸神经网络模型时一直沿用LeNet-5模型,主要是因为它既结构简单又堪称CNN的经典之作,但在实际应用中卷积神经网络的层数可不止这些。举个样例,2014年的VGG模型已经将网络扩展到16层的深度,至于各大深度学习研究院内部已经将网络加深到多少层这个已经不得而知。总之中的一个两块泰坦级别的N卡是不够用的。
C++卷积神经网络实例:tiny_cnn代码具体解释(6)——average_pooling_layer层结构类分析的更多相关文章
- C++卷积神经网络实例:tiny_cnn代码具体解释(8)——partial_connected_layer层结构类分析(上)
在之前的博文中我们已经将顶层的网络结构都介绍完毕,包括卷积层.下採样层.全连接层,在这篇博文中主要有两个任务.一是总体贯通一下卷积神经网络在对图像进行卷积处理的整个流程,二是继续我们的类分析.这次须要 ...
- C++卷积神经网络实例:tiny_cnn代码具体解释(7)——fully_connected_layer层结构类分析
之前的博文中已经将卷积层.下採样层进行了分析.在这篇博文中我们对最后一个顶层层结构fully_connected_layer类(全连接层)进行分析: 一.卷积神经网路中的全连接层 在卷积神经网络中全连 ...
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究
一.为什么要进行实例探究? 通过他人的实例可以更好的理解如何构建卷积神经网络,本周课程主要会介绍如下网络 LeNet-5 AlexNet VGG ResNet (有152层) Inception 二. ...
- C++卷积神经网络实例(一)
跟着这位博主来学习C++的卷积网络实例,因为作者一直在更新代码,所以新的代码和这位博主的分析有所不同:这位博主写的东西太泛了,没有讲到实质, 可以参考下他分析的类与类之间的关系图.. 前四节:http ...
- 经典的卷积神经网络及其Pytorch代码实现
1.LeNet LeNet是指LeNet-5,它是第一个成功应用于数字识别的卷积神经网络.在MNIST数据集上,可以达到99.2%的准确率.LeNet-5模型总共有7层,包括两个卷积层,两个池化层,两 ...
- 卷积神经网络CNN的原理(三)---代码解析
卷积神经网络在几个主流的神经网络开源架构上面都有实现,我这里不是想实现一个自己的架构,主要是通过分析一个最简单的卷积神经网络实现代码,来达到进一步的加深理解卷积神经网络的目的. 笔者在github上找 ...
- 深入学习卷积神经网络(CNN)的原理知识
网上关于卷积神经网络的相关知识以及数不胜数,所以本文在学习了前人的博客和知乎,在别人博客的基础上整理的知识点,便于自己理解,以后复习也可以常看看,但是如果侵犯到哪位大神的权利,请联系小编,谢谢.好了下 ...
- Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...
- 卷积神经网络CNN与深度学习常用框架的介绍与使用
一.神经网络为什么比传统的分类器好 1.传统的分类器有 LR(逻辑斯特回归) 或者 linear SVM ,多用来做线性分割,假如所有的样本可以看做一个个点,如下图,有蓝色的点和绿色的点,传统的分类器 ...
随机推荐
- 搜索 || BFS || POJ 2157 Maze
走迷宫拿宝藏,拿到所有对应的钥匙才能开门 *解法:从起点bfs,遇到门时先放入队列中,取出的时候看钥匙够不够决定开不开门,如果不够就把它再放回队列继续往下走,当队列里只有几个门循环的时候就可以退出,所 ...
- Visual Odometry
http://www.cvlibs.net/datasets/kitti/eval_odometry.php
- JavaSE-30 BigDecimal类的使用
问题 Java(其他编程语言也存在类似问题)中浮点数直接进行算术运算会导致精度丢失. 示例代码: System.out.println("1.0 - 0.9 =" + (1.0 - ...
- MySQL-02 数据表管理
学习要点 数据类型 数据字段属性 数据表的类型及存储位置 索引 数据表对象管理 数据类型 数据库中的数据类型分为字段类型和值类型,定义如下: 在设计数据表字段的时候,字段类型定义为三大类:数值类.字符 ...
- win7下自动更新svn目录
!!注意,文件编码必须是ANSI.否则中文路径会乱码 ::这里是svn安装目录 set svnExe="C:\Program Files\TortoiseSVN\bin\TortoisePr ...
- [bzoj4899]记忆的轮廓 题解(毒瘤概率dp)
题目背景 四次死亡轮回后,昴终于到达了贤者之塔,当代贤者夏乌拉一见到昴就上前抱住了昴“师傅!你终于回来了!你有着和师傅一样的魔女的余香,肯定是师傅”.众所周知,大贤者是嫉妒魔女沙提拉的老公,400年前 ...
- windows10下Anaconda的安装与tensorflow、opencv的安装与环境配置
刚开始学习tensorflow和opencv这一块的知识,所以用博客这个平台来把自己这段学习的经历与感想写下来. tensorflow和opencv则用Anaconda来下载和配置环境. 下载Anac ...
- InnoDB INFORMATION_SCHEMA System Tables
InnoDB INFORMATION_SCHEMA System Tables 可以使用InnoDB INFORMATION_SCHEMA系统表提取有关InnoDB管理的schema对象的元数据. 此 ...
- hdu4407Sum(容斥原理)
http://acm.hdu.edu.cn/showproblem.php?pid=4407 Sum Time Limit: 2000/1000 MS (Java/Others) Memory ...
- powerdesigner批量导出sql