是否有关于选择数据集的分片文件数或每个分片中的记录数的指导原则?
在使用tensorflow.contrib.slim
,
ImageNet 数据集的每个分片中大约有1024
个记录。(tensorflow/models/inception)
flowers 数据集的每个分片中大约有600
个记录。 (tensorflow/models/slim)
每个分片中的分片文件数和记录数是否会对训练模型和训练模型的性能产生影响?
据我所知,如果我们不将数据集拆分为多个分片,则对于混洗数据将不是随机的,因为capacity
的{{1}}可能小于数据集。
使用多个分片还有其他优点吗?
更新
如果你有更多的读取线程而不是输入文件,为了避免你有两个线程从同一个文件中读取相同例子的风险。
为什么我们不能使用50个线程来读取5个文件?
答案 0 :(得分:0)
较新的 (2.5) 版本的 Tensorflow 具有数据集的分片功能。 从 tensorflow documentation
中找到以下示例代码A = tf.data.Dataset.range(10)
B = A.shard(num_shards=3, index=0)
list(B.as_numpy_iterator())
读取单个输入文件时,可以按如下方式分片元素
d = tf.data.TFRecordDataset(input_file)
d = d.shard(num_workers, worker_index)