tfrecorder的制作/读取(附实战代码)

Tensorflow建立与读取TFrecorder文件 Tensorflow建立与读取TFrecorder文件除了直接读取数据文件,比如csv和bin文件,tensorflow还可以建立一种自有格式的数据文件,称之为tfrecorder,这种文件储存类似于字典,调用方便,可以直接包含标签集。首先,要建立起tfrecorder文件,我这里选择了若干人脸图像数据,文件的组织形式为根目录/s+类别号/图片名称 基本思路是先遍历文件夹,使用PIL库读取文件,然 阅读详情
import tensorflow as tf  
import numpy  

def write_binary():  
    writer = tf.python_io.TFRecordWriter('data.tfrecord')  
    #创建example  
    for i in range(0, 100):  
        a = 0.618 + i  
        b = [2016 + i, 2017+i]  
        c = numpy.array([[0, 1, 2],[3, 4, 5]]) + i  
        c = c.astype(numpy.uint8)  
        c_raw = c.tostring() #转化成字符串  
    #每个example的feature成员变量是一个dict,存储一个样本的不同部分(例如图像像素+类标)  
        example = tf.train.Example(  
            features=tf.train.Features(  
                feature={  
                    'a': tf.train.Feature(  
                        float_list=tf.train.FloatList(value=[a])  
                    ),  

                    'b': tf.train.Feature(  
                        int64_list=tf.train.Int64List(value=b)  
                    ),  
                    'c': tf.train.Feature(  
                        bytes_list=tf.train.BytesList(value=[c_raw])  
                    )  
                }  
            )  
        )  
    #序列化  
        serialized = example.SerializeToString()  
    #写入文件  
        writer.write(serialized)  
    writer.close()  

def read_single_sample(filename):  
    #创建文件队列,不限读取的数量  
    filename_queue = tf.train.string_input_producer([filename], num_epochs=None)  
    # create a reader from file queue  
    reader = tf.TFRecordReader()  
    #reader从文件队列中读入一个序列化的样本  
    _, serialized_example = reader.read(filename_queue)  

    # get feature from serialized example  
    #解析符号化的样本  
    features = tf.parse_single_example(  
        serialized_example,  
        features={  
            'a': tf.FixedLenFeature([], tf.float32),  
            'b': tf.FixedLenFeature([2], tf.int64),  
            'c': tf.FixedLenFeature([], tf.string)  
        }  
    )  
    a = features['a']  
    b = features['b']  
    c_raw = features['c']  
    c = tf.decode_raw(c_raw, tf.uint8)  
    c = tf.reshape(c, [2, 3])  
    return a, b, c  

# 
#write_binary()  
#else:  
# create tensor  
a, b, c = read_single_sample('data.tfrecord')  

a_batch, b_batch, c_batch = tf.train.shuffle_batch([a, b, c], batch_size=5, capacity=200, min_after_dequeue=100, num_threads=2)  

# sess  
sess = tf.Session()  
init = tf.initialize_all_variables()  
sess.run(init)  

tf.train.start_queue_runners(sess=sess)  

for step in range(3):  
    a_val, b_val, c_val = sess.run([a_batch, b_batch, c_batch])  
    print(a_val, b_val, c_val)  

实战代码:

import tensorflow as tf  
import numpy  
import scipy.misc as misc
import os
import cv2
def write_binary():  
    cwd = os.getcwd()
    classes=['ym','zly','lyf']
    writer = tf.python_io.TFRecordWriter('data.tfrecord')  
    for index, name in enumerate(classes):
        class_path = os.path.join(cwd,name)
        for img_name in os.listdir(class_path):
            img_path = os.path.join(class_path , img_name)
            img = misc.imread(img_path)
            img1 = misc.imresize(img,[250,250,3])
            img_raw = img1.tobytes()              #将图片转化为原生bytes
            example = tf.train.Example(features=tf.train.Features(feature={
                    'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw])),
                "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index]))}
                ))

    #序列化  
            serialized = example.SerializeToString()  
    #写入文件  
            writer.write(serialized)  
    writer.close()  



def read_and_decode(filename):  
    #创建文件队列,不限读取的数量  
    filename_queue = tf.train.string_input_producer([filename],shuffle=False)  
    # create a reader from file queue  
    reader = tf.TFRecordReader()  
    #reader从文件队列中读入一个序列化的样本  
    _, serialized_example = reader.read(filename_queue)  

    features = tf.parse_single_example(  
        serialized_example,  
        features={  
            'label': tf.FixedLenFeature([], tf.int64),  
            'img_raw': tf.FixedLenFeature([], tf.string) 

        }  
    )  
    img=tf.decode_raw(features['img_raw'],tf.uint8)
    img = tf.reshape(img, [250, 250, 3])
    label = tf.cast(features['label'], tf.int32)
    return img,label  


#write_binary()  


img,label = read_and_decode('data.tfrecord')  


img_batch, label_batch = tf.train.shuffle_batch([img,label], batch_size=18, capacity=200, min_after_dequeue=100, num_threads=2)  

# sess  
init = tf.global_variables_initializer() 
sess = tf.Session()  

sess.run(init)  
coord = tf.train.Coordinator()  
threads=tf.train.start_queue_runners(sess=sess,coord=coord)  

img, label = sess.run([img_batch, label_batch])
for i in range(18):   
    [b,g,r]=[cv2.split(img[i])[0],cv2.split(img[i])[1],cv2.split(img[i])[2]]
    cv2.imwrite('%d.png'%i,cv2.merge([r,g,b]))
coord.request_stop()
coord.join(threads)
sess.close()
16、图像数据集创建与预处理全解析 本文全面解析了图像数据集的创建与预处理方法。内容涵盖从批量管道到流式管道的转换、使用 TFRecorder 生成 TFRecord 文件、读取 TensorFlow Records,以及图像预处理的关键步骤,包括形状转换、数据质量提升和模型性能优化。同时,文章介绍了稀疏张量的概念、Keras 预处理层和 TensorFlow 图像模块的应用,并提供了详细的操作步骤和实践建议。通过这些方法,可有效提升机器学习模型的性能和数据处理效率。 阅读详情

相关推荐

16、机器学习中图像数据集创建与预处理全解析

本文详细解析了机器学习中图像数据集的创建与预处理流程。首先介绍了如何使用 TFRecorder 将 CSV 数据转换为高效的 TensorFlow Records 格式,并讨论了在大规模数据处理中的应用。随后,深入讲解了图像数据的读取、解析及稀疏张量的概念。接着,重点分析了图像预处理的三大目标:形状转换、数据质量提升和模型质量改善,并对比了多种预处理方法的优缺点。最后,通过流程图和代码示例,梳理了完整的图像预处理流程,并总结了关键操作步骤。本文旨在帮助读者构建高效、精准的图像数据处理流程,为模型训练打下坚实

bread的博客 73

如何修改tf.records中的编码格式

要修改 tf.records 中的编码格式,需要在读取 tf.records 文件时使用 tf.io.decode_raw() 函数,并将其中的参数 out_type 设为指定的类型。例如,如果要将 tf.records 中的原始字节编码转换为 8 位无符号整型,可以使用如下代码: raw_bytes = tf.io.decode_raw(bytes, out_type=tf.uint8) 其中...

weixin_35751194的博客 207

Unity中USD场景导入与工业级协作实战指南

USD(Universal Scene Description)是一种面向复杂三维场景的结构化数据模型,其核心在于分层描述、变体管理与非破坏性组合,本质是支持多团队并行协作的场景协议。它不同于传统模型格式,强调运行时可编辑性与版本可控性,技术价值体现在跨软件资产一致性、零拷贝动态叠加及内存中实时合成。典型应用场景包括建筑BIM实时漫游、汽车多配置仿真、影视级灯光材质协同等工业管线。在Unity中,USD已深度集成于URP/HDRP管线,通过原生USD Importer、Runtime与Exporter三组件

weixin_32073537的博客 301

TFRecord 中 FixedLenFeature、VarLenFeature、FixedLenSequenceFeature 说明

为了解析每个输入样本每一列数据,需要定义一个解析字典。tensorflow提供了三种方式:FixedLenFeature、VarLenFeature、FixedLenSequenceFeature,分别解析定长特征、变长特征、定长序列特征。 FixedLenFeature() 函数有三个参数: (1)shape:输入数据的shape。 (2)dtype:输入的数据类型。 (3)default_value:如果示例缺少此功能,则使用该值。它必须与dtype和指定shape兼容。 注意点: tf.FixedLe

github_39605284的博客 4167

手机刷双系统

刷机教程(https://www.geekeyes.cn/forum.php/forum.php?mod=viewthread&tid=492) 解锁教程(http://www.gioov.com/index.php/1386)   解锁教程 cmd下 进入adb目录( 如果环境变量配置了adb 可以直接在cmd 下输入命令) 手机连接电脑,确保usb 调试打开,然后手机连接电脑,...

超宇的博客 1万+

Spring Boot整合AWS S3文件上传实战:从配置到权限管理全流程解析

本文详细解析了Spring Boot整合AWS S3文件上传的全流程,包括基础配置、核心上传功能实现、高级权限控制及安全最佳实践。通过实战案例展示如何高效处理文件上传、大文件分片及权限管理,帮助开发者构建健壮的文件管理系统。特别强调AWS S3的高可用性和安全性,适用于企业级应用开发。

sam99的博客 283

Tensorflow易错点(3)---tf.FixedLenFeature的使用

看以下两种不同的shape,解析得到的tensor的shape不同: tf.FixedLenFeature(shape=[], dtype=tf.int64) # 解析得到的tensor的形状形如(bs, ) tf.FixedLenFeature(shape=[k], dtype=tf.int64) # 解析得到的tensor的形状形如(bs,k ) 因此在解析样本数据时,特别要注意你要解析的tensor的形状,根据自己的需要填写k值。 ...

hillyfighting的博客 3480

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码)

本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。

ik6789012的博客 942

tf.FixedLenFeature 和tf.VarLenFeature 的区别

tf.FixedLenFeature 返回的是一个定长的tensortf.VarLenFeature 返回的是一个不定长的sparse tensor,用于处理可变长度的输入,在处理c t c 问题时,会用到tf.VallenFeature解析存储在tfrecord中的label。待补充...

tiandd12的博客 2万+

癌症免疫治疗预测神器TIDE:从原理到实战(避坑指南)

本文详细解析了癌症免疫治疗预测工具TIDE的核心原理及实战应用。TIDE算法通过模拟肿瘤免疫逃逸的两种核心机制(T细胞功能障碍和排除),为临床决策提供精准预测。文章涵盖数据准备、标准化流程、网页工具操作指南及结果解读,帮助科研人员和临床医生避开常见误区,优化免疫治疗策略。

weixin_29309475的博客 197

【车载以太网】【SOMEIP】Wireshark测试someip

一、 Wireshark SOMEIP plugin 1.1 插件安装 Wireshark插件目录:Help -> About Wireshark -> Folders/Pluginshttps://github.com/jamores/eth-ws-someip 解压后,将所有后缀是lua的文件拷贝到Wireshark安装目录plugins/2.4.10/下。 1.2时间戳调整为UTC显示格式 View -> Time Display Format -> Date and Tim.

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 9725

好玩且实用,使用 Python实现录音功能

今天我们来介绍一个好玩且实用的东西,我们使用python来实现一个录音的功能,废话不多说,让我们直接开始。

m0_59596937的博客 2028

goahead(嵌入式Web服务器)之文件传输篇

goahead文件上传原理: 使用html form即表单提交文件上传请求,web服务器核心处理接收客户端Post过来的文件数据(注意post的是二进制数据),最后,web服务器把接收到文件数据以二进制格式写到服务器本端存储系统。 goahead文件上传步骤: 1、创建upload.html文件,内容如下: <html> <head> <meta charset="utf-8"/> <title>Upload</title> </head&g

weixin_40732273的博客 3495

TensorFlow中读取图像数据的三种方式(转)

本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片、大量图片,和TFRecorder读取方式。并且还补充了功能相近的tf函数。 处理单张图片 我们训练完模型之后,常常要用图片测试,有的时候,我们并不需要对很多图像做测试,可能就是几张甚至一...

monk1992的博客 1698

华为OD机试真题 新系统 【社交网络相同爱好好友查询】

华为od机试真题 新系统【社交网络相同爱好好友查询】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试真题【社交网络相同爱好好友查询】多语言题解实现。

qq_45776114的博客 1336

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

tensorflow分类任务——TFRecord读取自己制作的数据集

一、TensorFlow的数据读取机制 注意:这个地址是TensorFlow的数据读取机制,如果了解请跳过。 原博客地址:https://zhuanlan.zhihu.com/p/27238630 建议阅读博客:https://blog.youkuaiyun.com/pursuit_zhangyu/article/details/80607529 代码地址:https://github.com/hzy...

北国觅梦 2063

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

机器学习.数据处理.将图片数据转化为TFRecorder

把数据集:   ./data/cat_and_dog/train_r/      |--cat/      |--dog/获取./data/cat_and_dog/train/目录下的的所有文件,并按文件夹标注:cat=0,dog=1import cv2 import os import numpy as np import tensorflow as tf import io def get...

menghaocheng的专栏 1497

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

制作tfrecord

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Wed Apr 29 11:39:25 2020 @author: gaofeng """ import tensorflow as tf import os import cv2 def write(input_file, output_file): writ...

weixin_43889464的博客 231

从多个tfrecord文件中读取数据的方法

tfrecord_file_path = '/train/*.tfrecords’#train是存放tfrecord的文件夹 filename_queue = tf.train.string_input_producer( tf.train.match_filenames_once(tfrecord_file_path), ...

DRACOYU的博客 3783

②本地图片转TFRecord及opencv安装

之前我们对图片数据的读取是通过tensorflow的mnist类直接下载和加载mnist数据集。但是更多的时候,我们想通过本地的图片进行训练。import input_data mnist = input_data.read_data_sets('MNIST_data', one_hot=True)但是如果每次对图片的读取都从磁盘上进行的话,将严重影响程序的效率。因此想先将本地图片转化成通用、高效...

lc__________的博客 1166

图片分类生成TFrecord格式

TFrecord生成 在tensorflow框架上进行猫狗分类任务,所有图像放在一个文件夹下。如下图所示,所有图片名为"所属类别.number.jpg"。 import tensorflow as tf import os import numpy as np from PIL import Image from sklearn.model_selection import train_test_...

qq_41584497的博客 424

Hadoop中常用的InputFormat、OutputFormat(转)

Hadoop中的Map Reduce框架依赖InputFormat提供数据,依赖OutputFormat输出数据,每一个Map Reduce程序都离不开它们。Hadoop提供了一系列InputFormat和OutputFormat方便开发,本文介绍几种常用的: TextInputFormat 作为默认的文件输入格式,用于读取纯文本文件,文件被分为一系列以LF或者CR结束的行,key是每一

豹先生 1277

FixedLenFeature

背景 在使用dataset进行样本解析之前,我们需要先定义一个解析字典,告诉dataset如何去解析每个样本,这个字典就是用来指定对于每条输入样本的每一列应该用什么的feature去解析,dataset默认提供了FixedLenFeature,VarLenFeature,FixedLenSequenceFeature等。顾名思义,FixedLenFeature用于处理定长的特征,VarLenFeature用于处理变长的特征,FixedLenSequenceFeature用于处理定长的序特征。 案例 feat

qq_35037684的博客 1310

tf.io

目录 一、构成 1、模块 2、类 3、函数 二、重要函数和类 1、tf.io.parse_single_example 2、tf.io.FixedLenFeature Class FixedLenFeature __new__ Properties shape dtype default_value 3、tf.io.VarLenFeature 4、tf.io.deco...

weixin_36670529的博客 1344

tensorflow中tfrecord数据操作

前言: 为了更加展示tfrecord数据的相关操作,笔者后续又写了一个实践的简单例子进一步解释,具体可以看: https://blog.youkuaiyun.com/weixin_42001089/article/details/90236241 正文: tfrecord数据文件是一种将图像数据和标签统一存储的二进制文件,能更好的利用内存,在tensorflow中快速的复制,移动,读取,存储等. 一...

爱吃火锅的博客 1万+
上一篇: tensorflow如何队列式同步批量读取照片(2)
下一篇: 制作动图——imagemagick
GAN_player
博客等级 码龄10年 52粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值