Tensorflow 启用洗牌后,tf.dataset.cache是否在分布式训练中工作

Tensorflow 启用洗牌后,tf.dataset.cache是否在分布式训练中工作,tensorflow,tensorflow-datasets,Tensorflow,Tensorflow Datasets,看起来tf.dataset.cache可以通过将数据缓存在工作内存中来帮助提高数据管道性能。因此,在第二个和以后的时代,数据可以直接从RAM访问,而不是通过文件系统 问题是在分布式训练的情况下,当启用洗牌时,每个工作人员在下一个历元中不会读取相同的数据,缓存是否仍然有用 问题是在分布式训练的情况下,何时进行洗牌 启用后,每个工作进程在下一个历元中不会读取相同的数据,是吗 缓存仍然有益吗 这并没有什么好处,正如您正确地提到的,如果调用数据集,它将在每次迭代中生成完全相同的数据 要获得随机化数据,您

看起来tf.dataset.cache可以通过将数据缓存在工作内存中来帮助提高数据管道性能。因此,在第二个和以后的时代,数据可以直接从RAM访问,而不是通过文件系统

问题是在分布式训练的情况下,当启用洗牌时,每个工作人员在下一个历元中不会读取相同的数据,缓存是否仍然有用

问题是在分布式训练的情况下,何时进行洗牌 启用后,每个工作进程在下一个历元中不会读取相同的数据,是吗 缓存仍然有益吗

这并没有什么好处,正如您正确地提到的,如果调用数据集,它将在每次迭代中生成完全相同的数据

要获得随机化数据,您可以在调用
缓存
后调用
shuffle

train_dataset = mnist_train.map(scale).cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE)
eval_dataset = mnist_test.map(scale).batch(BATCH_SIZE)

在进行分布式训练时,请参考
dataset.batch
dataset.cache
dataset.prefetch

如果我在缓存后调用shuffle,那么缓存的效果如何?@Jaylin,因此缓存没有效果。如回答中所述,如果您希望随机化迭代顺序,请确保在调用缓存后调用shuffle。