deepLearnToolbox-master是一个深度学习matlab包,里面含有很多机器学习算法,如卷积神经网络CNN,深度信念网络DBN,自动编码AutoEncoder(堆栈SAE,卷积CAE)的作者是 RasmusBerg Palm。
今天给介绍deepLearnToolbox-master中的CNN部分。
DeepLearnToolbox-master中CNN内的函数:
调用关系为:
该模型使用了mnist的数字mnist_uint8.mat作为训练样本,作为cnn的一个使用样例,每个样本特征为一个28*28=的向量。
网络结构为:
让我们来分析各个函数:
一、Test_example_CNN
三、cnntrain.m.
四、cnnff.m.
五、cnnbp.m.
五、cnnapplygrads.m.
六、cnntest.m.
一、Test_example_CNN:
1设置CNN的基本参数规格,如卷积、降采样层的数量,卷积核的大小、降采样的降幅
2 cnnsetup函数 初始化卷积核、偏置等
3 cnntrain函数 训练cnn,把训练数据分成batch,然后调用
3.1 cnnff 完成训练的前向过程,
3.2 cnnbp计算并传递神经网络的error,并计算梯度(权重的修改量)
3.3 cnnapplygrads 把计算出来的梯度加到原始模型上去
4 cnntest函数,测试当前模型的准确率
该模型采用的数据为mnist_uint8.mat,
含有70000个手写数字样本其中60000作为训练样本,10000作为测试样本。
把数据转成相应的格式,并归一化。
二、Cnnsetup.m
该函数你用于初始化CNN的参数。
设置各层的mapsize大小,
初始化卷积层的卷积核、bias
尾部单层感知机的参数设置
bias统一设置为0
权重设置为:-1~1之间的随机数/sqrt(6/(输入神经元数量+输出神经元数量))
对于卷积核权重,输入输出为fan_in, fan_out
fan_out= net.layers{l}.outputmaps * net.layers{l}.kernelsize ^ 2;
%卷积核初始化,1层卷积为1*6个卷积核,2层卷积一共6*12=72个卷积核。对于每个卷积输出featuremap,