Caffe是否需要改组数据?

mrg*_*oom 7 c++ machine-learning neural-network deep-learning caffe

我使用C++将我的图像数据转换为caffe db格式(leveldb,lmdb),例如我将此代码用于imagenet.

是否需要对数据进行洗牌,我可以写入所有积极因素,然后写入所有负面信息,例如00000000111111111,或者数据是否需要洗牌,标签应该看起来像010101010110101011010?

来自DB的caffe样本数据是如何使用size = batch_size?的所有数据的随机子集的?

Sha*_*hai 10

你应该把样品洗牌吗?如果你不洗牌,想想学习过程; caffe只看到0样本 - 你期望算法推断出什么?简单地预测0所有的时间,一切都很酷.如果你有足够的时间0在你的第一个1caffe之前就会非常自信地预测0.从这一点开始移动模型将非常困难.
另一方面,如果它经常看到混合,0从一开始1就学习分离示例的有意义的特征.底线:对训练样本进行洗牌非常有利,特别是在使用基于SGD的方法时.

AFAIK,caffe不会随机抽样batch_size样本,而是batch_sizebatch_size样本后顺序通过输入DB .

TL; DR
shuffle.

  • 还发现这个https://github.com/BVLC/caffe/issues/1087`按顺序读取内容的原因是出于性能目的 - 传统HDD上的随机访问接近灾难.另一个问题当batch_size*number_iters> number_samples时会发生什么?它刚开始从DB开始采样? (4认同)