TensorFlow 数据集的函数 cache() 和 prefetch() 有何作用?

2024-04-25

我正在关注 TensorFlow图像分割 https://www.tensorflow.org/tutorials/images/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()功能做什么?这官方文档 https://www.tensorflow.org/api_docs/python/tf/data/Dataset#cache非常晦涩且自引用:

缓存此数据集中的元素。

  1. 什么是prefetch()功能做什么?这官方文档 https://www.tensorflow.org/api_docs/python/tf/data/Dataset#prefetch又是相当晦涩难懂:

创建一个从该数据集中预取元素的数据集。


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

您可以找到更多关于cache在张量流中here https://www.tensorflow.org/guide/data_performance#caching.

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

您可以找到更多关于prefetch在张量流中here https://www.tensorflow.org/guide/data_performance#prefetching.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow 数据集的函数 cache() 和 prefetch() 有何作用? 的相关文章

随机推荐