这里提供十个TFRecord数据文件来跑代码,然后解析出来的话每一张都是256*256的灰度图像,都是花。
该数据集包含5个类别的图像数据,压缩包里共有十个TFRecord文件,每个文件包含350个图像信息;
TFRecord文件包含三个字段:
1.‘data’:256*256的tf.float32类型,为二维的训练图像数据;
2.‘label’:1个tf.int64类型,为类别标签,共计5类,数值为1到5;
3.‘id’:1个tf.int64类型,为数据的计数number;
到这儿去下载TFRecord数据文件。
#encoding: utf-8
# data_parse.py
# 运行train.py前先运行此代码文件,将原始数据置于和本代码文件同路径下
import os
import tensorflow as tf
from PIL import Image
import numpy as np
for i in range(5):
if not os.path.exists(os.getcwd()+"/flower_data/"+str(i+1)):
os.makedirs(os.getcwd()+"/flower_data/"+str(i+1))
for num in range(10):
reader=tf.TFRecordReader()
filename_queue=tf.train.string_input_producer(["TFcodeX_"+str(num+1)+".tfrecord"])
_,serialized_example=reader.read(filename_queue)
features=tf.parse_single_example(serialized_example,features={
'data' :tf.FixedLenFeature([65536],tf.float32),
'label' :tf.FixedLenFeature([1],tf.int64),
'id' :tf.FixedLenFeature([1],tf.int64)})
image_tensor=features['data']
label_tensor=features['label']
ID_tensor=features['id']
with tf.Session() as sess:
coord=tf.train.Coordinator()
threads=tf.train.start_queue_runners(sess=sess,coord=coord)
for i in range(350):
im,label,ID=sess.run([image_tensor,label_tensor,ID_tensor])
im=im.reshape(256,256)
im = (im+1)*255/2
new_im = Image.fromarray(np.uint8(im))
if label==1:
new_im.save("flower_data/1/data_"+str(ID)+"_"+str(label)+".jpg")
elif label==2:
new_im.save("flower_data/2/data_"+str(ID)+"_"+str(label)+".jpg")
elif label==3:
new_im.save("flower_data/3/data_"+str(ID)+"_"+str(label)+".jpg")
elif label==4:
new_im.save("flower_data/4/data_"+str(ID)+"_"+str(label)+".jpg")
else:
new_im.save("flower_data/5/data_"+str(ID)+"_"+str(label)+".jpg")