MNIST手写数字识别是调教一个完整的神经元来进行分类模型的构建应用,为什么说是一个完整神经元呢?因为它具备生物学上一个神经元的特征,除了有输入输出函数,还有一个激活函数,对应着生物学上神经元的阈值。
MNIST数据集的解读以及导入
这玩意说白了就是一个神经元处理分类问题(使用softmax分类,简单来说就是将概率转化为0-1区间的一个数字)。
数据获取
MNIST手写数据集来自美国国家标准与技术研究所,由250个志愿者手写数字构成。
其中训练集55000,验证集5000,测试集10000。数据集可以在http://yann.lecun.com/exdb/mnist/获取。
读取数据集
# 导入相关库
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets("D:/MNIST",one_hot=True)
# 数据集的形状
print("训练集 train 数量:",mnist.train.num_examples,
",验证集 validation 数量:",mnist.validation.num_examples,
",测试集 test 数量:",mnist.test.num_examples)
print("trains shape:",mnist.train.images.shape,
",labels shape:",mnist.train.labels.shape)
# 一副image的数据
len(mnist.train.images[0])
mnist.train.images[0].shape
# 重塑image数据
mnist.train.images[0].reshape(28,28)
# 可视化 image
import matplotlib.pyplot as plt
def plot_image(image):
plt.imshow(image.reshape(28,28),cmap="binary")
plt.show()
# 可视化image图片
plot_image(mnist.train.images[6666])
# 理解标签
mnist.train.labels[666] # 独热编码是一种稀疏的向量,其中只有一个元素设为1,其他所有元素均设为0.
# 常用于表示用于有限个可能值的字符串后者标识符