是否有关于分片数据集的指南?

Jen*_*nny 13 tensorflow

是否有关于选择数据集的分片文件数或每个分片中的记录数的指导原则?

在使用的例子中tensorflow.contrib.slim,

分片文件的数量和每个分片中的记录数是否会对训练模型和训练模型的性能产生影响?

据我所知,如果我们不将数据集拆分成多个分片,那么对数据进行混洗将不是很随机,因为capacityRandomShuffleQueue可能小于数据集的大小.

使用多个分片还有其他优点吗?


更新

文件

如果您有比读取文件更多的读取线程,那么为了避免您有两个线程从相同文件中读取相同示例的风险.

为什么我们不能使用50个线程来读取5个文件?

小智 1

Tensorflow 的较新版本(2.5)具有数据集的分片功能。从张量流文档中找到以下示例代码

A = tf.data.Dataset.range(10)
B = A.shard(num_shards=3, index=0)
list(B.as_numpy_iterator())  
Run Code Online (Sandbox Code Playgroud)

读取单个输入文件时,可以按如下方式对元素进行分片

d = tf.data.TFRecordDataset(input_file)
d = d.shard(num_workers, worker_index)
Run Code Online (Sandbox Code Playgroud)