查看tfrecord数据内容

本文介绍了如何使用TensorFlow从TFRecord文件中读取数据,并详细展示了如何解析每一条数据的特征,包括不同类型的数据类型和值。
部署运行你感兴趣的模型镜像

import sys
import tensorflow as tf
import config

def main():
filepath = config.data_path_tf
with tf.Session() as sess:
filenames = [filepath]
# 加载TFRecord数据
ds = tf.data.TFRecordDataset(filenames)
# 读取N条
ds = ds.batch(2)
ds = ds.prefetch(buffer_size=tf.contrib.data.AUTOTUNE)
iterator = ds.make_one_shot_iterator()
batch_data = iterator.get_next()
res = sess.run(batch_data)
for i in range(0, res.shape[0]):
print(‘-------------------第%d条数据-----------------’ % i)
serialized_example = res[0]
example_proto = tf.train.Example.FromString(serialized_example)
features = example_proto.features
print(‘{0} 信息如下:’.format(filepath))
for key in features.feature:
feature = features.feature[key]
ftype, fvalue = None, None
if len(feature.bytes_list.value) > 0:
ftype = ‘bytes_list’
fvalue = feature.bytes_list.value
if len(feature.float_list.value) > 0:
ftype = ‘float_list’
fvalue = feature.float_list.value
if len(feature.int64_list.value) > 0:
ftype = ‘int64_list’
fvalue = feature.int64_list.value
result = ‘{0} : {1} : {2}’.format(key, ftype, fvalue)
print(result)

if name == “main”:
main()

via: https://www.liangzl.com/get-article-detail-192860.html

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### TFRecord 数据格式及其使用方法 #### 什么是 TFRecordTFRecord 是 TensorFlow 提供的一种用于高效存储和读取数据的二进制文件格式[^3]。它能够统一存储多种形式的数据,包括但不限于图片、文本以及对应的标签信息。这种格式的主要优势在于提高 I/O 效率、减少磁盘占用并简化数据预处理流程。 #### 创建 TFRecord 文件 创建 TFRecord 文件通常涉及以下几个方面: 1. **导入必要的库** 需要先引入 `tensorflow` 库,并定义写入器对象。 ```python import tensorflow as tf writer = tf.io.TFRecordWriter("example.tfrecord") ``` 2. **构建 Example 协议缓冲区 (Protocol Buffer)** 将数据转换为 `tf.train.Example` 对象以便于序列化。以下是具体操作方式: ```python feature = { 'feature_name': tf.train.Feature(float_list=tf.train.FloatList(value=[value])) } example_proto = tf.train.Example(features=tf.train.Features(feature=feature)) serialized_example = example_proto.SerializeToString() ``` 上述代码片段展示了如何将浮点数列表封装成一个特征字段,并将其进一步打包至协议缓冲区内存表示形式中[^1]。 3. **写入数据到 TFRecord 文件** 利用之前实例化的写入器完成实际记录过程。 ```python writer.write(serialized_example) writer.close() # 关闭资源释放句柄 ``` #### 读取 TFRecord 文件 对于已存在的 TFRecord 文件,可以通过如下手段解析其中的内容: 1. **初始化 Dataset 实例** 借助 `tf.data.TFRecordDataset` 类加载目标路径下的单个或者多个 TFRecord 文件集合。 ```python dataset = tf.data.TFRecordDataset(["example.tfrecord"]) ``` 2. **自定义解析函数** 设计适合特定需求的解码逻辑,比如恢复原始数值型数组或者其他复杂结构体。 ```python def _parse_function(example_proto): keys_to_features = {'feature_name': tf.io.FixedLenFeature([], dtype=tf.float32)} parsed_features = tf.io.parse_single_example(example_proto, keys_to_features) return parsed_features['feature_name'] ``` 3. **应用映射变换** 把上述定制好的处理器绑定给整个批次流水线执行链路末端位置上。 ```python mapped_dataset = dataset.map(_parse_function) iterator = iter(mapped_dataset) next_element = iterator.get_next() ``` 以上步骤实现了从本地磁盘加载预先加工完毕后的样本队列直至最终可供模型消费的状态转变全过程描述[^2]。 #### 存储与分发优化建议 当面对大规模分布式计算场景时,可考虑借助 Hadoop 分布式文件系统(HDFS)来管理海量 TFRecord 资料集。例如,在阿里云 EMR 平台上部署相关作业流,则能充分利用集群内部节点间通信特性加速整体运算效率[^4]。 此外值得注意的一点是在不同操作系统环境下运行程序可能会遇到版本兼容性问题。如果希望在 Windows 或 Linux 下稳定支持 GPU 加速功能的话,可能还需要额外关注对应驱动安装状况以及手动编译指定分支源码等工作细节[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值