测试环境
- python2.7
- JupyterLab
- tensorflow1.4.0
Ipython文件下载地址,帮忙star一下
环境配置
!pip install tensorflow==1.4.0
!pip install scipy==1.2.1 #(不行就安装scipy1.0.0)否则报错(no modul named 'scipy')
!pip install Pillow #否则报错('module' object has no attribute 'toimage')
!pip install numpy
理论依据
1.MNIST数据集介绍
- MNIST数据集主要由一-些手写数字的图片和相应的标签组成,图片一共有10类,分别对应从0~9,共10个阿拉伯数字。
- 原始的MNIST数据库一共包含下面4个文件
文件名 | 大小 | 用途 |
---|---|---|
train-images-idx3-ubyte.gz | 9.45M | 训练图像数据 |
train-labels-idx1-ubyte.gz | 0.03M | 训练图像的标签 |
t10k-images-idx3-ubyte.gz | 1.57M | 测试图像数据 |
t10k-labels-idx1-ubyte.gz | 4.4K | 测试图像的标签 |
图像数据
:是指很多张手写字符的图像图像标签
:是指每张图像实际对应的数字是几,也就是说在MNIST数据集中的每一张图像都事先标明了对应的数字
2.下载MNIST数据集,并打印一些基本信息
1.在执行语句
mnist = input data.read data_sets("MNIST data/",one_hot=-True)
时,2.TensorFlow会检测数据是否存在。当数据不存在时,系统会自动将数据下载到
MNIST _data/
文件夹中。3.当执行完语句后,读者可以自行前往
MNIST _data/
文件夹下查看上述4个文件是否已经被正确地下载。4.下载数据集之后,我们利用一下属性访问数据集,变量mnist.train.images和mnist.rain.labels、后四个mnist.validation.images 、mnist,validation.labels 、mnist.testimages 、mnistest.labels四个变量与它们非常类似,唯一的区别只是图像的个数不同,
属性名 | 内容 |
---|---|
mnist.train.images | 训练图像 |
mnist.rain.labels | 训练标签 |
mnist.validation.images | 验证图像 |
mnist,validation.labels | 验证标签 |
mnist.testimages | 测试图像 |
mnistest.labels | 测试标签 |
# coding:utf-8
# 从tensorflow.examples.tutorials.mnist引入模块。这是TensorFlow为了教学MNIST而提前编制的程序
from tensorflow.examples.tutorials.mnist import input_data
# 从MNIST_data/中读取MNIST数据。这条语句在数据不存在时,会自动执行下载
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
# 查看训练数据的大小
print(mnist.train.images.shape) # (55000, 784)
print(mnist.train.labels.shape) # (55000, 10)
# 查看验证数据的大小
print(mnist.validation.images.shape) # (5000, 784)
print(mnist.validation.labels.shape) # (5000, 10)
# 查看测试数据的大小
print(mnist.test.images.shape) # (10000, 784)
print(mnist.test.labels.shape) # (10000, 10)
# 打印出第0幅图片的向量表示
print(mnist.train.images[0, :])
# 打印出第0幅图片的标签
print(mnist.train.labels[0, :])
# 打印成功信息
print("数据集下载成功!")
原始的MNIST数据集中包含了60000张训练图片和10000张测试图片。而在TensorFlow中,又将原先的60000张训练图片重新划分成了新的55000张训练图片和5000张验证图片。所以在mnist对象中,数据一共分为三部分:mnist.train是训练图片数据,mnist.validation 是验证图片数据,mnist.test是测试图片数据,这正好对应了机器学习中的训练集、验证集和测试集。一般来说,会在训练集上训练模型,通过模型在验证集上的表现调整参数,最后通过测试集确定模型的性能。
3.将MNIST数据集保存为图片
在原始的MNIST数据集中,每张图片都由一个28x28的矩阵表示,在TensorFlow中,变量mnist.train.images是训练样本,它的形状为(55000,784)。其中,5000是训练图像的个数,而784实际为单个样本的维数,即每张图片都由一个784维的向量表示( 784正好等于28x28 )。为了加深对这种表示的理解,下面完成一个简单的程序:将MNIST数据集读取出来,并保存为图片文件。
#coding: utf-8
from tensorflow.examples.tutorials.mnist import input_data
import scipy.misc
import os
# 读取MNIST数据集。如果不存在会事先下载。
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
# 我们把原始图片保存在MNIST_data/raw/文件夹下
# 如果没有这个文件夹会自动创建
save_dir = 'MNIST_data/raw/'
if os.path.exists(save_dir) is False:
os.makedirs(save_dir)
# 保存前20张图片
for i in range(20):
# 请注意,mnist.train.images[i, :]就表示第i张图片(序号从0开始)
image_array = mnist.train.images[i, :]
# TensorFlow中的MNIST图片是一个784维的向量,我们重新把它还原为28x28维的图像。
image_array = image_array.reshape(28, 28)
# 保存文件的格式为 mnist_train_0.jpg, mnist_train_1.jpg, ... ,mnist_train_19.jpg
filename = save_dir + 'mnist_train_%d.jpg' % i
# 将image_array保存为图片
# 先用scipy.misc.toimage转换为图像,再调用save直接保存。
scipy.misc.toimage(image_array, cmin=0.0, cmax=1.0).save(filename)
print('Please check: %s ' % save_dir)
运行此程序后,在MNIST_ data/raw/
文件夹 下就可以看到MNIST数据集中训练集的前20张图片。可以修改.上述程序打印更多的图片
4.图像标签的独热表示,打印MNIST数据集中图片的标签
#打印出第0张训练图片的标签
# coding: utf-8
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
# 读取mnist数据集。如果不存在会事先下载。
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
print (mnist. train.labels[0, :])
代码运行的结果是[0.0. 0. 0. 0. 0. 0.1. 0. 0.], 也就是说第0张图片对应的标签为数字“7”
原始表示(0~9) | 独热表示(10维向量) |
---|---|
1 | (1,0,0,0,0,0,0,0,0,0) |
1 | (0,1,0,0,0,0,0,0,0,0) |
3 | (0,0,1,0,0,0,0,0,0,0) |
...... | ...... |
9 | (0,0,0,0,0,0,0,0,0,1) |
7 条评论
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
文字流畅如丝,语言优美动人,读来令人心旷神怡。
文章的叙述风格独特,用词精准,让人回味无穷。
在畅想未来时需警惕乌托邦式理想化。
作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。
博主太厉害了!