转: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 ...
随机推荐
- 详解没有dSYM文件 如何解析iOS崩溃日志
Xcode支持崩溃日志自动符号化,前提是本地有当时Build/Archive生成的dSYM文件,iOS崩溃日志符号化后,可以帮助开发者更好的定位问题,但如果dSYM文件丢失或拿到的崩溃日志不是标准的c ...
- 使用CefSharp在.Net程序中嵌入Chrome浏览器(四)——启动优化
在实际使用过程中,发现有的客户端会出现chrome加载网页过慢问题,定位后发现很多是因为设置系统代理所致,此时可以通过如下启动参数禁止系统代理. {"proxy-auto-detect&qu ...
- Bootstrap datetimepicker “dp.change” 时间/日期 选择事件
$('#<!--{$inputId}-->').datetimepicker({ todayHighlight: true, format: "YYYY-MM-DD<!-- ...
- go标准库DOC与 raft
http://studygolang.com/static/pkgdoc/index.html https://github.com/avelino/awesome-go#database
- UVA 303 Pipe
点击打开链接 题意: 求光线能达到的最大横坐标 注意光线可以和管道重合 也可以经过转折点 解法: 枚举每种光线是否能通过每个转折点的截面(线段)即可 //大白p263 #include <cma ...
- YUI-compressor 在Linux下安装和使用
介绍一个非常流行的javascript压缩工具YUI compressor,可以提供更好的压缩效率:该工具由著名的Yahoo Exceptional Performance项目组出品. JSMin非常 ...
- android studio一直卡在Gradle:Executing tasks
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=554227 新建了个hello world项目,运行就卡在Gradle:Exec ...
- Java删除List和Set集合中元素
今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录 ...
- TextView 中文文档
属性名称 描述 android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) ...
- Eclipse设置方法模板
我们在项目中进行代码书写的时候,对个人所写的代码打上个人的标签的话,这样便于后期代码的维护跟踪,好处多多. 设置注释模板的入口: Window->Preference->Java-> ...