tensorflow.data.Dataset 与 tensorflow.Tensor 相比有什么优势?

数据挖掘 张量流
2021-09-27 18:52:23

我有自己的输入数据类。它具有 x 和 y 以及测试和训练值(每个组合 1 个张量)。我注意到 TensorFlow 内置了一个 Dataset 类。这个类比常规张量有什么优势?主要是围绕处理大型数据集/懒惰?它似乎没有为 x vs y 数据或测试 vs 训练量身定制的功能。我所有的数据都适合内存,所以我不清楚使用内置类而不是我当前的类是否有益。当然,第一个假设是不使用内置类是愚蠢的。

1个回答

主要优势在于您无法将所有数据都放入内存的领域。

但是,即使在我将所有数据都放入内存的情况下,我也看到了性能的改进。我认为有两个原因促成了这一点:

  • 一个是缓存,其中一些操作(例如映射 OP)将被缓存并仅在第一个 epoch 中执行。如果您有这样的功能,这显然是适用的。
  • 另一种是预取当模型在 GPU 中的批次上进行训练时,CPU 会加载并准备下一个批次。这可以帮助节省大量时间。

其他一些功能允许用户定义函数的矢量化(例如,用于数据增强)及其并行化

您可以在此处查看一些基准。它们有点不相关,因为它们指的是数据集并未全部加载到内存中的情况,但它们可能仍然会让您感兴趣。