Caffe: 在批次中平衡类别与ImageData层

我在Caffe中训练一个CNN,其输出为两个类别之一(一个二元问题)。

我使用ImageData层作为输入层,传递包含训练和验证图像集的两个.txt文件。这些文件是平衡的,即两个类别的示例数量相同。在这一层,我还使用了“shuffle”参数。

关于这一点,我有两个疑问:

1. 批次是如何从.txt文件中抽样/选择的?

它是否通过获取文件的前N个示例(假设N是批次大小),然后打乱它们并将它们输入到网络中来构建的?在这种情况下,批次本身可能不会平衡。这会影响训练/微调吗?

另一种方式是从一个类别中随机抽取N/2个示例,从另一个类别中抽取N/2个,但我认为Caffe不会这样做。

2. .txt文件中示例的顺序是否会影响批次的构建方式?

构建.txt文件的方式是否可以使批次保持平衡(例如,每一奇数行是一个类别,每一偶数行是另一个类别)是个好主意吗?

谢谢你的帮助!


回答:

(1) 是的,shuffle会随机化输入示例的顺序,前提是示例适当地划分——例如用换行符将句子分成不同的示例。Caffe不会关心按类别平衡每个批次。

这对训练有一定的影响,但在长期来看应该会平衡。重要的是每个示例在每个epoch中只呈现一次。

(2) 预平衡没有意义:shuffle会根据它认为合适的方式(随机数生成)改变顺序。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注