Theano的deep learning例程是用python 2.7的代码写的,因此,在我上文安装的python 3.4环境下是不能运行的。我的目的是把dbn.py跑起来,测试一下mndist数字图片库的识别率。
整个过程有点繁琐,问题接连不断。有的具体的出错信息就不贴了,只给出解决办法。也许会有漏掉的问题,回头补充。
1. 安装Deep Learning软件包
去下载这个文件:
DeepLearningTutorials-master.zip
解压到合适的地方。
还要下载mnist.pkl.gz,我把它放在了C:\SciSoft
2. 解决dbn.py等代码的2.x语法不认的问题
办法挺简单,用python提供的语法转换工具2to3
首先点桌面的Theano图标,出现的console里面,用CD命令进入你的DBN目录,比如我的:
E:\Software\DBN\DeepLearningTutorials-master\code
然后键入:
2to3 .
就可以把当前目录下所有py文件转换为3.x的语法的,比如把xrange自动改为range等。
注意还有个子目录hmc,进去同样处理一下。
3. 用Spyder打不开文件的问题
其实用python、IDLE直接命令行的话没有问题,但是用GUI调试程序Spyder的话,可能是我代码里加了中文(??回头确认一下??),会提示如下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 5063: invalid continuation byte
解决办法也简单,在每个代码前面加上这一行即可:
# -*- coding: utf-8 -*-
但是这样会导致Spyder里面看到的中文都是乱码。仔细研究后发现,在python3环境下,应该把py文件全部转换为unicode格式,用ultraedit逐个完成即可,文件头的coding一行也是不需要的。
4. 文件mnist.pkl.gz找不到的问题
原代码中mnist.pkl.gz是在默认目录下的,我是放在了c:\scisoft,因此把dbn.py的第282行改为:
dataset='c:\scisoft\mnist.pkl.gz', batch_size=10):
如果找不到,程序会自动去下载。
5. 解决mnist.pkl.gz文件打不开的问题
pickle.load会告诉你mnist.pkl.gz打开失败。比如:
import pickle, gzip, numpy
f = gzip.open('c:\scisoft\mnist.pkl.gz', 'rb')
train_set, valid_set, test_set = pickle.load(f)
f.close()
你会得到如下错误信息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)
正确的代码应该是:
train_set, valid_set, test_set = pickle.load(f,encoding='latin1')
因此,把logistic_sgd.py的第205行改成上面的样子就行了。
6. 解决循环变量为浮点数的问题
因为range函数要求输入为整数,而原代码中用"/"除法得到的是浮点数,需要改为"//"强制取整。
比如dbn.py的第160行:
n_batches = train_set_x.get_value(borrow=True).shape[0] / batch_size
就要改为:
n_batches = train_set_x.get_value(borrow=True).shape[0] // batch_size
类似的地方还很多,涉及到多个代码,要逐个改好。
7. 运行结果
到此为止,就应该能够运行dbn.py了。我在没有装Nvidia显卡的i7机器上运行通过,由于输出很长,只保留了最后几行:
epoch 528, minibatch 5000/5000, validation error 1.260000 %
epoch 529, minibatch 5000/5000, validation error 1.260000 %
epoch 530, minibatch 5000/5000, validation error 1.260000 %
epoch 531, minibatch 5000/5000, validation error 1.260000 %
epoch 532, minibatch 5000/5000, validation error 1.260000 %
epoch 533, minibatch 5000/5000, validation error 1.260000 %
epoch 534, minibatch 5000/5000, validation error 1.260000 %
epoch 535, minibatch 5000/5000, validation error 1.260000 %
epoch 536, minibatch 5000/5000, validation error 1.260000 %
epoch 537, minibatch 5000/5000, validation error 1.260000 %
Optimization complete with best validation score of 1.260000 %, obtained at iteration 1345000, with test performance 1.310000 %
The fine tuning code for file dbn.py ran for 581.69m
C:\SciSoft>
1.31%这个结果并不好,mnist官网上给出的最好结果是0.23%(http://yann.lecun.com/exdb/mnist/),而且好像也不是用dbn程序跑出来的。 也许,适当调整网络参数,增加层数,用好显卡多跑几遍才能得到理想的结果。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com