深度学习笔记5:Building Deep Networks for Classification
2015-06-16 09:26
543 查看
由多个稀疏自编码器的编码层和一个分类器组成。
直接上代码:
梯度求导,感谢博主小村长的分享,贴下图:
结合以上推导过程,加上自己理解,写出推导过程如下:
直接上代码:
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}); end z{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; %BP d = 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})); end for 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
梯度求导,感谢博主小村长的分享,贴下图:
结合以上推导过程,加上自己理解,写出推导过程如下:
相关文章推荐
- Leetcode[225]-Implement Stack using Queues
- UVA 1605 - Building for UN
- Handler,Looper,Message,MessageQueue之间关系浅析
- LeetCode "Implement Stack using Queues"
- Global build settings
- Global build settings
- UIProgressView
- mysql升级报错:ERROR 2013 (HY000): Lost connection to MySQL server during query
- MINIGUI 中主窗口、控件(即子窗口)的理解
- Android 使用XML做动画UI的深入解析
- 创优翼推荐:交互设计的7大定律。
- ActiveMQ的queue以及topic两种消息处理机制分析
- 如何取web.xml中 定义的 context-param 对应的value值?
- Handler,Looper,MessageQueue的工作原理
- iOS 基本UI控件
- Arduino 入门程序示例之直流电机(2015-06-15)
- easyui datagrid 通过复选框删除新追加的数据问题
- UIImageView
- WebRequest 对象的使用
- iOS8 UITableViewCell设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法