代码之家  ›  专栏  ›  技术社区  ›  robertspierre

TensorFlow cache()和Prefict()做什么?

  •  0
  • robertspierre  · 技术社区  · 5 年前

    我在跟踪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

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

    0 回复  |  直到 5 年前
        1
  •  3
  •   Tensorflow Warrior    5 年前

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

    cache 在张量流中 here .

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

    prefetch 在张量流中 here