一、封装器
在MatConvNet框架中有2种封装器,分别对应两种不同的神经网络结构。封装器Wrapper是网络构建的基础之一。主要有SimpleNN和DagNN两种,结构如下: 两种封装器的区别: . SimpleNN:用于构建简单网络,面向对象的编程。 . DagNN:有向无环图,可以实现更高级的功能和机制。 区别: 信息流的控制机制不同
二、计算模块
在MatConvNet的官网上可以查看所有的CNN的计算模块单元,主要有: 在官网上可以查看每个版本新添加的和所有的计算模块,有每个模块的详细解释: 封装器文件位置: 工程目录-> Matlab->simplenn->simplenn.m文件, 在simplenn.m文件中可以查看所有计算模块的注释和讲解:
三、数据几何结构
3.1注意
. 在Matlab编程中数据都是以矩阵的形式存在的。 . 在这个框架中,图像是以四维矩阵的形式存在的,分别是图像高度、宽度、通道数和图像数目,卷积核的一维对应上层图像的一维,分别卷积,最后每维的结果相加。 . 注意一点:单个卷积核都是三维的卷积核,分别为卷积核的长度、宽度以及维度,卷积核的维度与上一层的图像维度要一致,一个卷积核对应一个偏置,偏置的个数和卷积核的个数相同 . 池化层仅仅改变图像的宽高,不改变图像的通道数。
3.2结构图
结构图如下:pad参数为图像卷积的边缘填充方式,一般设置为0,不做任何填充,注意下面计算公式中的b和d参数为pad填充的参数,一般都是设置为0。
四、CNN计算流程
需要注意一点:在实际的梯度下降中有一个重要的参数batchsize,意义为每次批量读取这个数目的图像数据积累误差进行参数更新。迭代一次是指将所有的样本全部过一遍