我正在学习tensorflow,而tf.data API使我感到困惑。处理大型数据集时显然更好,但是使用数据集时,必须将其转换回张量。但是,为什么不首先使用张量呢?为什么以及何时应该使用tf.data?
为什么不能让tf.data返回整个数据集,而不是通过for循环来处理它?当只是最小化数据集的功能时(使用类似tf.losses.mean_squared_error的东西),我通常通过张量或numpy数组输入数据,而且我不知道如何通过for循环输入数据。我该怎么办?
答案 0 :(得分:0)
tf.data
结节具有特定的工具,可帮助您为ML模型建立输入管道。输入管道输入原始数据,对其进行处理,然后将其提供给模型。何时应使用
tf.data
模块?
当您具有文件格式(例如.csv或.tfrecord)的大型数据集时,tf.data
模块将非常有用。另外,当您的原始数据需要改组和批量进行培训时。它可以有效地从源中获取数据。对于大型数据集和小型数据集都很有用。它可以结合训练和测试数据集。
如何创建批次并遍历它们进行培训?
我认为您可以使用NumPy和np.reshape
方法有效地做到这一点。熊猫可以为您读取数据文件。然后,您只需要一个for ... in ...
循环就可以将每个批次的amd传递给您的模型。
如何将NumPy数据提供给TensorFlow模型?
有两个选项可以使用tf.placeholder()
或tf.data.Dataset
。
tf.data.Dataset
的实现要容易得多。我建议使用它。此外,还有一些不错的方法。tf.placeholder
创建一个占位符张量,将数据馈送到TensorFlow图。此过程将花费更多时间输入数据。