MNIST数据集

MNIST数据库(修正版国家标准与技术研究所数据库)

MNIST是一个入门级的计算机视觉数据集,它包含各种打了标签的手写数字图片.

import tensorflow as tf//导入库
from tensorflow.examples.tutorials.mnist import input_data
#加载数据,如果不存在他会首先自动下载数据到指定的目录
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

出现这个就成功了在这里插入图片描述

train_data=mnist.train.images//图片
train_labels=np.asarray(mnist.train.labels,dtype=np.int32)//标签
import matplotlib.pyplot as plt
import tensorflow as tf
#查看数据量
print("Shape of mnist.train.image {0}",format(mnist.train.images.shape))
print("Shape of mnist.test.image {0}",format(mnist.test.images.shape))
print("Shape of mnist.validation.image {0}",format(mnist.validation.images.shape))

下载下来的数据集被分成两部分:

  1. 60000行的训练数据集(mnist.train)
  2. 10000行的测试数据集(mnist.test)

这样的切分很重要,在机器学习模型设计时必须有一个单独的测试数据集不用于训练而是用来评估这个模型的性能,从而更加容易把设计的模型推广到其他数据集上(泛化)

我们把这些图片设为“xs”,把标签设为“ys”
每一张图片包含28像素X28像素。我们可以用一个数字数组来表示这张图片:我们把这个数组展开成一个向量,长度是 28*28 = 784
从这个角度来看,MNIST数据集的图片就是在784维向量空间里面的点, 并且拥有比较复杂的结构:第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点.
在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于0和1之间,相对应的MNIST数据集的标签是介于0到9的数字,用来描述给定图片里表示的数字.

#随意查看一个图和它的label
print("Image:")
plt.imshow(mnist.test.image[5].reshape(28,28),cmap='gray')
plt.show()
print("Label:")
print(mnist.test.labels[5])

为了用于这个教程,我们使标签数据是one-hot vectors
一个one-hot向量除了某一位的数字是1以外其余各维度数字都是0,数字n将表示成一个只有在第n维度(从0开始)数字为1的10维向量
标签0将表示成([1,0,0,0,0,0,0,0,0,0,0])
MNIST的每一张图片都表示一个数字,从0到9。我们希望得到给定图片代表每个数字的概率,比如说,有个人写字不清楚,我们的模型可能推测,他写的一张包含9的图片代表数字9的概率是80%,但是判断它还是有5%的概率是8,总之,最有可能是9,还有一定可能性是8,以此类推,其他数字的概率会更小一些.
这是一个使用softmax回归模型的经典案例

softmax模型可以用来给不同的对象分配概率,即使在之后,我们训练更加精细的模型时,最后一步也需要用softmax来分配概率,就是一个事情有若干种可能性,所有可能性的和为100%,就是1!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章