从.caffemodel执行验证丢失?

时间:2017-06-05 04:18:30

标签: machine-learning neural-network deep-learning caffe

AFAIK,我们有两种方法可以获得验证损失 (1)在训练过程中通过设置求解器在线进行如下操作: train_net:Driver.FindElement(By.Name("mpcName"));

'train.prototxt'

(2)基于.caffemodel文件中的权重离线。在这个问题中,由于GPU有限,我认为是第二种方式。首先,我在test_net: "test.prototxt" test_iter: 200 test_interval: 100 每100次迭代后将网络权重保存到.caffemodel。基于这些.caffemodel,我想计算验证损失

snapshot: 100

其中../build/tools/caffe test -model ./test.prototxt -weights $snapshot -iterations 10 -gpu 0 是.caffemodel的文件名。例如snapshot

我的测试原型的数据层是

snap_network_100.caffemodel

第一种和第二种方式会产生不同的验证损失。我发现验证损失的第一种方式与批量大小无关。这意味着不同批次大小的验证损失相同。然而,第二种方式,验证损失随着不同的批量大小而变化,但损失与不同的迭代非常接近。

我的问题是计算验证损失的方法是正确的?

1 个答案:

答案 0 :(得分:2)

您计算不同迭代次数的验证损失:

test_iter: 200

从命令行运行时,在'solver.prototxt',与-iterations 10对比。这意味着您要对不同数量的验证样本进行平均损失 由于在命令行验证时使用的样本少得多,因此您对batch_size更加敏感 确保您使用完全相同的设置并验证验证损失是否确实相同。