Tensorflow知识整理(二)——数据持久化

本文介绍了TensorFlow中数据持久化的TFRecord格式,包括如何写入和读取数据。接着讲解了多线程输入数据框架,涉及队列、随机打乱队列、协调器和队列运行器,以及数据批处理和Dataset API的使用,阐述了如何通过Dataset进行数据读取、打乱、批量处理和重复操作。
摘要由CSDN通过智能技术生成

数据读取的三种方法

  (1)供给数据(feeding)(2)从文件中读取数据(3)多管线输入

数据预处理

  TensorFlow支持以TFRecord格式存储数据。

TFRecord格式介绍

  TFRecord文件中的数据是通过tf.train.Example Protocol Buffer格式存储的。
【写数据】以tf.train.Example Protocol Buffer格式写入数据
(1)构造写入文件类型的属性
(2)创建一个writer来写TFRecord文件
(3)将TFTFRecord转换成一个example
(4)将一个个example写入TFRecord文件

# 生成整数型的属性
def _int64_feature(value):
    return tf.train.Feature(int64_list = tf.train.Int64List(value = [value]))

# 生成字符串型的属性
def _bytes_feature(value):
    return tf.train.Feature(bytes_list = tf.train.BytesList(value = [value]))

# 输出TFRecord文件地址
filename = ""
# 创建一个writer来写TFRecord文件
writer = tf.python_io.TFRecordWriter(filename)
for i in range(train_size):
    # TFRecord文件中的数据在此存储
    example = tf.train.Example(
        features = tf.train.Features(
            feature = {
   "key1":_bytes_feature(value1),
                       "key2":_int64_feature(value2)
            }
        )
    )
    # 将一个example写入TFRecord文件
    writer.write(record = example.SerializeToString())
writer.close()

【读数据】
(1)创建一个reader来读取TFRecord文件中的example
(2)解析读入的一个example
(3)转换需要的数据类型

# 创建一个reader来读取TFRecord文件中的样例
reader = tf.TFRecordReader()
filename = ""
filename_queue = tf.train.string_input_producer([filename])

_, serialized_example = reader.read(filename_queue)
# 解析读入的一个样例
# 多个样例使用tf.parse_example
features = tf.parse_single_example(serialized_example,
                                    features = {
   
                                    # 解析结果为一个tensor
                                    # 解析数据的格式要跟写入数据的格式一致
                                    "key1":tf.FixedLenFeature([], tf.string),
                                       "key2":tf.FixedLenFeature([], tf.int64)
                                })
# 转换数据类型
# 字符串解析成图像对应的像素数组
images = tf.decode_raw(features['key1'], tf.uint8)
# tf.int64 -> tf.int32
label = tf.ca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值