C++实现卷积神经网络
文章平均质量分 84
深度学习框架tiny_cnn的代码结构分析,前后 大约20篇博文,对其中的框架结构、实现方式、编程技巧进行较为详细的讲解
山在岭就在
天道酬勤
展开
-
C++卷积神经网络实例:tiny_cnn代码详解(12)——从CNN中看多态性
最近由于在准备论文的相关事宜,导致博客的更新速度有点缓慢,望大家见谅。不过该更新还是要更新的,所以今天我就挤出一点时间来更新一篇。由于之前的博文已经将tiny_cnn中相关的网络层结构介绍的差不多,接下来的博文中着重介绍卷积神经网络的训练流程和测试流程,重点就是前向传播算法和反向传播算法。不过我在研究CNN前向传播算法的流程时,发现作者在前向传播算法的调用过程中,很好的体现了C++的多态性特点...原创 2016-04-02 09:57:30 · 9244 阅读 · 10 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(11)——层结构容器layers类源码分析
在这篇博文中我们对tiny_cnn卷积神经网络模型中的最后一个网络结构方面的类——layers做简要分析。 首先,layers通俗的讲可以被称为是层结构的vector,即层结构容器。由于卷积神经网络是一个多层的网络模型,因此有必要将网络中各个层进行统一管理,这便引出了本篇博文中所要介绍的layers类。layers类是一个vector类型的变量,其中压入的元素就是网络中的各个层模型,这里给出...原创 2016-03-27 10:21:14 · 7263 阅读 · 0 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(10)——layer_base和layer类结构分析
在之前的博文中,我们已经队大部分层结构类都进行了分析,在这篇博文中我们准备针对最后两个,也是处于层结构类继承体系中最底层的两个基类layer_base和layer做一下简要分析。由于layer类只是对layer_base的一个简单实例化,因此这里着重分析layer_base类。 首先,给出layer_base类的基本结构框图: 一、成员变量 由于layer_base是这个类体系结构的基类...原创 2016-03-23 08:41:15 · 7926 阅读 · 0 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(9)——partial_connected_layer层结构类分析(下)
在上一篇博文中我们着重分析了partial_connected_layer类的成员变量的结构,在这篇博文中我们将继续对partial_connected_layer类中的其他成员函数做一下简要介绍。 一、构造函数 由于partial_connected_layer类是继承自基类layer,因此在构造函数中同样分为两部分,即调用基类构造函数以及初始化自身成员变量:partial_connec...原创 2016-03-19 08:21:52 · 6228 阅读 · 2 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(8)——partial_connected_layer层结构类分析(上)
在之前的博文中我们已经将顶层的网络结构都介绍完毕,包括卷积层、下采样层、全连接层,在这篇博文中主要有两个任务,一是整体贯通一下卷积神经网络在对图像进行卷积处理的整个流程,二是继续我们的类分析,这次需要进行分析的是卷积层和下采样层的公共基类:partial_connected_layer。 一、卷积神经网络的工作流程 首先给出经典的5层模式的卷积神经网络LeNet-5结构模型: 这是一个典...原创 2016-03-18 08:28:28 · 7537 阅读 · 1 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(7)——fully_connected_layer层结构类分析
之前的博文中已经将卷积层、下采样层进行了分析,在这篇博文中我们对最后一个顶层层结构fully_connected_layer类(全连接层)进行分析: 一、卷积神经网路中的全连接层 在卷积神经网络中全连接层位于网络模型的最后部分,负责对网络最终输出的特征进行分类预测,得出分类结果: LeNet-5模型中的全连接层分为全连接和高斯连接,该层的最终输出结果即为预测标签,例如这里我们需要对MNI...原创 2016-03-16 08:56:07 · 11840 阅读 · 2 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(6)——average_pooling_layer层结构类分析
在之前的博文中我们着重分析了convolutional_layer类的代码结构,在这篇博文中分析对应的下采样层average_pooling_layer类: 一、下采样层的作用 下采样层的作用理论上来说由两个,主要是降维,其次是提高一点特征的鲁棒性。在LeNet-5模型中,每一个卷积层后面都跟着一个下采样层: 原因就是当图像在经过卷积层之后,由于每个卷积层都有多个卷积模板,直接导致卷积结...原创 2016-03-14 21:52:24 · 11818 阅读 · 0 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(5)——convolutional_layer类结构信息之其他成员函数
在上一篇博客中我们介绍了convolutional_layer类的基本结构及其成员变量、构造函数的相关信息,在这篇博文中我们对其中剩余的其他成员函数进行分析。首先把convolutional_layer类的结构图给出来: 可见,convolutional_layer类除了构造函数之外,还有另外两部分成员函数,一部分负责定义当前卷积层与前一层之间的连接关系,另一部分则完成convolution...原创 2016-03-13 21:39:49 · 8932 阅读 · 0 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(4)——convolutional_layer类结构信息之成员变量与构造函数
在之前的博文中我们已经对tiny_cnn框架的整体类结构做了大致分析,阐明了各个类之间的继承依赖关系,在接下来的几篇博文中我们将分别对各个类进行更为详细的分析,明确其内部具体功能实现。在这篇博文中着重分析convolutional_layer类。convolutional_layer封装的是卷积神经网络中的卷积层网路结构,其在主程序中对应的初始化部分代码如下: 可见在测试程序中我们构建了一个...原创 2016-03-12 16:39:08 · 12056 阅读 · 5 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(3)——层间继承关系
在上一篇博文中我们顺利将tiny_cnn的程序调试通过,在这篇博文中我们尝试从整体角度给出对tiny_cnn这个深度学习框架的解读,重点论述一下其各个层直接类封装的继承关系。 一、卷积神经网络快速入门 tiny_cnn作为卷积神经网络的一种实现形式,在探讨其框架结构之前,首先需要简要介绍一些卷积神经网络相关的知识。首先,给出经典卷积神经网络的网络结构: 这个是经典的LeNet-5的网络结...原创 2016-03-11 21:48:11 · 15485 阅读 · 4 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(2)——代码试运行
在这篇博客中主要是对tiny_cnn的工程代码进行调试运行,毕竟目前对于我来说这是一个相对陌生的代码文件,拿到手里首先想到的自然是检验一下这个代码的正确性,能够顺利运行得到预期的结果之后,再开始对代码进行深度的剖析。 一、现在tiny_cnn 在上一篇博客中已经提供了项目下载地址,这里只需下载之后再解压,得到如下文件: 项目文件中主要包含代码和训练样本两部分,data文件夹中存放了测试程...原创 2016-03-10 21:53:52 · 26420 阅读 · 56 评论 -
C++卷积神经网络实例:tiny_cnn代码详解(1)——开篇
在之前完成了《C++开发人脸性别识别教程》系列博客的编写之后,我开始将工作重点转移到与我的研究生课题关联更为密切的深度学习上来。深度学习编程有几个经典的框架,首屈一指的当属Caffe,然后还有Matlab环境下的MatConvNet工具箱。有关这两个深度学习框架的资料网络上有很多,这里不再过多介绍。而我这里选择用github上的另外一个简洁的纯C++深度学习框架——Tiny_cnn。 首先将...原创 2016-03-09 21:42:20 · 29497 阅读 · 7 评论