TensorFlow数据读取(一)—————— Dataset

本文介绍了TensorFlow中的Dataset API,用于高效地构建输入数据管道。内容包括Dataset的创建,如from_tensor_slices和batch方法,以及不同类型的迭代器如one-shot、initializable、reinitializable和feedable的使用。还提到了如何以numpy数组和TFRecord为数据源,以及如何进行数据的随机洗牌和批量处理。
摘要由CSDN通过智能技术生成

TensorFlow提供了一种内置的API—ataset,使得我们可以很容易地就利用输入管道的方式输入数据。可以像队列读取数据那样,生产batch、数据增强等等。

官方介绍

tf.data.Dataset 可以表示为一些元素的序列,该元素序列可以是列表、元组甚至是字典。比如对于图像通道,元素可以是单独的数据样本,也可以是成对的(样本+label),这里提供了两种不同的创建dataset的方式:

Dataset.from_tensor_slices():从数据中返回一个切片,也就是单个数据信息

Dataset.batch():对数据应用变换,使其返回一个batch

tf.data.Iterator是从数据集中提取元素的主要方法,通过Iterator.get_next()产生Dataset下一个元素。最简单的迭代器是"one-shot iterator",它可以对Dataset迭代一次;对于复杂的情况,Iterator.initializer可以让你重新启动和参数化一个迭代器,这样就可以在一个程序中多次加载训练集和验证集。

# 创建一个Dataset,(此例是from tensor创建)
dataset1 = tf.data.Dataset.from_tensor_slices(tf.random_uniform([4, 10]))     # tensor
print(dataset1.output_types)  # ==> "tf.float32"
print(dataset1.output_shapes)  # ==> "(10,)"

dataset2 = tf.data.Dataset.from_tensor_slices(
   (tf.random_uniform([4]),
    tf.random_uniform([4, 100], maxval=100, dtype=tf.int32)))                 # 元组
print(dataset2.output_types)  # ==> "(tf.float32, tf.int32)"
print(dataset2.output_shapes)  # ==> "((), (100,))"

dataset3 = tf.data.Dataset.zip((dataset1, dataset2))
print(dataset3.output_types)  # ==> (tf.float32, (tf.float32, tf.int32))
print(dataset3.output_shapes)  # ==> "(10, ((), (100,)))"

dataset = tf.data.Dataset.from_tensor_slices(
   {"a": tf.random_uniform([4]),
    "b": tf.random_uniform([4, 100], maxval=100, dtype=tf.int32)})            # 字典
print(dataset.output_types)  # ==> "{'a': tf.float32, 'b': tf.int32}"
print(dataset.o
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值