在使用caffe进行训练时,为什么"训练净输出"损失和"迭代损失"是相同的?

use*_*469 3 machine-learning neural-network gradient-descent deep-learning caffe

我正在使用caffe在我自己的数据上训练AlexNet.我看到的一个问题是"训练净输出"损失和"迭代损失"在训练过程中几乎相同.而且,这种损失有波动.喜欢:

...
...Iteration 900, loss 0.649719
...    Train net output #0: loss = 0.649719 (* 1 = 0.649719 loss ) 
...    Iteration 900, lr = 0.001
...Iteration 1000, loss 0.892498
...    Train net output #0: loss = 0.892498 (* 1 = 0.892498 loss ) 
...    Iteration 1000, lr = 0.001
...Iteration 1100, loss 0.550938
...    Train net output #0: loss = 0.550944 (* 1 = 0.550944 loss ) 
...    Iteration 1100, lr = 0.001
...
Run Code Online (Sandbox Code Playgroud)
  1. 我应该看到这种波动吗?
  2. 如您所见,报告的损失之间的差异并不显着.它在我的训练中是否显示出问题?

solver是:

net: "/train_val.prototxt"
test_iter: 1999
test_interval: 10441
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 100
max_iter: 208820
momentum: 0.9
weight_decay: 0.0005
snapshot: 10441
snapshot_prefix: "/caffe_alexnet_train"
solver_mode: GPU
Run Code Online (Sandbox Code Playgroud)

Sha*_*hai 5

  1. Caffe使用随机梯度下降(SGD)方法训练网.从长远来看,损失会减少,但在本地,损失有点波动是完全正常的.
  2. 报告的"迭代损失"是您的网络的所有损失层的加权总和,平均average_loss迭代次数.另一方面,报告的"列车净输出......"仅报告当前迭代的每个净输出.
    在你的榜样,你没有设置average_loss你的'solver',因此average_loss=1在默认情况下.由于您只有一个损失输出,loss_weight=1报告的"列车净输出......""迭代损失"是相同的(达到显示精度).

总结一下:你的输出完全正常.