如何计算 pycaffe 中的 test/validation 损失

How to compute test/validation loss in pycaffe

我正在尝试计算 python 中我自己的训练循环中的测试损失。调用 solver.test_nets[0].forward() 似乎更新了 score blob 而不是 loss blob。知道如何更新它吗?

我正在使用以下求解器配置:

net: "/tmp/tmp8ikb9sg2/train.prototxt"
test_net: "/tmp/tmp8ikb9sg2/test.prototxt"
test_iter: 1
test_interval: 2147483647
base_lr: 0.1
lr_policy: "fixed"
test_initialization: false

and train 和 test.prototxt 除了文件顶部的阶段定义外完全相同:

name: "pycaffenet"
state {
  phase: TRAIN  # set TEST in test.prototxt
}
...
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "score"
  bottom: "output"
  top: "loss"
}

这实际上是一个与我想的不同的问题。 loss blob 正在更新,但它保持不变,因为 solver.test_nets[0] 的权重没有改变。看起来他们没有自动与 solver.net 分享。这可以通过简单地调用来完成:

solver.test_nets[0].share_with(solver.net)