CNN卷积神经网络
1、初始化卷积网络结构
cnn.layers = {
%input layer
struct('type', 'i')
%卷积层,卷积6个特征输出,卷积核尺寸为<5,5>,卷积核为{1,6}<5,5>。
struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5)
%子抽样层,子抽样比例,此为1/2。
struct('type', 's', 'scale', 2)
%卷积层,卷积12个特征输出,卷积核尺寸为<5,5>,卷积核为{6,12}<5,5>。
struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5)
%子抽样层,子抽样比例,此为1/2。
struct('type', 's', 'scale', 2)
};
2、初始化b=0,k{i}{j}(卷积核参数);感知层ffW、ffb。
3、正向计算各层输出a{i}:
初始化a{1};
以convn(a,k,’valid’)正向卷积计算c层;
以scala=2,降采样s层;
末端以ffv=f(a{n-1},ffW,…)计算输出。
4、反向计算各层db、dk、dffW、dffb
5、修改各层b、k、ffW、ffb:
b = b – db;
k = k – dk;
ffW = ffW – dffW;
ffb = ffb - dffb;