设为首页 收藏本站
查看: 1470|回复: 0

[经验分享] 在Win7 x64和Python 3.4下,运行Theano的dbn.py

[复制链接]

尚未签到

发表于 2015-12-1 14:35:52 | 显示全部楼层 |阅读模式
  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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-145958-1-1.html 上篇帖子: 安装python-devel开发包 下篇帖子: python 之 决策树分类算法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表