【发布时间】:2019-01-13 00:16:09
【问题描述】:
我正在使用 TensorFlow 对一个非常大的数据集进行训练,该数据集太大而无法放入 RAM。因此,我将数据集拆分为硬盘上的多个分片,并使用tf.data.Dataset 类将分片数据加载到GPU 内存中的tf.placeholder 中。要跨这些分片进行训练,我正在考虑两种方法,但我不知道哪种方法是最佳实践。它们是:
1) 对于每个 epoch,依次加载每个数据集分片,并在每个分片上训练一次迭代。
2) 对于每个 epoch,依次加载每个数据集分片,然后在每个分片上训练多次。
1) 的问题是从硬盘加载每个数据集分片需要很长时间,并且由于每个分片仅在每次迭代中进行训练,所以整个训练时间的很大一部分都花在了加载这些数据上。但是,2) 的问题在于,在同一分片上连续多次训练会使优化更容易收敛到局部最小值。
推荐的方法是什么?
【问题讨论】:
标签: tensorflow