怎么改mnist数据的标签_MNIST数据处理

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

它包含60000张训练图片,10000张测试图片,,每张图片都代表0-9的数字。图片包含28像素X28像素。我们可以用一个数字数组来表示这张图片:

把这个数组展开成一个向量,长度是 28x28 = 784。如何展开这个数组(数字间的顺序)不重要,只要保持各个图片采用相同的方式展开,从这个角度来看,MNIST数据集的图片就是在784维向量空间里面的点。因此,在MNIST训练数据集中,mnist.train.images 是一个形状为 [60000, 784] 的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于0和1之间。

相对应的MNIST数据集的标签是介于0到9的数字,用来描述给定图片里表示的数字。为了用于这个教程,我们使标签数据是"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.train.labels 是一个 [60000,784] 的数字矩阵。

Tensorflow提供了一个类来处理MNIST数据,该类会自动下载并转化MNIST数据格式,将数据从原始的数据包中解析成训练和测试神经网络时使用的格式。

from tensorflow.examples.tutorials.mnist import input_data

#载入MNIST数据集,前一个参数为数据存放路径,后一个参数表示one-hot vectors

mnist = input_data.read_data_sets('set your path',one_hot=True)

print('Training data size',mnist.train.num_examples)

print('Validating data size',mnist.validation.num_examples)

print('Testing data size',mnist.test.num_examples)

print('Example training data',mnist.train.images[0])

print('Example training data label',mnist.train.labels[0])

input_data.read_data_sets函数将MNIST数据集分为train、validation和test,其中train有55000张图片,validation有5000,两者组成训练集,而test有10000张图片。因为神经网络的输入是一个特征向量,所以将一张二维图片的像素矩阵放到一个一维数组中可以方便Tensorflow将图片的像素矩阵提供给神经网络的输入层。像素矩阵中元素的值域为[0,1],它代表了颜色的深浅。其中0表示白色背景,1则为黑色前景。此外,为方便使用随机梯度下降算法,input_data.read_data_sets函数生成的类还提供mnist.train.next_batch函数,以从训练数据中读取一小部分作为训练batch。

batch_size = 100

#从train中取出100个训练数据

xs,ys = mnist.train.next_batch(batch_size)

#X为100*784,Y为100*10

print('X shape: ',xs.shape)

print('Y shape: ',ys.shape)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值