版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18149897/article/details/79002299
最近尝试使用文章中的方法识别手写数字,文章来源
第一章:利用神经网络识别手写数字
使用Anaconda3下载地址(Anaconda3)
使用包管理工具中创建TensorFlow的环境并将自带的IDE spyder用Git汉化—仔细阅读说明后实现。
1.使用anaconda3创建TensorFlow环境—-大神链接
以下数据集及源码均使用python2.6/2.7编写,如果不想自己改代码,就集成python2.7的开发环境
2.打开spyder使用python management管理包路径
3.下载测试数据、训练数据及源码
4.打开解压并更改src目录下的mnist_loader.py的数据集路径(更改为本地)
5.码代码尝试效果
#导入训练集
import mnist_loader
training_data, validation_data, test_data = mnist_loader.load_data_wrapper()
#创建神经网络结构 784个输入神经元 30个隐藏神经元 10个输出神经元
import network
net = network.Network([784, 30, 10])
net.SGD(training_data, 30, 10, 3.0, test_data=test_data)
效果:
此时,我们尝试更改隐藏层神经元的个数:
#导入训练集
import mnist_loader
training_data, validation_data, test_data = mnist_loader.load_data_wrapper()
#创建神经网络结构 784个输入神经元 100个隐藏神经元 10个输出神经元
import network
net = network.Network([784, 100, 10])
net.SGD(training_data, 30, 10, 3.0, test_data=test_data)
效果:
我们可以观察到通过更改隐藏层神经元的个数,识别效果会变得更有效,更改后最终可以识别9666张数字图片(在10000张图片中),同时,sigmod函数也成功代替了0/1输出(通过定义小数区间)并将结果更均匀的分散开来,最后的结果线性平滑,最后通过调整“超参数”使结果可调性变得更明显,可以让人工干预的更有效。