利用神经网络识别手写数字笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 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管理包路径

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输出(通过定义小数区间)并将结果更均匀的分散开来,最后的结果线性平滑,最后通过调整“超参数”使结果可调性变得更明显,可以让人工干预的更有效。

猜你喜欢

转载自blog.csdn.net/qq_18149897/article/details/79002299