【caffe】caffe需要shuffle训练数据吗?

原文见https://stackoverflow.com/questions/37658069/does-caffe-need-data-to-be-shuffled/37659171#37659171。本文不只是相对caffe而言的,更重要的是解释了为什么我们在训练模型的时候需要shuffle数据

提问:

我利用此处的代码把我的imagenet图片数据转换到caffe的db格式。
数据需要shuffle吗?即:我能先把负样本写入db,然后把正样本写入db吗?就像:0000001111111。还是说数据需要shuffle成010110101001?
caffe如何从db中采样数据?是每次以batch_size的大小从db中随机采子集吗?

回答

“我应该shuffle数据吗?” 假设你不shuffle,学习过程中caffe首先看到一系列0,你觉得模型会如何推断?显然对于模型来说,只要无脑预测0就可以了,而如过在出现1之前模型已经遇见到了足够多的0,那么它就只会吧新见到的1视作噪声从而依然预测为0。这样就很难进一步进行优化了。
而如果一开始1和0就混合出现,那么模型就可以直接学习这些样本的特征了。
所以,shuffle样本是及其重要的,尤其是在SGD方法中。
据我所知,caffe不从db中随机采样batch_size个数据,而已一组又一组地顺序采样batch_size个数据。

猜你喜欢

转载自blog.csdn.net/tfcy694/article/details/84028391
今日推荐