Python 警告:调用迭代器未完全读取正在缓存的数据集。为了避免数据集被意外截断
这是在我使用Python 警告:调用迭代器未完全读取正在缓存的数据集。为了避免数据集被意外截断,python,tensorflow,tensorflow-datasets,Python,Tensorflow,Tensorflow Datasets,这是在我使用tf.data.Dataset时发生的: 调用迭代器未完全读取正在缓存的数据集。为了避免数据集的意外截断,数据集的部分缓存内容将被丢弃。如果您的输入管道类似于dataset.cache().take(k).repeat(),则可能发生这种情况。您应该使用dataset.take(k).cache().repeat() 例如,根据其他问题,它与cache()在方法序列中的位置有关,但我不知道具体做什么 以下是如何重现警告: import tensorflow_datasets as t
tf.data.Dataset
时发生的:
调用迭代器未完全读取正在缓存的数据集。为了避免数据集的意外截断,数据集的部分缓存内容将被丢弃。如果您的输入管道类似于dataset.cache().take(k).repeat()
,则可能发生这种情况。您应该使用dataset.take(k).cache().repeat()
例如,根据其他问题,它与cache()
在方法序列中的位置有关,但我不知道具体做什么
以下是如何重现警告:
import tensorflow_datasets as tfds
ds = tfds.load('iris', split='train')
ds = ds.take(100)
for elem in ds:
pass
似乎无论我做什么,无论我在哪里使用
cache()
,都会弹出警告。我试图在Google colab
上运行你的代码,它在没有任何警告的情况下成功运行,我正在使用Tensorflow 2.3
但是,您可以在使用缓存时遵循此常规方法
如果数据集足够小,可以放入内存中,则可以显著提高速度
使用数据集的cache()
方法将其内容缓存到
RAM
。通常应在加载和预处理
数据,但在洗牌
、重复
、批处理
和预取
之前。这边
每个实例将只被读取和预处理一次(而不是每个历元一次)