我创建了一个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()方法?
第一个实现是否正确?
答案 0 :(得分:0)
首先,大多数tf.contrib.data函数已被弃用并移至tf.data.experimental。所以要当心。
看看input pipeline performance guide,以了解对于您的应用程序而言,哪种转换可能是最佳的最佳顺序。关于映射和批处理,是的,我们将映射和批处理的结果传递给apply函数,并在map and batch的返回描述中指定了引用确认。 并且出于效率考虑,我们希望使用地图和批处理,这通常取决于您的数据是什么以及地图功能的成本。效果指南对此有一些指导。
关于第一个代码块和第二个代码块之间的区别,两者之间有一个过滤器函数,因此根据您要过滤的内容,两个块可能不会给出相同的结果。