介绍了创建不同种类的 Dataset
和 Iterator
对象的基础知识,以及如何从这些对象中提取数据。
step1:要启动输入管道,您必须定义来源。例如,要通过内存中的某些张量构建 Dataset
,您可以使用 tf.data.Dataset.from_tensors()
或 tf.data.Dataset.from_tensor_slices()
。或者,如果您的输入数据以推荐的 TFRecord 格式存储在磁盘上,那么您可以构建 tf.data.TFRecordDataset
。
step2: 有了 Dataset
对象后,您可以通过链接 tf.data.Dataset
对象上的方法调用将其转换为新的 Dataset
。例如,您可以应用单元素转换,例如 Dataset.map()
(为每个元素应用一个函数),也可以应用多元素转换(例如 Dataset.batch()
)。要了解转换的完整列表,请参阅 tf.data.Dataset
的文档。
step3:消耗 Dataset
中值的最常见方法是构建迭代器对象。通过此对象,可以一次访问数据集中的一个元素(例如通过调用 Dataset.make_one_shot_iterator()
)。tf.data.Iterator
提供了两个操作:Iterator.initializer
,您可以通过此操作(重新)初始化迭代器的状态;以及 Iterator.get_next()
,此操作返回对应于有符号下一个元素的 tf.Tensor
对象
- 可馈送 iterator = tf.data.Iterator.from_string_handle()
- 可馈送迭代器可以与
tf.placeholder
一起使用,通过熟悉的feed_dict
机制选择每次调用tf.Session.run
时所使用的Iterator
。它提供的功能与可重新初始化迭代器的相同,但在迭代器之间切换时不需要从数据集的开头初始化迭代器。 - https://blog.csdn.net/weixin_39506322/article/details/82455860