Tensorflow使用TFRecord构建自己的数据集并读取

2024-04-03 01:48

本文主要是介绍Tensorflow使用TFRecord构建自己的数据集并读取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Tensorflow使用TFRecord构建自己的数据集并读取

参考文章:

http://blog.csdn.net/freedom098/article/details/56011858 
还有 优酷上kevin大神的视频

目标:1、将自己的数据集以TFRecord格式存储。

          2、从TFRecord中读取数据,并使用画图工具,以图片形式展现。


以一个图片为例:


一、将图片存储TFRecod

# 生成整数型的属性
def _int64_feature(value):if not isinstance(value,list):value=[value]return tf.train.Feature(int64_list=tf.train.Int64List(value=value))#生成字符串型的属性
def _byte_feature(value):return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
#将图片存储到tfrecord中
def convert_to_tfrecord(images, labels, save_dir, name):#从图片路径读取图片编码成tfrecord'''''convert all images and labels to one tfrecord file. Args: images: list of image directories, string type labels: list of labels, int type save_dir: the directory to save tfrecord file, e.g.: '/home/folder1/' name: the name of tfrecord file, string type, e.g.: 'train' Return: no return Note: converting needs some time, be patient... ''' filename = (save_dir + name + '.tfrecords')  n_samples = len(labels) #判断 image的样本数量和label是否相同if np.shape(images)[0] != n_samples:  raise ValueError('Images size %d does not match label size %d.' %(images.shape[0], n_samples))  writer = tf.python_io.TFRecordWriter(filename)  print('\nTransform start......')  for i in range(len(images)):  try: image_raw_data = tf.gfile.FastGFile(images[i],'r').read()img_data = tf.image.decode_png(image_raw_data)label = int(labels[i])  example = tf.train.Example(features=tf.train.Features(feature={  'label':int64_feature(label),  'image_raw': bytes_feature(image_raw)}))  writer.write(example.SerializeToString())  except IOError as e:  print('Could not read:', images[i])  print('error: %s' %e)  print('Skip it!\n')  writer.close() 

二、读取数据,并绘图
# read the data from tfrecoder
def read_and_decode(tfrecords_file):  '''''read and decode tfrecord file, generate (image, label) batches Args: tfrecords_file: the directory of tfrecord file batch_size: number of images in each batch Returns: image: 4D tensor - [batch_size, width, height, channel] label: 1D tensor - [batch_size] '''  # make an input queue from the tfrecord file  filename_queue = tf.train.string_input_producer([tfrecords_file])  reader = tf.TFRecordReader()  _, serialized_example = reader.read(filename_queue)  
#解析读入的样例img_features = tf.parse_single_example(  serialized_example,  features={  'label': tf.FixedLenFeature([], tf.int64),  'image_raw': tf.FixedLenFeature([], tf.string),  })  
#将字符串解析成相应的数组image = tf.decode_raw(img_features['image_raw'], tf.uint8)  
#转化成图片的格式image = tf.reshape(image, [465, 315,3])sess = tf.Session()coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess=sess,coord=coord)image , label = sess.run([image,label])print imageplt.imshow(image)plt.show()sess.close()

read_and_decode('/home/tensor/Desktop/tia.tfrecords')


三、结果



这篇关于Tensorflow使用TFRecord构建自己的数据集并读取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871610

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的