深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通过PCA降维,我们能够有效的降低数据的维度,加快运算速度。而白化就是为了使得每个特征能有同样的方差,降低相邻像素的相关性。

主成分分析PCA

PCA算法可以将输入向量转换为一个维数低很多的近似向量。我们在这里首先用2D的数据进行试验,其数据集可以在UFLDL网站的相应页面http://ufldl.stanford.edu/wiki/index.php/Exercise:PCA_in_2D找到并下载。

第一步:首先我们需要获取旋转矩阵U,为了实现这一目的,我们使用MATLAB里面的SVD函数:

u = zeros(size(x, 1)); % You need to compute this
[n,m]=size(x)
sigma=(x*(x‘))/m;
[u,s,v]=svd(sigma);

我们把旋转矩阵的向量,第一个向量和第二个向量显示出来

可以看到,U的两列分别代表着在数据集的各个方向,第一列是从左下到右上,第二列的是左上到右下的那一条。

xRot = zeros(size(x)); % You need to compute this
xRot=u‘*x;

将旋转矩阵的转置与x相乘得到旋转后的矩阵。

第二步降维:第一列代表着整个数据的主方向,因此我们可以用第一列的转置与x相乘来将数据映射到一维。对于这个一维的数据,在用第一列与之相乘,即可得到降维之后的结果。

xHat = zeros(size(x)); % You need to compute this
xHat=(u(:,1:k))*(u(:,1:k)‘)*x;

白化

白话的左右

时间: 2024-10-16 17:32:37

深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening的相关文章

深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器

UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇经典教程.顾名思义,你将在这篇这篇文章中学习到无监督特征学习和深度学习的主要观点. UFLDL全文出处在这:http://ufldl.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B,本文为本人原创,参考了UFLDL的教程,是我自己个人对于这一系列教程的理解以及自己的实验结果.非盈利性质网站转载请在文章开头处著名本

深度学习入门教程UFLDL学习实验笔记二:使用向量化对MNIST数据集做稀疏自编码

今天来做UFLDL的第二个实验,向量化.我们都知道,在matlab里面基本上如果使用for循环,程序是会慢的一逼的(可以说基本就运行不下去)所以在这呢,我们需要对程序进行向量化的处理,所谓向量化就是将matlab里面所有的for循环用矩阵运算的方法实现,在这里呢,因为之前的实验我已经是按照向量化的形式编写的代码,所以这里我只把我对代码修改的部分发上来供大家参考吧.本文为本人原创,参考了UFLDL的教程,是我自己个人对于这一系列教程的理解以及自己的实验结果.非盈利性质网站转载请在文章开头处著名本文

ROS与深度相机入门教程-在ROS使用kinect v1摄像头

ROS与深度相机入门教程-在ROS使用kinect v1摄像头 说明: 介绍在ros安装和使用kinect v1摄像头 介绍freenect包 安装驱动 deb安装 $ sudo apt-get install ros-indigo-freenect-* $ rospack profile 源码安装 $ cd ~/catkin_ws/src $ git clone https://github.com/ros-drivers/freenect_stack.git $ cd ~/catkin_ws

TensorFlow和深度学习入门教程(TensorFlow and deep learning without a PhD)

前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把其PPT的参考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep learning,without a PhD> 当然登入需要翻墙,我也顺带巩固下,做个翻译,不好之处请包含指正. 当然需要安装python,教程推荐使用python3.如果是Mac,可以参考博主的另外两片博文,Mac下升级python2.7到python3.6, Mac安装tensorflow1.0 好多专业词

Python学习入门教程,字符串函数扩充详解

因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习并参与本教程的完善与写作.请在下方讨论区,回复相关问题.一起完善本文章教程的书写. Python字符串常用函数. 声明字符串变量: str = ‘关注做全栈攻城狮,写代码也要读书,爱全栈,更爱生活.’ 下面所有字符串函数函数,是对变量str进行操作: 求字符串长度: 函数使用: 运行结果: 值得注意

《Python爬虫学习系列教程》学习笔记

转自:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴趣的童鞋有帮助,如果有机会期待与大家的交流. 一.Python入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫

LINQ学习入门教程(一)

LINQ 查询简介       Linq 是一跨各种数据源和数据格式的数据模型:它在查询是,始终是把它作为一种对象来操作,可以使用基本相同的编码模型查询和数据的转换XML,SQL,ADO数据等: Linq查询的三个步骤             在我们使用Linq来查询数据的时候我们都会按照这三个步骤来做,这是初学者应该记住             1.创建数据源,这里的数据源可以是数组,集合,XML,SQL等数据库             2.新建一个查询,                 如:

zabbix2.2入门教程之监控lvs(三)

zabbix监控lvs 首先,我们在安装lvs的机器上安装zabbix agent,在agent的配置文件中添加自定义 UserParameter=lvs.all,sudo/sbin/ipvsadm -L-n|awk '{print $6}'|awk 'BEGIN{sum=0}{sum+=$1}END{print sum}'  #获取lvs的总处理请求数 UserParameter=lvs.192.168.1.2,sudo/sbin/ipvsadm -L -n|grep "192.168.1.2

转:几十种编程语言的快速入门教程- learnxinyminutes.com

原文来自于:http://top.jobbole.com/15551/ 这家网站的名称是 Learn X in Y minutes,包括了几十种编程语言的快速学习入门教程.打开几种编程语言来看了一下,教程的形式大同小异.以代码加注释的方式,来具体介绍语言的特性. 其中含中文版的教程包括: brainfuck c c# clojure clojure macros coffeescript Common Lisp css dart elisp elixir erlang Go Haskell ja