TensorFlow入门(四) - mnist手写数字识别(制作h5py训练集)
这篇文章是 TensorFlow Tutorial 入门教程的第四篇文章。
在之前的几篇文章中,我们都是通过 tensorflow.examples.tutorials.mnist来使用mnist训练集集,制作训练集主要有2个目的,一是加快训练时读取的速度,而是支持随机批读取。假如,每次训练时,都是直接读取图片,再将图片转为矩阵进行训练,那这样效率无疑是非常低下的。
这篇文章将使用numpy 和 h5py(HDF5文件格式)2种方式来制作训练集,并对这两种方式进行对比。
准备图片
直接读取tensorflow中mnist数据集,将数据集还原为图片。
在这里,使用 pillow库将矩阵转为图片。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import numpy as np
from PIL import Image
from tensorflow.examples.tutorials.mnist import input_data
def gen_image(arr, index, label):
# 直接保存 arr,是黑底图片,1.0 - arr 是白底图片
matrix = (np.reshape(1.0 - arr, (28, 28)) * 255).astype(np.uint8)
img = Image.fromarray(matrix, 'L')
# 存储图片时,label_index的格式,方便在制作数据集时,从文件名即可知道label
img.save("./images/{}_{}.png".format(label, index))
data = input_data.read_data_sets('../mnist/data_set')