TensorFlow数据集的功能cache()和prefetch()有什么作用?

时间:2019-12-07 17:59:13

标签: tensorflow caching dataset tensorflow-datasets prefetch

我正在关注TensorFlow的Image Segmentation教程。其中有以下几行:

train_dataset = train.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()
train_dataset = train_dataset.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
  1. cache()函数的作用是什么? official documentation非常模糊且具有自引用功能:
  

在此数据集中缓存元素。

  1. prefetch()函数的作用是什么? official documentation还是很晦涩:
  

创建一个数据集,该数据集将从该数据集中预提取元素。

1 个答案:

答案 0 :(得分:1)

tf.data.Dataset.cache转换可以在内存或本地存储中缓存数据集。这样可以避免在每个时期执行某些操作(例如打开文件和读取数据)。下一个时期将重用缓存转换所缓存的数据。

您可以在张量流here中找到有关cache的更多信息。

Prefetch与训练步骤的预处理和模型执行重叠。在模型执行训练步骤s的同时,输入管道正在读取步骤s + 1的数据。这样做可以将步长时间减少到训练的最大值(而不是总和),并减少了提取数据所需的时间。

您可以在张量流here中找到有关prefetch的更多信息。

希望这能回答您的问题。学习愉快。