在 Caffe 中测量训练误差

Measuring Training Error in Caffe

我正在使用 Caffe,并且有兴趣比较我的训练和测试错误以确定我的网络是过拟合还是欠拟合。但是,我似乎无法弄清楚如何让 Caffe 报告训练错误。它将显示训练损失(在批处理上计算的损失函数的值),但这对于确定网络是否为 overfitting/underfitting 没有用。有没有直接的方法来做到这一点?

我正在使用 Caffe (pycaffe) 的 Python 接口。如果我能以某种方式访问​​原始训练集,我就可以通过前向传递对批次进行处理并评估结果。但是,我似乎无法弄清楚如何访问当前正在处理的训练数据批次。这可能吗?我的数据是 LMDB 格式。

train_val.prototxt 文件中,将 TEST 阶段的 source 更改为指向训练 LMDB 数据库(默认情况下它指向验证 LMDB 数据库)然后 运行 这个命令:

$ ./build/tools/caffe test -solver models/bvlc_reference_caffenet/solver.prototxt -weights models/bvlc_reference_caffenet/<caffenet_train_iter>.caffemodel -gpu 0