LeNet5的一个MATLAB实现的代码解析(2)

向前传递过程
function [out, cnet] = sim(cnet,inp)
%作者对程序的介绍
%SIM simulate convolutional neural network
%
% Syntax
%
% [out, sinet] = sim(cnet,inp)
%
% Description
% Input:
% cnet - Convolutional neural network class object
% inp - input image
% Output:
% cnet - Convolutional neural network with unchanged weignts and biases
% but with saved layers outputs
% out - simulated neural network output
%
%© Sirotenko Mikhail, 2009

cnet.SLayer{1}.SS{1} = subsample(inp,cnet.SLayer{1}.SRate);%池化
cnet.SLayer{1}.YS{1} = cnet.SLayer{1}.SS{1}.*cnet.SLayer{1}.WS{1}+cnet.SLayer{1}.BS{1} ;
%第一次计算
cnet.SLayer{1}.XS{1} = feval(cnet.SLayer{1}.TransfFunc,cnet.SLayer{1}.YS{1});
%第二次计算(使用激活函数激活,本程序用Sigmoid函数)
for k=2:(cnet.numLayers-cnet.numFLayers)
if(rem(k,2)) %Parity check
%S-layer 池化层
for l=1:cnet.CLayer{k-1}.numFMaps %For all feature maps from previous layer
%池化(平均)
XC = reshape(cnet.CLayer{k-1}.XC,1,[]); %将矩阵转化为向量
cnet.SLayer{k}.SS{l} = subsample(XC{l},cnet.SLayer{k}.SRate);%此程序中SRate = 2
cnet.SLayer{k}.YS{l} = cnet.SLayer{k}.SS{l}*cnet.SLayer{k}.WS{l}+cnet.SLayer{k}.BS{l} ;
cnet.SLayer{k}.XS{l} = feval(cnet.SLayer{k}.TransfFunc,cnet.SLayer{k}.YS{l});
end
else
%C-layer 卷积层
YC = num2cell(zeros(cnet.CLayer{k}.numKernels,1));
for l=1:cnet.CLayer{k}.numKernels %For all convolutional kernels
for m=find(cnet.CLayer{k}.ConMap(l,:)) %根据ConMap中提供的卷积模式选择特征图进行卷积
%卷积
YC{l} = YC{l}+fastFilter2(cnet.CLayer{k}.WC{l},cnet.SLayer{k-1}.XS{m},‘valid’)+cnet.CLayer{k}.BC{l};
end
end
cnet.CLayer{k}.YC = YC;
cnet.CLayer{k}.XC=cnet.CLayer{k}.YC; %卷积时激活函数为y = x

end

end

%XC转化为向量
XC = cell2mat(cnet.CLayer{k}.XC)’;
%F层的计算
for k=(cnet.numLayers-cnet.numFLayers+1):cnet.numLayers
if (k == cnet.numCLayers+cnet.numSLayers+1) %前一层是卷积层
cnet.FLayer{k}.Y = XCcnet.FLayer{k}.W+cnet.FLayer{k}.B;
cnet.FLayer{k}.X = feval(cnet.FLayer{k}.TransfFunc,cnet.FLayer{k}.Y);
else
cnet.FLayer{k}.Y = cnet.FLayer{k-1}.X
cnet.FLayer{k}.W+cnet.FLayer{k}.B;
cnet.FLayer{k}.X = feval(cnet.FLayer{k}.TransfFunc,cnet.FLayer{k}.Y);%激活
end
end

out = cnet.FLayer{k}.X;

猜你喜欢

转载自blog.csdn.net/tigerc0/article/details/82530173