TensorFlow2实战-系列教程7:TFRecords数据源制作1

🧡💛💚TensorFlow2实战-系列教程 总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Jupyter Notebook中进行
本篇文章配套的代码资源已经上传

1、TFRecords

在训练过程中,基本都是使用GPU来计算,但是取一个一个batch取数据还是必须要用cpu,这个过程耗费时间也会影响训练时间,制作TFRecords可以有效解决这个问题,此外制作TFRecords数据可以更好的管理存储数据

为了高效地读取数据,可以将数据进行序列化存储,这样也便于网络流式读取数据。TFRecord是一种比较常用的存储二进制序列数据的方法,tf.Example类是一种将数据表示为{“string”: value}形式的meassage类型,Tensorflow经常使用tf.Example来写入、读取TFRecord数据

通常情况下,tf.Example中可以使用以下几种格式:

  • tf.train.BytesList: 可以使用的类型包括 string和byte
  • tf.train.FloatList: 可以使用的类型包括 float和double
  • tf.train.Int64List: 可以使用的类型包括 enum,bool, int32, uint32, int64

TFRecords是TensorFlow官方推荐的

2、转化示例

def _bytes_feature(value):"""Returns a bytes_list from a string/byte."""if isinstance(value, type(tf.constant(0))):value = value.numpy() # BytesList won't unpack a string from an EagerTensor.return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))def _float_feature(value):"""Return a float_list form a float/double."""return tf.train.Feature(float_list=tf.train.FloatList(value=[value]))def _int64_feature(value):"""Return a int64_list from a bool/enum/int/uint."""return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))

定义3个函数分别对3种类型的数据进行转换成对应的TensorFlow的数据格式

# tf.train.BytesList
print(_bytes_feature(b'test_string'))
print(_bytes_feature('test_string'.encode('utf8')))# tf.train.FloatList
print(_float_feature(np.exp(1)))# tf.train.Int64List
print(_int64_feature(True))
print(_int64_feature(1))

传进几个numpy格式的数据,再调用上面的函数进行转换,再打印:

bytes_list { value: “test_string” }
bytes_list { value: “test_string” }
float_list { value: 2.7182817459106445 }
int64_list { value: 1 }
int64_list { value: 1 }

3、TFRecords制作方法

def serialize_example(feature0, feature1, feature2, feature3):"""创建tf.Example"""# 转换成相应类型feature = {'feature0': _int64_feature(feature0),'feature1': _int64_feature(feature1),'feature2': _bytes_feature(feature2),'feature3': _float_feature(feature3),}#使用tf.train.Example来创建example_proto = tf.train.Example(features=tf.train.Features(feature=feature))#SerializeToString方法转换为二进制字符串return example_proto.SerializeToString()
  1. 定义一个函数,传入4个参数
  2. 使用前面定义的函数对4个参数分别转换成相应的格式
  3. 构建Example将转换完的数据创建一条数据
  4. 序列化 tf.Example:返回一个二进制的字符串
n_observations = int(1e4)
feature0 = np.random.choice([False, True], n_observations)
feature1 = np.random.randint(0, 5, n_observations)
strings = np.array([b'cat', b'dog', b'chicken', b'horse', b'goat'])
feature2 = strings[feature1]
feature3 = np.random.randn(n_observations)
  1. 定义一个一万备用
  2. 随机选择一万个布尔数据
  3. 随机选择一万个0、1、2、3、4这5个整数
  4. 随机构造字符串
  5. 随机构造浮点数
filename = 'tfrecord-1'with tf.io.TFRecordWriter(filename) as writer:for i in range(n_observations):example = serialize_example(feature0[i], feature1[i], feature2[i], feature3[i])writer.write(example)
  1. 定义文件名
  2. 定义一个写的模块,传进文件名,写入数据
  3. 迭代一万次
  4. 按照零到一万的索引,分别传入上面构造的4个特征
  5. 写入数据

这段代码执行后,会得到一个名为tfrecord-1的文件:
在这里插入图片描述

4、加载tfrecord文件

filenames = [filename]
raw_dataset = tf.data.TFRecordDataset(filenames)
raw_dataset

打印结果:

<TFRecordDatasetV2 shapes: (), types: tf.string>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易点易动设备管理平台助力制造企业实现设备的能耗监控

在当今注重环保和可持续发展的时代&#xff0c;能源消耗成为制造企业关注的重要问题。为了提高能源利用效率和降低能源成本&#xff0c;制造企业需要对设备的能耗进行有效监控和管理。易点易动设备管理平台作为一款智能化设备管理解决方案&#xff0c;为制造企业提供了全面的能…

Java 枚举enum类

Java枚举&#xff08;Enum&#xff09; 枚举 定义&#xff1a; Java枚举是一种特殊的类&#xff0c;用来表示一组固定的常量。 被enum关键字修饰的类型就是枚举类型 &#xff08;如果枚举不添加任何方法&#xff0c;枚举值默认为从0开始的有序数据。 比如定义一个枚举类表示…

【C语言】位操作符详解

目录 1、按位与&#xff08; & &#xff09; 2、按位或&#xff08; | &#xff09; 3.按位异或&#xff08; ^ &#xff09; C语言中的位操作符有以下&#xff1a; & | ^//按位与 //按位或 //按位异或 位运算符是计算两者之间的补码&#xff0c;然后得到的是计算后补…

防御保护----防火墙基本知识

一.防火墙的基本知识--------------------------------------------------------- 防火墙&#xff1a;可以想象为古代每个城市的城墙&#xff0c;用来防守敌军的攻击。墙&#xff0c;始于防&#xff0c;忠于守。从古至今&#xff0c;墙予人以安全之意。 防火墙的主要职责在于&…

ES实战回顾

1、你用的集群节点情况&#xff1f; 一个ES集群&#xff0c;18个节点&#xff0c;其中3个主节点&#xff0c;15个数据节点&#xff0c;500G左右的索引数据量&#xff0c;没有单独的协调节点&#xff0c;它的每个节点都可以充当协调功能&#xff1b; 2、你们常用的索引有哪些&a…

一个基于 .NET 7 + Vue.js 的前后端分离的通用后台管理系统框架 - DncZeus

前言 今天给大家推荐一个基于.NET 7 Vue.js(iview-admin) 的前后端分离的通用后台权限(页面访问、操作按钮控制)管理系统框架&#xff1a;DncZeus。 官方项目简介 DncZeus是一个基于 .NET 7 Vue.js 的前后端分离的通用后台管理系统框架。后端使用.NET 7 Entity Framework…

Mysql-事务(隔离级别,事务底层原理,MVCC)

什么是事务&#xff1f;有哪些特性&#xff1f; 事务&#xff1a;事务指的是逻辑上的一组操作&#xff0c;组成这组操作的各个单元要么全都成功&#xff0c;要么全都失败。 事务特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a; 原子性是指事务是一个不…

设计模式——2_0 职责链(Chain of Responsibility)

楼下一个男人并得要死&#xff0c;那家隔壁的一家唱着留声机&#xff0c;对面是弄孩子。楼上有两人狂笑&#xff1b;还有打牌声&#xff0c;河中的船上有女人哭她死去的母亲。人类的悲欢并不相通&#xff0c;我只觉得他们吵闹 ——鲁迅 文章目录 定义图纸一个例子&#xff1a;如…

谷歌人工智能视频生成器-LUMIERE(未开源)

Google重磅发布视频生成模型Lumiere 据说后续会开源 亮点1.支持文本到视频与图像到视频 亮点2.画风迁移 亮点3.运动蒙版 亮点4.视频编辑 亮点5.视频修复 谷歌视频模型可以生成80帧的片段&#xff01;不仅画质好、质量高&#xff0c;而且时长更长。 视频局部编辑 这项功能可以…

强化学习原理python篇06(拓展)——DQN拓展

强化学习原理python篇06&#xff08;拓展&#xff09;——DQN拓展 n-steps代码结果 Double-DQN代码结果 Dueling-DQN代码结果 Ref 拓展篇参考赵世钰老师的教材和Maxim Lapan 深度学习强化学习实践&#xff08;第二版&#xff09;&#xff0c;请各位结合阅读&#xff0c;本合集只…

【学习笔记】vue3的watch

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 课程 P152节 笔记&#xff1a; 情况一&#xff1a;监视ref所定义的一个响应式数据 情况二&#xff1a;监视ref所定义的多个响应式数据 这两种情况比较简单&#xff0c;正常写就ok&#xff1a; 情况三&#xff1a;监视reactive所…

关机恶搞小程序

1. system("shutdown")的介绍 当system函数的参数是"shutdown"时&#xff0c;它将会执行系统的关机命令。 具体来说&#xff0c;system("shutdown")的功能是向操作系统发送一个关机信号&#xff0c;请求关闭计算机。这将触发操作系统执行一系列…

MacOS安装反编译工具JD-GUI以及解决无法打开的问题

目录 一.下载地址 二.安装 三.问题 四.解决办法 1.显示包内容 2.找到Contents/MacOS/universalJavaApplicationStub.sh 3.修改sh文件 4.保存后再次打开即可 一.下载地址 Java Decompiler 二.安装 将下载下来的 jd-gui-osx-1.6.6.tar 解压&#xff0c;然后将 JD-GUI.a…

Hadoop3.x基础(1)

来源&#xff1a;B站尚硅谷 这里写目录标题 大数据概论大数据概念大数据特点(4V)大数据应用场景 Hadoop概述Hadoop是什么Hadoop发展历史&#xff08;了解&#xff09;Hadoop三大发行版本&#xff08;了解&#xff09;Hadoop优势&#xff08;4高&#xff09;Hadoop组成&#xf…

IntelliJ创建一个springboot工程

安装jdk mac教程 windows教程 安装maven mac教程 windows教程 建议&#xff1a; 在本地磁盘新建一个文件夹叫maven&#xff0c;然后把下载的maven安装到这里。在后续的IntelliJ操作中&#xff0c;配置maven的settings.xml和repository地址为这个目录下的地址。 创建sprin…

【架构】Docker实现集群主从缩容【案例4/4】

实现集群主从缩容【4/4】 接上一节&#xff0c;在当前机器为4主4从的架构上&#xff0c;减缩容量为3主3从架构。即实现删除6387和6388. 示意图如下&#xff1a; 第一步&#xff1a;查看集群情况&#xff08;第一次&#xff09; redis-cli --cluster check 127.0.0.1:6387roo…

c# Get方式调用WebAPI,WebService等接口

/// <summary> /// 利用WebRequest/WebResponse进行WebService调用的类 /// </summary> public class WebServiceHelper {//<webServices>// <protocols>// <add name"HttpGet"/>// <add name"HttpPost"/>// …

【Linux】fork()函数

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Docker 安装篇(CentOS)

Docker社区版 Docker从1.13版本之后采用时间线的方式作为版本号&#xff0c;分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的&#xff0c;企业版会提供额外的收费服务&#xff0c;比如经过官方测试认证过的基础设施、容器、插件等。 1、Docker 要求 C…

深度强化学习(王树森)笔记08

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…