tf.data.Dataset批处理和地图与tf.contrib.data.map_and_batch之间的区别

时间:2019-01-16 00:23:34

标签: python-3.x tensorflow tensorflow-datasets tensorflow-estimator

我创建了一个tf.data.Dataset并想使用此数据集训练模型:

dataset = dataset.prefeth()
dataset = dataset.shuffle()
dataset = dataset.repeat()
dataset = dataset.map()
dataset = dataset.filter()
dataset = dataset.batch()

我想知道上述数据集与下面的数据集有什么区别:

dataset = dataset.prefeth()
dataset = dataset.shuffle()
dataset = dataset.repeat()
dataset = dataset.apply(tf.contrib.data.map_and_batch())

我知道,除了性能外,它们应该没有区别。但是我不知道是否应该使用.apply()方法?

第一个实现是否正确?

1 个答案:

答案 0 :(得分:0)

首先,大多数tf.contrib.data函数已被弃用并移至tf.data.experimental。所以要当心。

看看input pipeline performance guide,以了解对于您的应用程序而言,哪种转换可能是最佳的最佳顺序。关于映射和批处理,是的,我们将映射和批处理的结果传递给apply函数,并在map and batch的返回描述中指定了引用确认。 并且出于效率考虑,我们希望使用地图和批处理,这通常取决于您的数据是什么以及地图功能的成本。效果指南对此有一些指导。

关于第一个代码块和第二个代码块之间的区别,两者之间有一个过滤器函数,因此根据您要过滤的内容,两个块可能不会给出相同的结果。