DeepLearning工具Theano学习记录(一) 逻辑斯蒂回归
2015-03-26 22:28
417 查看
什么是Theano?(以下内容摘自网络)
** Theano是一个python库,使得写深度学习模型更加容易,同时也给出了一些关于在GPU上训练它们的选项。
2015/3/26
参考博客:http://blog.csdn.net/u012162613/article/details/43225445
仍然报错:
头大了,只能一边求救于师兄,一边自己google。
可能相关的web pages:
http://stackoverflow.com/questions/24402213/theano-test-optimization-failure-due-to-constant-folding-on-ubuntu
// theano.test()就报错,定位错误在
pycuda:http://mathema.tician.de/software/pycuda/
安装完pycuda后,仍然有上述错误。运行OK。
2015/3/30
查看gpu的使用情况,参考博客:http://my.oschina.net/zhangxu0512/blog/262932 nvidia-smi
2015/4/2
在GPU上用Logistic Regression, Multilayer Perceptron(MLP)和CNN跑MNIST的结果。
Logistic Regression代码疑问:
Q. patience作用
A:minibatch SGD具体优化过程:
将training_set, validation_set, test_set 按照batch_size切分。
在training_set上以切分后training_batch一个batch一个batch的进行参数优化。每优化validation_frequency 次数时候(注意这个值受 patience变化可能变化 validation_frequency = min(n_train_batches, patience / 2)),学习出的参数在validation_set和test_set上进行测试。
如果在validation_set上的测试结果比以前测的validation最好测试结果有提高,就保存该次测试结果为validation最好测试结果。再进一步,如果提高的非常明显(this_validation_loss < best_validation_loss * improvement_threshold),那么就要对patient进行修正(patience = max(patience, iter * patience_increase))。
终止条件:1.达到了一定的迭代次数(由参数n_epochs指定,迭代次数上限为n_epochs * n_train_batches)或者
2. 迭代累加次数iter超过patience。
我自己对patience的理解:iter是累加的训练过的batch数量。n_epochs为迭代上限次数,而patience是理想迭代次数。也就是我们希望在patience的次数里看到发现不仅在training_set上表现好而且在validation_set表现好的参数的趋势。为什么说是趋势?
因为每次让我们看到希望(在validation_set上提高的非常明显),我们就开始修正patience值,让程序再多找一会。极端假设一下,后面优化出的参数在validation_set上的表现都不如第一次的,patience的值一直没有增加,累计迭代patience次数后,迭代终于。
相反如果在快到patience次数时候,发现了一组在validation_set上提高的非常明显参数,此时patience值会相应的增加,在不达到迭代上限次数(n_epochs
* n_train_batches)的情况下,让程序继续进行迭代。
2015/4/3
在DeepLearning工具Theano学习记录(二) 多层感知机的实验中发现的确如此。Experiment 1 跑了1000个epoch,达到设置epoch的上限,迭代被终止了。但是Experiment
2 ,只跑了467个epoch迭代就终止了。Experiemnt 2中在epoch=234中找到最优参数组后,陷入了一个局部最优,一直没有发现更优的结果。累计迭代轮数iter达到patience后[机器感觉不到找到更优参数的希望],迭代结束。
程序中的n_epochs设置为1000, 在batch_size设置为600时候n_train_batches为83,此时迭代上限为83*1000。但是patience设置为5000。
在batch_size设置为600,迭代结束在epochs=74:
在batch_size设置为300,迭代也结束在epochs=74:
参考:
http://blog.csdn.net/u012162613/article/details/43225445
Logistic Regression : http://deeplearning.net/tutorial/logreg.html
MLP :http://deeplearning.net/tutorial/mlp.html#mlp
CNN: http://deeplearning.net/tutorial/lenet.html#lenet
** Theano是一个python库,使得写深度学习模型更加容易,同时也给出了一些关于在GPU上训练它们的选项。
2015/3/26
参考博客:http://blog.csdn.net/u012162613/article/details/43225445
仍然报错:
头大了,只能一边求救于师兄,一边自己google。
可能相关的web pages:
http://stackoverflow.com/questions/24402213/theano-test-optimization-failure-due-to-constant-folding-on-ubuntu
// theano.test()就报错,定位错误在
import pycuda import pycuda.autoini
pycuda:http://mathema.tician.de/software/pycuda/
安装完pycuda后,仍然有上述错误。运行OK。
2015/3/30
查看gpu的使用情况,参考博客:http://my.oschina.net/zhangxu0512/blog/262932 nvidia-smi
2015/4/2
在GPU上用Logistic Regression, Multilayer Perceptron(MLP)和CNN跑MNIST的结果。
Logistic Regression代码疑问:
Q. patience作用
A:minibatch SGD具体优化过程:
将training_set, validation_set, test_set 按照batch_size切分。
在training_set上以切分后training_batch一个batch一个batch的进行参数优化。每优化validation_frequency 次数时候(注意这个值受 patience变化可能变化 validation_frequency = min(n_train_batches, patience / 2)),学习出的参数在validation_set和test_set上进行测试。
如果在validation_set上的测试结果比以前测的validation最好测试结果有提高,就保存该次测试结果为validation最好测试结果。再进一步,如果提高的非常明显(this_validation_loss < best_validation_loss * improvement_threshold),那么就要对patient进行修正(patience = max(patience, iter * patience_increase))。
终止条件:1.达到了一定的迭代次数(由参数n_epochs指定,迭代次数上限为n_epochs * n_train_batches)或者
2. 迭代累加次数iter超过patience。
我自己对patience的理解:iter是累加的训练过的batch数量。n_epochs为迭代上限次数,而patience是理想迭代次数。也就是我们希望在patience的次数里看到发现不仅在training_set上表现好而且在validation_set表现好的参数的趋势。为什么说是趋势?
因为每次让我们看到希望(在validation_set上提高的非常明显),我们就开始修正patience值,让程序再多找一会。极端假设一下,后面优化出的参数在validation_set上的表现都不如第一次的,patience的值一直没有增加,累计迭代patience次数后,迭代终于。
相反如果在快到patience次数时候,发现了一组在validation_set上提高的非常明显参数,此时patience值会相应的增加,在不达到迭代上限次数(n_epochs
* n_train_batches)的情况下,让程序继续进行迭代。
2015/4/3
在DeepLearning工具Theano学习记录(二) 多层感知机的实验中发现的确如此。Experiment 1 跑了1000个epoch,达到设置epoch的上限,迭代被终止了。但是Experiment
2 ,只跑了467个epoch迭代就终止了。Experiemnt 2中在epoch=234中找到最优参数组后,陷入了一个局部最优,一直没有发现更优的结果。累计迭代轮数iter达到patience后[机器感觉不到找到更优参数的希望],迭代结束。
程序中的n_epochs设置为1000, 在batch_size设置为600时候n_train_batches为83,此时迭代上限为83*1000。但是patience设置为5000。
在batch_size设置为600,迭代结束在epochs=74:
在batch_size设置为300,迭代也结束在epochs=74:
参考:
http://blog.csdn.net/u012162613/article/details/43225445
Logistic Regression : http://deeplearning.net/tutorial/logreg.html
MLP :http://deeplearning.net/tutorial/mlp.html#mlp
CNN: http://deeplearning.net/tutorial/lenet.html#lenet
相关文章推荐
- DeepLearning工具Theano学习记录(三) CNN卷积神经网络
- DeepLearning工具Theano学习记录(二) 多层感知机
- Coursera deeplearning.ai 深度学习笔记1-2-Neural Network Basics-逻辑回归原理推导与代码实现
- Theano深度学习(逻辑回归)
- 【学习笔记】斯坦福大学公开课(机器学习) 之逻辑斯蒂回归(续)
- 逻辑斯蒂回归(logistic regression)学习笔记
- Hinton Neural Networks课程笔记3c:学习逻辑斯蒂回归
- 逻辑斯蒂回归学习
- 【学习笔记】斯坦福大学公开课(机器学习) 之逻辑斯蒂回归
- 学习笔记:逻辑斯蒂回归(logistic regression)
- Selenium 网页测试工具和perl脚本结合,我自己记录的学习过程
- 计算广告学习笔记 4.6竞价广告系统-点击率预测与逻辑回归
- theano学习指南2(翻译)-对数回归分类器
- Deep Learning 学习笔记(4):Logistic Regression 逻辑回归
- 对数线性模型之一,逻辑回归、广义线性模型学习总结
- 对数线性模型之一(逻辑回归), 广义线性模型学习总结
- 【学习笔记】逻辑回归模型原理与应用
- 局部加权回归、逻辑斯蒂回归、感知器算法—斯坦福ML公开课笔记3
- 深度学习3线性回归,逻辑回归
- 统计学习方法-Logistic(逻辑斯蒂)回归