【发布时间】:2014-03-29 19:12:36
【问题描述】:
我正在使用带有 Daniel Nouri 的 noccn 模块的 cudaconvnet 进行图像分类,并希望通过获取大量原始图像的补丁(并翻转它)来实现数据增强。什么时候最好?
我已经确定了培训过程中可能的三个阶段:
a) 从数据创建批次时
b) 下一批训练时
c) 给定一个批次,当获取下一张图片输入网络时
在我看来,a) 的优势在于我可以将增强数据分散到所有批次中。但是它会占用1000倍以上的磁盘空间原始数据集已经1TB,所以完全不可行。
b) 和 c) 不涉及将新数据存储在磁盘上,但我可以将数据分散到批次中吗?如果我不这样做,那么假设我有 batch_size==128 并且我可以将数据增加 1000 倍,那么接下来的 8 个批次都将包含来自同一类的图像。因为每个训练样本根本不会随机化,所以训练网络不是很糟糕吗?
此外,如果我选择 b) 或 c) 并从 k 个训练示例中创建一个新批次,那么数据扩充 n 倍将使批次大小为 n*k,而不是给我 n 倍的批次。
例如,在我的情况下,我的 batchsize==128 并且可以预期 1000 倍的数据增强。因此,每个批次实际上的大小为 128*1000,而我将得到的只是更准确的偏导数估计(这在无用的程度上是无用的,因为 batchsize==128k 太高了)。
那我该怎么办?
【问题讨论】:
标签: image-processing neural-network