使用 tf.data.Dataset 创建图像增强以在每个时期产生不同的增强
Create image augmentations with tf.data.Dataset to produce different augmentations with every epoch
我有一个从 tfds 获取的数据集,我想在图像上创建正常的随机旋转,这些图像会随着每个时期的变化而变化
这是我目前使用的管道
我应该将 .map(random_rotate) 放置在此管道中的什么位置,以使增强随着每个时期的变化而变化
ds_train = ds_train.map(scale, num_parallel_calls=AUTOTUNE).cache().shuffle(ds_info.splits['train'].num_examples).batch(batch_size).prefetch(AUTOTUNE).repeat()
您使用的任何随机扩充操作都应放在数据集的 cache()
方法之后。 cache()
将保存您的数据,并且在一个纪元之后对数据集的每次后续调用都将转到缓存位置。这意味着在 cache()
之前发生的操作将不会被再次调用。如果您的旋转增强一次仅适用于一张图像,请将 map()
放在 cache()
之后但在 batch()
之前。如果你的旋转增强适用于批量图像,那么你可以将它放在 batch()
之后但在 prefetch()
.
之前
我有一个从 tfds 获取的数据集,我想在图像上创建正常的随机旋转,这些图像会随着每个时期的变化而变化
这是我目前使用的管道 我应该将 .map(random_rotate) 放置在此管道中的什么位置,以使增强随着每个时期的变化而变化
ds_train = ds_train.map(scale, num_parallel_calls=AUTOTUNE).cache().shuffle(ds_info.splits['train'].num_examples).batch(batch_size).prefetch(AUTOTUNE).repeat()
您使用的任何随机扩充操作都应放在数据集的 cache()
方法之后。 cache()
将保存您的数据,并且在一个纪元之后对数据集的每次后续调用都将转到缓存位置。这意味着在 cache()
之前发生的操作将不会被再次调用。如果您的旋转增强一次仅适用于一张图像,请将 map()
放在 cache()
之后但在 batch()
之前。如果你的旋转增强适用于批量图像,那么你可以将它放在 batch()
之后但在 prefetch()
.