线性解码器

动机

当采用稀疏自编码器的输出层采用sigmoid作为激励函数时,要求对输入进行缩放或限制,使其位于[0,1]范围中。但是有些输入值很难满足要求,如PCA白化处理的输入并不满足该范围要求。因此,可对稀疏自编码器的输出层激活函数从an=sigmoid(zn)改为an=zn.——称为线性激励函数。

把具有线性解码器的稀疏自编码器应用于彩色特征提取

预处理:

meanPatch = mean(patches, 2);
patches = bsxfun(@minus, patches, meanPatch);% Apply ZCA whitening
sigma = patches * patches' / numPatches;
[u, s, v] = svd(sigma);
ZCAWhite = u * diag(1 ./ sqrt(diag(s) + epsilon)) * u';
patches = ZCAWhite * patches;

代价函数和梯度:

Jcost = 0;%直接误差
Jweight = 0;%权值惩罚
Jsparse = 0;%稀疏性惩罚
[n m] = size(data);%m为样本的个数,n为样本的特征数
%
% %前向算法计算各神经网络节点的线性组合值和active值
z2=W1*data+repmat(b1,1,m);
a2=sigmoid(z2);
z3=W2*a2+repmat(b2,1,m);
a3=z3;%%%和稀疏自编码器不同的地方Jcost=(0.5/m)*sum(sum((a3-data).^2));   Jweight=0.5*(sum(sum(W1.^2))+sum(sum(W2.^2)));
rho=(1/m).*sum(a2,2);
Jsparse=sum(sparsityParam.*log(sparsityParam./rho)+(1-sparsityParam).*log((1-sparsityParam)./(1-rho)));cost=Jcost+lambda*Jweight+beta*Jsparse;d3=-(data-a3);%%%和稀疏自编码器不同的地方
sterm = beta*(-sparsityParam./rho+(1-sparsityParam)./(1-rho));
d2=(W2'*d3+repmat(sterm,1,m)).*(sigmoid(z2).*(1-sigmoid(z2)));W1grad=(1/m).*(d2*data')+lambda.*W1;
W2grad=(1/m).*(d3*a2')+lambda.*W2;
b1grad=(1/m).*sum(d2,2);
b2grad=(1/m).*sum(d3,2);%-------------------------------------------------------------------
% After computing the cost and gradient, we will convert the gradients back
% to a vector format (suitable for minFunc).  Specifically, we will unroll
% your gradient matrices into a vector.grad = [W1grad(:) ; W2grad(:) ; b1grad(:) ; b2grad(:)];

深度学习笔记6:Learning color features with Sparse Autoencoders相关推荐

  1. UFLDL教程: Exercise:Learning color features with Sparse Autoencoders

    Linear Decoders Deep Learning and Unsupervised Feature Learning Tutorial Solutions 以三层的稀疏编码神经网络而言,在s ...

  2. 【DeepLearning】Exercise:Learning color features with Sparse Autoencoders

    Exercise:Learning color features with Sparse Autoencoders 习题链接:Exercise:Learning color features with ...

  3. 【深度学习(deep learning)】花书第10章 序列建模:循环和递归网络 读书笔记

    [深度学习(deep learning)]花书第10章 序列建模:循环和递归网络 读书笔记 第10章 序列建模:循环和递归网络 [深度学习(deep learning)]花书第10章 序列建模:循环和 ...

  4. 【深度学习(deep learning)】花书第12章 应用 读书笔记

    [深度学习(deep learning)]花书第12章 应用 读书笔记 第12章 应用 [深度学习(deep learning)]花书第12章 应用 读书笔记 前言 一.大规模深度学习 1.快速的CP ...

  5. 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)

    深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...

  6. 深度学习笔记其七:计算机视觉和PYTORCH

    深度学习笔记其七:计算机视觉和PYTORCH 1. 图像增广 1.1 常用的图像增广方法 1.1.1 翻转和裁剪 1.1.2 改变颜色 1.1.3 结合多种图像增广方法 1.2 使用图像增广进行训练 ...

  7. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  8. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  9. 深度学习笔记其三:多层感知机和PYTORCH

    深度学习笔记其三:多层感知机和PYTORCH 1. 多层感知机 1.1 隐藏层 1.1.1 线性模型可能会出错 1.1.2 在网络中加入隐藏层 1.1.3 从线性到非线性 1.1.4 通用近似定理 1 ...

最新文章

  1. node2vec文献出处_社交网络分析(五)-Node2Vec
  2. 使用PaddleFluid和TensorFlow实现图像分类网络SE_ResNeXt | 文末超大福利
  3. 操作系统--文件管理之索引
  4. Centos6.5静态IP设置
  5. Flurl使用Polly实现重试Policy
  6. C和指针之字符串实现strrstr函数
  7. php如何将页面嵌入在另一盒子里,如何将一个盒子在显示在浏览器的正中间_html/css_WEB-ITnose...
  8. java获取byte 长度_java获取字节的长度.
  9. asp.net mvc 2被遗忘的%:Html.AntiForgeryToken() %
  10. MySQL的基本语法(授权与备份)
  11. ACM题目————中位数
  12. Java7 和 C# 2.0
  13. ECharts中国地图篇-名称经纬度调整
  14. 初创团队如何快速获取种子用户,引爆用户核反应堆?
  15. java 获取各省市的区号_城市查区号示例代码
  16. java随机星星怎么闪_原生js实现星星闪烁的效果
  17. ARM Cortex-M 调试器 - 基础知识
  18. 禁用Ctrl+alt+del
  19. 微信小程序 —— 图片自适应后去掉底部的白边
  20. k8s集群svc端口范围,nfs做StorageClass运行故障

热门文章

  1. oracle增量合并存储过程,怎么将视图与存储过程里的逻辑合并
  2. win2003禁止web等目录执行exe,bat,com的方法
  3. 简洁的描述SpringMVC工作流程
  4. Javascript高级调试——console.table()
  5. P1628 合并序列
  6. Linux下C高手成长过程----经典书籍推荐
  7. java定时任务,每天定时执行任务
  8. Ubuntu18.04安装Multiwfn
  9. USB基础---OHCI、UHCI、EHCI和XHCI控制器简介
  10. vs2005编译DNW050A