CNN卷积神经网络原理简介+代码详解在调试代码中出现的问题

https://blog.csdn.net/u012162613/article/details/43225445

最近在学习CNN卷积神经网络时,发现这篇文章不错,就想要试着学习一下,但是在调试上面这篇文章给的程序的时候,在import部分就遇到一些困难,各种错误,下面分享一下

很多错误产生原因都是因为python3与python2的不同之处,网上很多程序都是较早之前用python2写的,现在我们大多用python3来编译程序,这就导致出现了很多问题,但是只要在网上耐心查找,都是可以找到解决方案的。作为一个python初学者,我就是各种百度解决问题,然后再自己总结下来,方便以后看。


首先是报错    ImportError: cannot import name 'downsample'

from theano.tensor.signal import downsample

这句程序会有问题

因为我用的是python3.5,python3跟python2区别还是挺多的,在python3里面这句已经不好用了,应该替换为

from theano.tensor.signal.pool import pool_2d

下面有句代码用到了这个,所以也需要跟着修改


改成



其次是

from logistic_sgd import LogisticRegression, load_data

from mlp import HiddenLayer

这两句也都有问题,经试验,问题是一样的,我参考了这篇文章

https://stackoverflow.com/questions/35792910/logistic-sgd-module-where-to-find-it

看了上面这个链接,应该就可以解决问题了,下面是我细致点,实际点解释一下

在下面的这个网址   http://deeplearning.net/tutorial/code/      中,

找到下面这两个文件



将里面的内容复制一下,在你的工程项目里,添加这两个 .py 文件,注意,名字也要一样

我用的是pycharm这个软件,就是在建立的这个项目,三个文件,3.py这个文件就是执行CNN数字识别的那个程序,挺长的,然后需要另外这两个文件来辅助它,否则就会提示各种缺少model,示例下图


                                                   


再者,报错     NameError: name 'xrange' is not defined

在Python 3中,range()与xrange()合并为range( ),我的python版本为python3.5。


将xrange( )函数全部换为range( )


还有报错     UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)

参考这篇文章     解决Python3版中的UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinnal not in

将     train_set, valid_set, test_set = pickle.load(f)         换成              train_set, valid_set, test_set = pickle.load(f,encoding='bytes')


还有一处报错    'float' object cannot be interpreted as an integer

参考这篇文章       TypeError: 'float' object cannot be interpreted as an integer 4

python3的range()里面必须是int型的,不能是float型,这与python2又有区别了。

将     for minibatch_index in range(n_train_batches):  替换成   for minibatch_index in range(int(n_train_batches)):

程序即可正常运行





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值