dan*_*che 8 shuffle tensorflow
现在我使用以下功能进行改组
from tensorflow.contrib import data
def input_pipeline(filenames, batch_size):
# Define a `tf.contrib.data.Dataset` for iterating over one epoch of the data.
dataset = data.TextLineDataset(filenames)
dataset = dataset.map(decode_func)
dataset = dataset.shuffle(buffer_size=10000) # Equivalent to min_after_dequeue=10000.
dataset = dataset.batch(batch_size)
# Return an *initializable* iterator over the dataset, which will allow us to
# re-initialize it at the beginning of each epoch.
return dataset.make_initializable_iterator()
Run Code Online (Sandbox Code Playgroud)
但它只是按数量调整数据,buffer_size
它将填写buffer
订单.
我的数据非常庞大,我无法设置buffer_size
得太大.有没有其他解决方案可以改组整个数据集?
目前,数据集 API 不支持对整个数据集进行混洗(超过 10k 个示例)。根据this thread,常见的方法是:
- 使用 MapReduce/Spark/Beam 等随机打乱一次整个数据。创建一组大致相同大小的文件(“分片”)的作业。
在每个时代:
一种。使用 Dataset.list_files(...).shuffle(num_shards) 随机打乱分片文件名列表。
湾 使用 dataset.interleave(lambda filename: tf.data.TextLineDataset(filename), cycle_length=N) 将来自 N 个不同分片的记录混合在一起。
C。使用 dataset.shuffle(B) 对结果数据集进行混洗。设置 B 可能需要一些实验,但您可能希望将其设置为大于单个分片中的记录数的某个值。
归档时间: |
|
查看次数: |
1567 次 |
最近记录: |