卷积神经网络代码理解 1、代码来源: 代码来自DeepLearnToolbox-master,是matlab 一个深度学习的工具包,里面含有很多机器学习算法,如卷积神经网络CNN,深度信念网络DBN,自动编码AutoEncoder 等。 2、C N N 函数介绍 函数名称 功能 example.m 使用样例,设置网络结构及训练参数(卷积,下采样层数;卷积核大小,下采样降幅,学习率,迭代次数等) cnnsetup.m 构建网络结构,并初始化网络中各参数,包括各层特征图大小,卷积核权重 cnntrain.m 训练网络 cnnff.m 训练网络—向前传播过程(卷积、下采样、全连接、输出等) cnnbp.m 训练网络—误差反向传播过程 cnnapplygrads.m 权重修改,更新模型 cnntest.m 验证测试样本的准确率 3 、函数调用关系 图 3-1 函数调用关系图 4 、样例数据集 该模型使用了 mnist 的数字 mnist_u int8.mat 作为样本,每个样本特征为一个 28*28 的向量。其中训练集样本 60000,测试集样本 10000,并将首先将样本像元值转化为一维向量作为网络的输入: 样本示例如下图所示: 图 4-1 样本示例图 图 4-2 样本预处理 5 、样例网络结构 图5-1 网络结构图 6 、算法流程 图 6-1 算法流程 7 、误差反向传播过程 7.1 计算误差和 Loss Fu nction 7.2 计算单层感知机的灵敏度 7.3 把单层感知机的输入层的误差矩阵,恢复为4*4 二维矩阵形式 7.4 误差在特征提取网络【卷积降采样层】的传播 7.4.1 卷积层敏感度向前传播 假设拿出第 l 层某个特征图图,大小为3× 3,第 l+1 层核大小为2× 2 卷积核为: 灵敏度为: 采用’full’模式需先将第l+1 层2 个卷积图扩充,周围填0, I 层灵敏度 7.4.2 采样层灵敏度向前传播 假设卷积层的矩形大小为4×4, pooling 区域大小为2×2, 则 pooling 后得到的矩形大小也为2*2,如果此时 pooling 后的矩形误差敏感值如下: 则按照 mean-pooling,首先得到的卷积层应该是 4×4 大小,其值分布为(等值复制): 因为得满足反向传播时各层间误差敏感总和不变,所以卷积层对应每个值需要平摊(除以pooling 区域大小,这里pooling 层大小为2×2=4)),最后的卷积层值分布为: 7.5 计算卷积层和单层感知机的梯度 7.6 权重及偏置修改,更新模型 8 、示例(训练一个样本) 8 .1 初始化网络 8.1.1 初始化网络结构,代码如下: 其结构如下图所示,从左到右依次命名为:输入层、卷积层 1、降...