转:UFLDL_Tutorial 笔记(deep learning绝佳的入门资料 )
http://blog.csdn.net/dinosoft/article/details/50103503
推荐一个deep learning绝佳的入门资料
* UFLDL(Unsupervised Feature Learning and Deep Learning)教程 http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B
故意把链接地址也写出来,方便看到来源,嘿嘿。
资料写得相当赞,还有中文版。看懂里面的idea是很快,exercise要写的话就得把公式细节搞搞清楚了,一定要做一下,加深理解。代码我是不会贴的,记录一些有的没的吧。特别是用octave遇到的坑,用matlab貌似是没有的,(哭
一开始用octave,因为coursera的那个课程就用octave。后来慢慢发现不对劲,UFLDL这个课程用的是matlab,而且要64bit的,不然可能内存不够。哎,发现免费的东西有时候确实不太行。
一些小技巧
- return 命令中间退出。先调试前几个step的时候有用。
- pause() 中间停住。任意键继续。不想继续就ctrl+c退出。哎,原来matlab有节的概念,就没这个问题,可以按小节运行。
- fflush(stdout) 不要缓冲了,赶紧输出迭代进度。
- close all 弹出好多figure,一个一个点太麻烦了。
Exercise:Sparse Autoencoder
直接跑发现有问题,挺烦的,原本公式就有点乱的,容易写错,还要整一些语言的问题。我的环境是win10 + octave 4.0,调用lbfgsC.c有问题,会出现lbfgsC undefined的问题,只能自己编译一下了。虽然把代码里面的lbfgsC改成lbfgs是能跑,但貌似太慢了。minFunc.m里面可以在fprintf迭代次数Iteration之后加上fflush(stdout);不然输出不及时,等得蛋疼,都不知是挂了还是怎样。
lbfgsC.mex*是供matlab/octave调用的c接口。minFunc的主页。下载下来后改改mexAll.m,然后就可以编译,没啥坑爹的依赖问题。然后把*.mex 文件拷贝到starter/minFunc就行了。
另外display_network 第93行
h=imagesc(array,'EraseMode','none',[-1 1]);
%改成
h=imagesc(array,[-1 1] ,'EraseMode','none');
- 1
- 2
- 3
- 1
- 2
- 3
Exercise:Vectorization
主代码从train.m拷一份,不过注意,把computeNumericalGradient这个过程注释掉,这个太费时了,上个实验已经验证好了。
lbfgsC: failed to allocate xxx bytes of memory
还以为内存不够,换到8G内存的机器还是不行。
看文档的faq。train.m文件要加上options.Corr=9;选项。
error: out of memory or dimension too large for Octave's index type
error: called from
loadMNISTImages at line 17 column 8
- 1
- 2
- 3
- 1
- 2
- 3
貌似有内存泄露什么鬼,执行clear -a 清一下空间就可以了,蛋疼。之前都是直接关掉octave重启。octave的gui后来也不行了,换cli吧。
PCA
像mean(M, 2)这种函数怎么理解? 按第二维进行聚合,就是”干掉”某一维。算平均数是按什么维度来求平均要想好。
- 白化(whitening) pca后的特征方差归一(所以缩放因子是1/sqrt(λ)),直观上数据在一个n维“正方体”。
- ZCA白化 数据坐标旋转到源数据方向一致(PCA后坐标轴变成主特征向量方向)。通常保留全部n维
Exercise:Softmax Regression
有没发现训练完,predict的时候其实没必要算exp(θx),直接θx就可以了,函数单调,而且最后求的是argmax。但训练的时候不能简化。
%提示 help max
[v idx] = max(a, [],1)
- 1
- 2
- 1
- 2
Exercise:Self-Taught Learning
error: out of memory or dimension too large for Octave's index type
- 1
- 1
这回貌似是2G地址不够用了,要64位的才行,总之win上要编译64位的挺麻烦,而且看了资料,即使是64位的内部也不是完全都64位化,蛋疼。matlab好像就没有这个问题,太大不想装。直接数据改小吧。
unlabeledData = unlabeledData(:, 1:5000);
%Test Accuracy: 98.280821%
5000就好了,反正结果也还不差。
%小技巧,训练实在太久,可以把结果保存起来,免得挂了重来
save opttheta
load opttheta
- 1
- 2
- 3
- 1
- 2
- 3
Exercise: Implement deep networks for digit classification
提醒注意两个地方:
1. We have implemented checkStackedAECost.m to help you check your gradients.
2. When adding the weight decay term to the cost, you should regularize only the softmax weights (do not regularize the weights that compute the hidden layer activations).
坑爹的,octave跑6w样本实在跑不动,到这里我才发现课程是针对matlab设计的。没注意第二点,隐藏层的weight是不需要正则化,2w样本跑出来准确率只有不到92%,就想验证一下是不是数据量太少的缘故(心里也没谱,因为之前用少量数据准确率没有掉得很厉害),后面实在不行,就装了matlab 64bit,整整7G多。跑了6w数据,准确率还是那么低才死心。仔细查出来忘记看第二点了,果然欲速则不达啊。
Exceeded Maximum Number of Iterations
Before Finetuning Test Accuracy: 87.300%
After Finetuning Test Accuracy: 97.880%
- 1
- 2
- 3
- 1
- 2
- 3
四个过程迭代次数分别是400,400,100,200。看准确率应该对的。先试了一下3000个数据,准确率有92%多。果然数据多才是王道。
2w数据的话(Octave跑得动,看来matlab不是必须的)
Before Finetuning Test Accuracy: 87.880%
After Finetuning Test Accuracy: 96.820%
- 1
- 2
- 1
- 2
所以1-2w数据在95%+是正常的,92%以下就要查查了。
Exercise:Learning color features with Sparse Autoencoders
这个容易,没啥好说的。
Exercise:Convolution and Pooling
以为很简单,可以秒杀,结果坑爹的。。
1. 一个问题是channel。一下子有点懵,明明上一个exercise是3个channel合并到一起的,怎么要拆开了?其实没有大的变动,就是要自己做一些数值计算合并的动作。还以为上一步的东西要改改啥的。
2. conv2函数。没用过,其实就是帮你把恶心的for循环给实现了。我是先构造了简单的矩阵来试试conv2函数。文档已经提示你要用valid参数了,再help conv2一下看看怎么配就可以了。step 3 stepSize=50居然跑不动,改成20了,数字要整除400才行。好慢,跑了近40分钟。
小结
果然动手写写代码能加深印象,调试代码才是最费时间精力的。比如softmax那里多写了一个log,调试得半死,关键是不知道到底那里错了。
另外就是训练跑起来特别费时,用cuda貌似可以加速。后面准备用theano试试看
转:UFLDL_Tutorial 笔记(deep learning绝佳的入门资料 )的更多相关文章
- 论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives
(聊两句,突然记起来以前一个学长说的看论文要能够把论文的亮点挖掘出来,合理的进行概括23333) 传统的推荐系统方法获取的user-item关系并不能获取其中非线性以及非平凡的信息,获取非线性以及非平 ...
- 深度学习论文笔记-Deep Learning Face Representation from Predicting 10,000 Classes
来自:CVPR 2014 作者:Yi Sun ,Xiaogang Wang,Xiaoao Tang 题目:Deep Learning Face Representation from Predic ...
- (转)Deep Learning深度学习相关入门文章汇摘
from:http://farmingyard.diandian.com/post/2013-04-07/40049536511 来源:十一城 http://elevencitys.com/?p=18 ...
- (转)深度学习(Deep Learning, DL)的相关资料总结
from:http://blog.sciencenet.cn/blog-830496-679604.html 深度学习(Deep Learning,DL)的相关资料总结 有人认为DL是人工智能的一场革 ...
- Deep Learning(深度学习)学习笔记整理
申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...
- Deep Learning(深度学习)学习笔记整理系列之(五)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- 【转载】Deep Learning(深度学习)学习笔记整理
http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...
- Deep Learning(深度学习)学习笔记整理系列之(八)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning深入研究整理学习笔记五
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
随机推荐
- hdu 5826 physics 物理题
physics 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5826 Description There are n balls on a smoo ...
- MikroTik RouterOS授权级别
抄了一份来自淘宝代理商的说明: P系列许可级别(适用于联网的虚拟机,如:云主机,虚拟机,VPS等) 您必须在MikroTik官网 https://mikrotik.com/client/ 上拥有一个帐 ...
- netty-socketio 示例代码
socket.io是一个不错的websocket项目,github上有它的java实现:netty-socketio 及 示例项目 netty-socketio-demo,基本上看看demo示例项目就 ...
- solaris 软件包地址
1. http://www.opencsw.org/ 在Solaris 10下 1.安装pkgutil pkgadd -d http://get.opencsw.org/now 2.查询有那些PK ...
- [转]小心C# 5.0 中的await and async模式造成的死锁
原文链接 https://www.cnblogs.com/OpenCoder/p/4434574.html 内容 UI Example Consider the example below. A bu ...
- 关闭Delphi的RTTI
{$IF CompilerVersion >= 21.0}{$WEAKLINKRTTI ON}{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS( ...
- Visual Studio 2013 sqlce 配置(转)
Visual Studio 2013 把內建 SQL CE 的管理工具拿掉了 下载SQL Server Compact Toolbox by ErikEJ并安装 打开VS2013,新建一工程,在“视图 ...
- C#编程(六十九)----------DLR简介
DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...
- win7设置电脑锁屏时间
方法/步骤 1 小编用的win7电脑,进入控制面板先~ 2 选择系统与安全选项. 3 如图所示,箭头所指,可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是. 4 如图所示, ...
- Kettle优化就这么多
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ClamReason/article/details/49930479 Kettle正常转换速度 场景 ...