随书实验须知

书本来源

书本里的代码是python2.7的,所以我建议大家学习的时候都是安装Python2.7来进行实验。如果非要用python3.4的话,我这里把我做的修改,做个参考:



首先是python3.4里面没有cPickle了,所以首先在mnist_loader.py里面要把:

import cPickle
改为:

import pickle as cPickle
并且,用法也稍微有点不同:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)报这个错的时候,要改成:

training_data, validation_data, test_data = pickle.load(f, encoding='bytes'),参考这篇博客

其次,因为在python2里面,map、zip等都返回的是list,所以可以用len()函数,但是现在map和zip都是返回一个对象。

#python2
>>> a = zip((1, 2), (3, 4))
>>> a
[(1, 2), (3, 4)]
#  可以看到这里返回的是一个list
#python3
>>> a = zip((1, 2), (3, 4))
>>> a
<zip object at 0x1007096c8>
所以在所有报object of type 'zip' has no len()地方的时候,都可能需要改成len(list(xxx))。

再次,所有的xrange在python3里都是无效的,要改成range。

最后,即使你改了前面所有的东西………………也不一定能成功跑起来。



我折腾了半天,最后还是决定在自己的阿里云平台上跑,因为上面是python2.7

在上面弄的话,步骤就简单多了,我们以第一个手写输入为例:

首先安装numpy 与scipy

yum -y install gcc gcc-c++ numpy python-devel scipy
然后gitclone代码:

git clone https://github.com/mnielsen/neural-networks-and-deep-learning.git


接着cd进目录,然后执行python,书的作者把代码封装得相当好,所以应该是几行代码就完成,进入python shell之后敲:

import mnist_loader #包含加载数据的python代码
import network #包含network类
training_data, validation_data, test_data = mnist_loader.load_data_wrapper() #加载数据:训练集、交叉验证集、测试集
net = network.Network([784, 30, 10]) #创建三层神经网络,神经元个数分别为784,30,10</span>
net.SGD(training_data, 30, 10, 3.0, test_data=test_data) #训练迭代次数=30, 用于随机梯度下降法的最小样本数=10(mini-batch-size),学习速率=3.0

因为每个人可能的初始权重和偏置是可能不同的,所以开始的过程每个人的结果可能不同。

但是最后一般都能够达到94%以上。


Epoch 29: 9453 / 10000



 

 经过这一节的学习,我觉得我们可以先不看代码,把概念先过一遍,像我这样在环境配置上和代码上纠缠很浪费时间。建议大家不要学我。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值