什么是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具体优化过程:
我自己对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