您的位置:首页 > 其它

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()就报错,定位错误在

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息