【问题标题】:Why should I use tf.data?为什么要使用 tf.data?
【发布时间】:2019-07-20 13:04:43
【问题描述】:

我正在学习 tensorflow,tf.data API 让我很困惑。在处理大型数据集时显然更好,但在使用数据集时,必须将其转换回张量。但是为什么不首先使用张量呢?为什么以及何时应该使用 tf.data?

为什么不能让 tf.data 返回整个数据集,而不是通过 for 循环处理它?当只是最小化数据集的一个函数时(使用类似 tf.losses.mean_squared_error 的东西),我通常通过张量或 numpy 数组输入数据,我不知道如何通过 for 循环输入数据。我该怎么做?

【问题讨论】:

    标签: python numpy tensorflow machine-learning


    【解决方案1】:
    • tf.data 模块具有特定工具,可帮助您为 ML 模型构建输入管道。输入管道接收原始数据,对其进行处理,然后将其提供给模型。

    什么时候应该使用tf.data 模块?

    当您拥有 .csv 或 .tfrecord 等文件形式的大型数据集时,tf.data 模块非常有用。 tf.data.Dataset 可以高效地执行样本的混洗和批处理。适用于大型数据集和小型数据集。它可以结合训练和测试数据集。

    如何创建批次并迭代它们以进行训练?

    我认为您可以使用 NumPy 和 np.reshape 方法有效地做到这一点。 Pandas 可以为您读取数据文件。然后,您只需要一个 for ... in ... 循环来获取每个批次并将其传递给您的模型。

    如何将 NumPy 数据提供给 TensorFlow 模型?

    有两个选项可以使用tf.placeholder()tf.data.Dataset

    1. tf.data.Dataset 的实现要容易得多。我建议使用它。此外,还有一些很好的方法。
    2. tf.placeholder 创建一个占位符张量,将数据提供给 TensorFlow 图。此过程会消耗更多时间来输入数据。

    【讨论】:

      猜你喜欢
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2012-08-22
      • 2016-09-12
      • 1970-01-01
      • 2020-11-07
      • 2011-07-27
      相关资源
      最近更新 更多