首页 > 解决方案 > tensorflow.data.experimental.CsvDataset 是否一遍又一遍地从文件中读取?

问题描述

我正在为 tf.data.Dataset 的长时间训练而苦苦挣扎,并且开始怀疑读取 CSV 文件是否会成为瓶颈。tensorflow.data.experimental.CsvDataset是否一遍又一遍地从文件中读取?

我考虑尝试首先导入整个数据集并将其放入一个 numpy 数组中,然后从 tensors 创建一个新的 TF Dataset。但是这样的改变需要时间,如果 SO 可以事先告诉我这没有什么区别,我不想浪费时间。

标签: tensorflow-datasets

解决方案


我不知道为什么我用 CsvDataset 训练了这么长的时间,但是修改我的代码以首先将数据导入一个 numpy 数组,然后使用它导入它tf.data.Dataset.from_tensor_slices使训练速度提高了大约10-100 倍。随之而来的另一个可能相关的变化是数据集在整个处理过程中不再嵌套。在旧版本中,每批都是列张量的元组,而在新版本中,每批只是一个张量。(可以通过删除为嵌套结构量身定制的变换来实现进一步的加速,这些变换现在仅应用于一个张量。)


推荐阅读