本篇文章主要介绍了"tiny_cnn代码详解(4)——convolutional_layer类结构信息之成员变量与构造函数",主要涉及到方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
在之前的博文中我们已经对tiny_cnn框架的整体类结构做了大致分析,阐明了各个类之间的继承依赖关系,在接下来的几篇博文中我们将分别对各个类进行更为详细的分...
在之前的博文中我们已经对tiny_cnn框架的整体类结构做了大致分析,阐明了各个类之间的继承依赖关系,在接下来的几篇博文中我们将分别对各个类进行更为详细的分析,明确其内部具体功能实现。在这篇博文中着重分析convolutional_layer类。convolutional_layer封装的是卷积神经网络中的卷积层网路结构,其在主程序中对应的初始化部分代码如下:

可见在测试程序中我们构建了一个具有五层网络结构(不包括全连接层)的神经网络结构,这也正是LeNet-5的结构,在其中一共有三层为卷积层,因此可见卷积层在CNN中所起的重要中用,接下来就从“convolutional_layer(32, 32, 5, 1, 6)”这个代码入手对convolutional_layer类进行分析。首先给出convolutional_layer类的整体结构:

一、成员变量
convolutional_layer类一共有五个私有的成员变量,in_保存了输入数据矩阵的基本属性:行数、列数、维数;out_保存了输出特征矩阵的基本形式:函数、列数、维数;weight_保存了权重矩阵的基本形式。connection_保存了当前卷积层与上一层(下采样层)之间的连接关系,window_size_保存了当前层卷积核尺寸。
这里有一点需要强调,in_、out_、weight_三个变量均是index3d形式,这里的index3d实际上指的是一个三元vector类型,其声明位于util.h文件中:

所以index3d类型的变量能够保存三个数值信息,并能够在其内部做一些简要运算。
二、构造函数
在研究完类的成员变量之后,接下来需要分析其内部的函数实现形式,以求对这个类的功能以及相关结构有更好的理解。convolutional_layer类的成员函数大体上可以分为三部分:构造函数、层间连接构造函数、返回函数。其中构造函数承担了成员变量的初始化任务。
2.1 构造函数的两种形式
convolutional_layer类提供了两种构造函数的形式,一种是采用默认的连接方式,也就是和前一层的卷积输出进行全连接,定义如下: