首页 > 解决方案 > tf.data.Dataset batch 和 map 和 tf.contrib.data.map_and_batch 的区别

问题描述

我创建了一个 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() 方法?

第一个实现是否正确?

标签: python-3.xtensorflowtensorflow-datasetstensorflow-estimator

解决方案


首先,大多数tf.contrib.data函数已被弃用并移至tf.data.experimental。所以要注意这一点。

查看输入管道性能指南,了解什么是应用程序的最佳转换顺序。关于map和batch,是的,我们将map和batch的结果传递给apply函数,并在map和batch的返回描述中指定,以供参考确认。出于效率原因,我们希望使用 map 和 batch,这通常取决于您的数据是什么以及您的 map 函数的成本有多大。性能指南有一些相同的指导方针。

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


推荐阅读