当前位置:网站首页>数据集类型转换—TFRecords文件
数据集类型转换—TFRecords文件
2022-08-04 03:07:00 【Peyzhang】
TFRecord 是 TensorFlow 中的数据集存储格式。当我们将数据集整理成 TFRecord 格式后,TensorFlow 就可以高效地读取和处理这些数据集,从而帮助我们更高效地进行大规模的模型训练。
格式:TFRecord 可以理解为一系列序列化的 tf.train.Example 元素所组成的列表文件,而每一个 tf.train.Example 又由若干个 tf.train.Feature 的字典组成。形式如下:
[
{
# example 1 (tf.train.Example)
'feature_1': tf.train.Feature,
...
'feature_k': tf.train.Feature
},
...
{
# example N (tf.train.Example)
'feature_1': tf.train.Feature,
...
'feature_k': tf.train.Feature
}
]
# 字典结构如
feature = {
'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])),
'label': tf.train.Feature(int64_list=tf.train.Int64List(value=[label]))
}
- 保存TFRecord
- 为了将形式各样的数据集整理为 TFRecord 格式,我们需要对数据集中的每个元素进行以下步骤:
读取该数据元素到内存 - 将该元素转换为 tf.train.Example 对象(每一个 tf.train.Example 由若干个 tf.train.Feature 的字典组成,因此需要先建立 Feature 的字典);
- 将该 tf.train.Example 对象序列化为字符串,并通过一个预先定义的 tf.io.TFRecordWriter 写入 TFRecord 文件。
- 为了将形式各样的数据集整理为 TFRecord 格式,我们需要对数据集中的每个元素进行以下步骤:
- 读取 TFRecord 数据
- 通过 tf.data.TFRecordDataset 读入原始的 TFRecord 文件(此时文件中的 tf.train.Example 对象尚未被反序列化),获得一个 tf.data.Dataset 数据集对象;
- 通过 Dataset.map 方法,对该数据集对象中的每一个序列化的 tf.train.Example 字符串执行 tf.io.parse_single_example 函数,从而实现反序列化。
代码:
# -*- coding: utf-8 -*-
""" @Time : 2022-08-03 22:02 @Author : peyzhang @File : tfRecode.py @Software: PyCharm """
import tensorflow as tf
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
train_cars_dir = 'F:/AI/data//train/car/'
train_human_dir = 'F:/AI/data//train/dog/'
tfrecord_file = 'F:/AI/data//train.tfrecords'
def main():
train_car_filenames = [train_cars_dir + filename for filename in os.listdir(train_cars_dir)]
train_dog_filenames = [train_human_dir + filename for filename in os.listdir(train_human_dir)]
train_filename = train_car_filenames + train_dog_filenames
train_labels = [0] * len(train_car_filenames) + [1] *len(train_dog_filenames)
print(train_filename)
print(train_labels)
with tf.io.TFRecordWriter(tfrecord_file) as writer:
for filename , label in zip(train_filename, train_labels):
image = open(filename,"rb").read()
feature = {
"image": tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])),
"label": tf.train.Feature(int64_list=tf.train.Int64List(value=[label]))
}
example = tf.train.Example(features=tf.train.Features(feature=feature))
writer.write(example.SerializeToString())
def readTFrecord():
raw_dataset = tf.data.TFRecordDataset(tfrecord_file)
feature_description = {
'image': tf.io.FixedLenFeature([], tf.string),
'label': tf.io.FixedLenFeature([], tf.int64),
}
def decoding(example_string):
fdict = tf.io.parse_single_example(example_string, feature_description)
fdict['image'] = tf.io.decode_jpeg(fdict['image'])
return fdict['image'], fdict['label']
dataseate = raw_dataset.map(decoding)
for iamge , label in dataseate:
print(iamge, label)
if __name__ == '__main__':
# main()
readTFrecord()
边栏推荐
- DIY电工维修如何拆卸和安装开关面板插座
- Hey, I had another fight with HR in the small group!
- MySQL 查询练习(1)
- 千兆2光8电管理型工业以太网交换机WEB管理X-Ring一键环网交换机
- TOML configuration file format, YAML's top contender
- 2 Gigabit Optical + 6 Gigabit Electric Rail Type Managed Industrial Ethernet Switch Supports X-Ring Redundant Ring One-key Ring Switch
- 6口全千兆二层网管型工业以太网交换机千兆2光4电光纤自愈ERPS环网交换机
- 共n级台阶,每次可以上1级或2级台阶,有多少种上法?
- 安装postgis时报找不到“POSTGIS_VERSION”这个函数
- 十一种概率分布
猜你喜欢
STM8S project creation (STVD creation) --- use COSMIC to create a C language project
从图文展示到以云为核,第五代验证码独有的策略情报能力
Polygon zkEVM network node
y86.第四章 Prometheus大厂监控体系及实战 -- prometheus存储(十七)
Deep Learning (3) Classification Theory Part
基地址:环境变量
一文看懂推荐系统:召回04:离散特征处理,one-hot编码和embedding特征嵌入
Sfdp 超级表单开发平台 V6.0.5 正式发布
融云「音视频架构实践」技术专场【内含完整PPT】
SQL injection in #, - +, - % 20, % 23 is what mean?
随机推荐
Mini program + new retail, play the new way of playing in the industry!
Big guys, it takes a long time to read mysql3 million single tables, what parameters can be discounted, or is there any way to hurry up
sql注入一般流程(附例题)
自制蓝牙手机app控制stm8/stm32/C51板载LED
STM8S-----option byte
Good bosses, please ask the flink CDC oracle to Doris, found that the CPU is unusual, a run down
【学习笔记之菜Dog学C】动态内存管理
There are n steps in total, and you can go up to 1 or 2 steps each time. How many ways are there?
How to drop all tables under database in MySQL
JVM内存和垃圾回收-07.堆
验证码业务逻辑漏洞
C language -- ring buffer
各位大佬好,麻烦问一下flink cdc oracle写入doris的时候,发现cpu异常,一下下跑
逻辑漏洞----其他类型
Functions, recursion and simple dom operations
Mockito unit testing
QNX Hypervisor 2.2用户手册]10.1 通用vdev选项
Hey, I had another fight with HR in the small group!
sqoop ETL工具
Countdown to 2 days, the "New Infrastructure of Cultural Digital Strategy and Ecological Construction of Cultural Art Chain" will kick off soon