【问题标题】:tf.data.Dataset - delete cache?tf.data.Dataset - 删除缓存?
【发布时间】:2020-11-27 12:08:14
【问题描述】:

调用tf.data.Dataset.cache()后建立的内存缓存是否可以删除?

这就是我想做的事情。数据集的扩充是非常昂贵的,所以目前的代码或多或少:

data = tf.data.Dataset(...) \
       .map(<expensive_augmentation>) \
       .cache() \
       # .shuffle().batch() etc. 

但是,这意味着在 data 上的每次迭代都会看到相同的数据样本的增强版本。我想做的是使用缓存几个时期,然后重新开始,或者等效地执行Dataset.map(&lt;augmentation&gt;).fleeting_cache().repeat(8) 之类的操作。这有可能实现吗?

【问题讨论】:

  • 我也想这样做,但不是每 n 个 epoch 丢弃整个缓存,我想在每个 epoch 驱逐一定比例的缓存。
  • FTR,我创建了一个feature request for this

标签: python tensorflow


【解决方案1】:

缓存生命周期与数据集相关联,因此您可以通过重新创建数据集来实现:

def create_dataset():
  dataset = tf.data.Dataset(...)
  dataset = dataset.map(<expensive_augmentation>)
  dataset = dataset.shuffle(...)
  dataset = dataset.batch(...)
  return dataset

for epoch in range(num_epochs):
  # Drop the cache every 8 epochs.
  if epoch % 8 == 0: dataset = create_dataset()
  for batch in dataset:
    train(batch)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-23
    • 2018-03-01
    • 2012-10-16
    • 2017-05-28
    • 2011-05-12
    • 2012-03-19
    • 2014-10-20
    • 2023-03-10
    相关资源
    最近更新 更多