包含7万张黑底白字手写数字图片,其中55000张为训练集,5000张为验证集(validation),10000张为测试机。每张图片大小为28 × \times × 28像素,图片中纯黑色像素值为0,纯白色像素值为1。数据集的标签是长度为10的一维数组,数组中每个元素索引号对应数字出现的概率。
例如:一张28*28像素的图片变为长度为784的一维数组[0. 0. 0. 0.231 0.234 0.974 … 0. 0. 0.]输入神经网络。该图片的标签为[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.],标签中索引号为6的元素为1,表示该图片6出现的概率是100%。则该图片对应的识别结果是6。
使用input_data模块中的read_data_sets()函数加载mnist数据集。
from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets("./data/",one_hot=True)
read_data_sets()函数有两个参数,第一个参数表示数据集存放的路径,第二个参数表示数据集的存取形式。当第二个参数为True时,表示已独热码的形式存取数据集。read_data_sets()函数运行时,会检查指定路径内是否已经有数据集,若指定路径中没有数据集,则自动下载,并分为训练集(train)、验证集(validation)、测试集(test)。
print("train data size:", mnist.train.num_examples)
输出结果:train data size: 55000
print("validation data size:", mnist.validation.num_examples)
输出结果: validation data size: 5000
print("test data size:", mnist.test.num_examples)
输出结果:test data size: 10000
BATCH_SIZE=200
xs,ys=mnist.train.next_batch(BATCH_SIZE)
print("xs shape:",xs.shape)
print("ys shape:",ys.shape)
输出结果:
xs shape(200,784)
ys shape(200,10)
mnist.train.next_batch(BATCH_SIZE)函数表示随机从训练集中抽取BATCH_SIZE个样本输入到神经网络中,并将训练样本的像素值和标签分别赋给xs和ys。
x=tf.constant([1,2],[1,2])
y=tf.constant([1,1],[1,1])
z=tf.add(x,y)
A=tf.convert_to_tensor(np.array([[1,2,3,4],[5,6,7,8]]))
print(A.dtype)
b=tf.cast(A,tf.float32)
print(B.dtype)
输出结果:
A=[[1,3,4,5,6]]
B=[[1,3,4,3,2]]
with tf.Session() as sess:
print(sess.run(tf.equal(A,B))
输出结果:
[[True Ture True False False]]
本章介绍了mnist数据集的内容和使用方法,以及搭建识别mnist数据集的神经网络中常用的tensorflow工具函数。这些工具不仅对该场景有用,也是许多深度学习应用的基石。下一章将介绍具体的全连接神经网络搭建流程以及代码。
中国大学mooc《人工智能实践:Tensorflow笔记》