如何计算 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)
我正在尝试计算 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)