TensorFlow 生成多个 TFRecord 文件实例
本文提供使用 TensorFlow 批量生成多个 TFRecord 文件的完整代码示例。通过设定 shard 数量和每个 shard 的数据量,遍历指定目录下的图片资源,调整尺寸并序列化写入多个 TFRecord 文件,适用于大规模图像数据的模型训练准备。
TensorFlow 生成多个 TFRecord 文件代码示例
以下直接展示实现代码。
import tensorflow as tf
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import os
i = 0
j = 0
num_shards = 100#总共写入的文件个数
instances_per_shard = 2#每个文件中的数据个数
sess=tf.InteractiveSession()
cwd = "F:/寒假/google--data/新建文件夹/" #图片数据所在目录位置(读者自己去改就好了)
classes = {'daisy','rose'} #预先自己定义的类别,根据自己的需要修改
def _int64_feature(value):#生成整数型的属性
return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))
def _bytes_feature(value):#生成字符串型的属性
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
for index, name in enumerate(classes):#枚举函数
class_path = cwd + name + "/"#选取具体数据目录
for img_name in os.listdir(class_path):#遍历文件列表
img_path = class_path + img_name#图片路径
img = Image.open(img_path)
img = img.resize((299, 299)) #图像reshape大小设置,根据自己的需要修改
img_raw = img.tobytes()
example = tf.train.Example(features=tf.train.Features(feature={
'label': _int64_feature(index),
'img_raw': _bytes_feature(img_raw),
'i': _int64_feature(i),
'j': _int64_feature(j)
}))
filename = ("F:/寒假/google--data/data.tfrecords-%.5d-of-%.5d"%(i,num_shards))
if j == instances_per_shard-1:
i+=1
j+=1
if j == instances_per_shard:
j=0
writer = tf.python_io.TFRecordWriter(filename)
writer.write(example.SerializeToString())#将一个example写入tfrecord文件
writer.close()
以上关于 TensorFlow 生成多个 TFRecord 文件的实例分享完毕,希望能为读者提供参考与帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













