Caffe 是否需要对数据进行混洗?

Does Caffe need data to be shuffled?

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

是否需要打乱数据,我可以将我所有的正数写入 db,然后写入所有的负数,例如 00000000111111111,或者数据需要打乱并且标签应该看起来像 010101010110101011010?

caffe 如何从 DB 中采样数据,它使用大小为 batch_size 的所有数据的随机子集是真的吗?

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

AFAIK,caffe 不会随机抽取 batch_size 个样本,而是在 batch_size 个样本之后按顺序遍历输入数据库 batch_size

TL;DR
随机播放。