基于MNIST数据集模块化搭建神经网络实现测试程序输出手写数字识别准确率项目拆分为三步
- 了解MNIST数据集
- 模块化搭建神经网络
- 手写数字识别准确率输出
我们先来理解MNIST数据集
该数据集一共有7万张28*28像素的0~9手写数字图片,其中6万张用于训练,1万张用于测试.
每一张图片都有784个像素点,我们把784个像素点组成一维数组,喂给神经网络,作为输入特征
另外MNIST数据集也提供图片标签,其实就是图片里的数字,以一维数组形式出现
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('./data',one_hot=True)
#会自动下载,one_hot=True是以独热码形式存取
这个独热码大概类似于格雷码之类的编码方式,一种特征是一个态
mnist会自动将下载的数据集划分为训练集与测试集
这里正常的话,是不能下载的,可以借鉴这个博主的链接下载:https://blog.csdn.net/LYKymy/article/details/91128833
我们可以将数据解压成csv文件,建议用ubuntu,得到的csv文件格式如下
我们可以看看到底是什么样的手写数字
#读入手写字体数据集(小数据集:mnist_train_100.csv)
import numpy as np
import matplotlib.pyplot as plt
data_file = open("./data/mnist_test_10.csv", 'r')
data_list = data_file.readlines()
data_file.close()
for i in range(10):
all_values = data_list[i].split(',')
# np.asfarray()函数:返回转换为float类型的数组
image_array = np.asfarray(all_values[1:]).reshape((28, 28))
plt.imshow(image_array, cmap='Greys', interpolation='None')
plt.show()
大概就是这样的数字