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开始的有序数据。 比如定义一个枚举类表示…

docker cp命令: 主机和Docker容器之间复制文件或目录

docker cp命令是用于在主机和Docker容器之间复制文件或目录的命令。可以从容器复制文件到主机&#xff0c;也可以从主机复制文件到容器。 使用docker cp命令的基本语法如下&#xff1a; docker cp <容器名称或ID>:<容器内路径> <主机路径> docker cp <主…

go 面试题

1 gochannelclose后读的问题 在Go语言中&#xff0c;当我们调用close(ch)关闭一个channel后&#xff0c;仍然可以从该channel中读取数据&#xff0c;直到channel中的数据全部被读取完。但需要注意以下几点&#xff1a; 从关闭的channel中读取数据时&#xff0c;接收操作不会阻…

【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…

2.1写一个梅林dynv6插件(上)

专栏导航 序言及专栏目录 第一章 写一个梅林dynv6插件(上) ⇐ 第二章 写一个梅林dynv6插件(下) 文章目录 前言一、需求分析二、代码实现1、引入koolshare软件中心2、定义基本变量3、查询、解析函数及输出信息4、定时任务与获取前端输入三、代码分析小结前言 前面十多章已…

sklearn.preprocessing中的标准化StandardScaler与scale的区别

StandardScaler与scale 1、标准化概述2、两种标准化的区别 1、标准化概述 标准化主要用于对样本数据在不同特征维度进行伸缩变换&#xff0c;目的是使得不同度量之间的特征具有可比性&#xff0c;同时不改变原始数据的分布 一些机器学习算法对输入数据的规模和量纲非常敏感&am…

一个基于 .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;而且时长更长。 视频局部编辑 这项功能可以…

Qt-tr-多语言支持-QColorDialog-翻译中文文本

文章目录 一.添加资源文件二.编辑ts文件三.总结一.添加资源文件 在Visual Studio中使用Qt开发时,如果你想要为QColorDialog或任何其他Qt界面元素显示中文,你需要加载对应的中文翻译文件qt_zh_CN.qm。以下是实现这一目标的步骤: 获取并编译翻译文件: Qt自带了多种语言的翻译…

PiflowX组件-FileRead

FileRead组件 组件说明 从文件系统读取。 计算引擎 flink 组件分组 file 端口 Inport&#xff1a;默认端口 outport&#xff1a;默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子pathpath“”无是文件路径。hdfs://server1:8020/flink/test/text.txtfor…

强化学习原理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所…

LeetCode 2808.使循环数组所有元素相等的最少秒数

【LetMeFly】2808.使循环数组所有元素相等的最少秒数 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-seconds-to-equalize-a-circular-array/ 给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒&#xff0c;你可以对数组执行以下操作&#xff1a; 对于…

把 matlab 公式输出成 latex 公式形式

问题 latex 进行符号计算后&#xff0c;想直接把 matlab 中变量代表的公式结果输出成 latex 形式。 这样可以直接 复制到 latex 中&#xff0c;不需要手打公式了。 方法 matlab 函数 latex 可以实现上述功能&#xff0c;但最好是 使用 simpify(expand(~)) 进行化简 str_Jac…

关机恶搞小程序

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