通过深度学习神经网络,基于MNIST实现手写数字识别算是深度学习里的“Hello world”了,记录一下个人的实现过程。
思路
将图片格式化成28*28=784像素的灰度图片,如下图:

每个像素都是一个0~255的颜色值,这样我们就得到了如下数组:

此为输入层。
收集手写图片,制成标准化的图片还是很麻烦的,可以使用MNIST提供好的图片:

也可以使用已经数字化的文件:

以mnist_test_10.csv的一组数据为例,每行代表一张手写数字图片的颜色值数组,“,”分隔,第一个是手写数字的真实值。
我们将其从文件里取出来,解析并展示一下,代码:
import numpyimport matplotlib.pyplot#从文件取出数据data_file=open("mnist_test_10.csv","r")data_list=data_file.readlines()data_file.close#把数组转为图像显示,第一个数字是7allVals=data_list[0].split(",")#asfarray把数组转成浮点数组,[1:]从第2个取到最后一个元素,reshape把一维数组改成28*28的二维数组imgArr=numpy.asfarray(allVals[1:])