TF2_403 tfrecord文件生成与读取

本文详细介绍了如何在TF2中创建和读取tfrecord文件,包括从csv文件转换为tfrecord格式,以及压缩tfrecord文件的方法。此外,还展示了如何利用读取的tfrecord数据集进行神经网络训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.tfrecord 格式说明

1.1 tf.train.Example生成tfrecord格式

  • 1.tf.train.Features : {“key”: tf.train.Feature}
    • tf.train.Feature: tf.train.ByteList / FloatList / Int64List
      (字符串类型 / 浮点数类型 / 整数类型)
  • 2.利用Features建立Example
    • 对Example序列化,压缩,减小size
  • 3.把Example存入文件中
    • 新建文件夹
    • 使用TFRecordWriter打开文件,写入Example
  • 4.使用tf.data.TFRecordDataset读取tfrecord文件并解析
# tfrecord 文件格式
# -> tf.train.Example
#    -> tf.train.Features -> {"key": tf.train.Feature}
#       -> tf.train.Feature -> tf.train.ByteList/FloatList/Int64List

favorite_books = [name.encode('utf-8')# 格式转换
                  for name in ["machine learning", "cc150"]]
favorite_books_bytelist = tf.train.BytesList(value = favorite_books)# BytesList为字符串格式
print(favorite_books_bytelist)

hours_floatlist = tf.train.FloatList(value = [15.5, 9.5, 7.0, 8.0])# FloatList为浮点数类型
print(hours_floatlist)

age_int64list = tf.train.Int64List(value = [42]) # Int64List为整数类型
print(age_int64list)

features = tf.train.Features(  # 建立features
    feature = {
   
        "favorite_books": tf.train.Feature(bytes_list = favorite_books_bytelist),
        "hours": tf.train.Feature(float_list = hours_floatlist),
        "age": tf.train.Feature(int64_list = age_int64list),
    }
)
print(features)
# 利用features建立example
example = tf.train.Example(features=features)
print(example)

# 对example序列化,压缩,减小size
serialized_example = example.SerializeToString()
print(serialized_example)
# 把examples存入文件中

output_dir = 'tfrecord_basic'
if not os.path.exists(output_dir):
    os.mkdir(output_dir)
filename = "test.tfrecords"
filename_fullpath = os.path.join(output_dir, filename)

# 使用TFRecordWriter 打开文件
with tf.io.TFRecordWriter(filename_fullpath) as writer:
    for i in range(3):
        writer.write(serialized_example)
# 利用tf.data.TFRecordDataset读取tfrecord文件

dataset = tf.data.TFRecordDataset([filename_fullpath])
for serialized_example_tensor in dataset:# 读取序列化后的文件
    print(serialized_example_tensor)

# 将序列化后的进行解析

expected_features = {
   
    "favorite_books": tf.io.VarLenFeature(dtype = tf.string),# VarLenFeature变长变量
    "hours": tf.io.VarLenFeature(dtype = tf.float32
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值