深度学习笔记5:Building Deep Networks for Classification

来源:互联网 发布:mac如何使用外置光驱 编辑:程序博客网 时间:2024/05/25 18:12

由多个稀疏自编码器的编码层和一个分类器组成。
直接上代码:

numLayers=numel(stack);a{1}=data;for i=1:numLayers      z{i+1}=stack{i}.w*a{i}+repmat(stack{i}.b,1,M);      a{i+1}=sigmoid(z{i+1});endz{numLayers+2}=softmaxTheta*a{numLayers+1};p=bsxfun(@rdivide,exp(z{numLayers+2}),sum(exp(z{numLayers+2})));%代价函数,只考虑Softmax回归模型的代价cost=-1/M*sum(sum(groundTruth.*log(p)))+lambda/2*sum(sum(softmaxTheta.^2));%Softmax单独求导softmaxThetaGrad = -1/M * (groundTruth -p) *a{numLayers+1}' + lambda * softmaxTheta;%BPd = cell(numLayers+1);d{numLayers+1} = -(softmaxTheta' * (groundTruth - p)) .* (a{numLayers+1} .* (1-a{numLayers+1}));for layer = (numLayers:-1:2)  d{layer} = (stack{layer}.w' * d{layer+1}) .* (a{layer} .* (1- a{layer}));endfor layer = (numLayers:-1:1)  stackgrad{layer}.w = (1/M) * d{layer+1} * a{layer}';  stackgrad{layer}.b = (1/M) * sum(d{layer+1}, 2);end

梯度求导,感谢博主小村长的分享,贴下图:
这里写图片描述
这里写图片描述

结合以上推导过程,加上自己理解,写出推导过程如下:
这里写图片描述

0 0
原创粉丝点击