python - tf.data.Dataset - 删除缓存?
问题描述
是否可以删除调用后构建的内存缓存tf.data.Dataset.cache()
?
这就是我想做的。数据集的扩充是非常昂贵的,所以当前的代码或多或少是:
data = tf.data.Dataset(...) \
.map(<expensive_augmentation>) \
.cache() \
# .shuffle().batch() etc.
然而,这意味着每次迭代data
都会看到相同的数据样本的增强版本。我想做的是使用缓存几个时期,然后重新开始,或者等效地做类似Dataset.map(<augmentation>).fleeting_cache().repeat(8)
. 这有可能实现吗?
解决方案
缓存生命周期与数据集相关联,因此您可以通过重新创建数据集来实现:
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)
推荐阅读
- php - PHP 连接到 Telnet 服务器
- github - 图片未显示在 github 页面上
- r - 如何使用 r 中的 corrgram 函数生成具有 r^2 值的面板?
- java - 使用 Jersey 客户端下载文件时为空内容类型
- hibernate - 加入和继承jpa
- swift - 如何从一个层次高于另一个的 VC 中获取数据
- php - 在 laravel 中使用在 Instagram 中发布照片时出现 mgp25 错误
- django - django - 是否可以在 url 中使用 slug 和 primary
- javascript - Firebase 实时数据库停止工作
- sql - SQL-提取字符之间的文本