我们知道,当给出快照时,Caffe支持恢复训练。可以在here中找到Caffe训练延续方案的说明。但是,我发现训练损失和验证损失不一致。我给出以下示例来说明我的观点。假设我正在训练一个最大迭代次数为1000的神经网络,而每100个训练迭代次数将保留一个快照。使用以下命令完成此操作:
caffe train -solver solver.prototxt
其中批量大小选择为64,在Solver.prototxt中,我们具有:
test_iter: 4
max_iter: 1000
snapshot: 100
display: 100
test_interval: 100
我们仔细选择test_iter=4
,以便它将对几乎所有验证数据集执行测试(有284个验证样本,比4 * 64大一点)。
这将为我们提供.caffemodel和.solverstate文件的列表。例如,我们可能具有solver_iter_300.solverstate和solver_iter_300.caffemodel。生成这两个文件时,我们还可以看到训练损失(13.7466)和验证损失(2.9385)。
现在,如果我们使用快照Solver_iter_300.solverstate继续训练,则:
caffe train -solver solver.prototxt -snapshot solver_iter_300.solverstate
我们可以看到训练损失和验证损失分别为12.6和2.99。他们不同于以前。有任何想法吗?谢谢。