在Caffe中,“top”参数是什么?

4

我正在尝试运行一个caffe实验。在我的Train.prototxt中,我正在使用以下损失层:

layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  include {
    phase: TRAIN
  }
}

当训练开始时,我看到以下配置显示如下:

I0923 21:19:13.101313 26423 net.cpp:410] 损失 <- ip2
I0923 21:19:13.101323 26423 net.cpp:410] 损失 <- 标签
I0923 21:19:13.101339 26423 net.cpp:368] 损失 -> (自动)

在损失层中,我没有提供 top 参数。这里的 "自动" (loss -> (automatic)) 究竟是什么意思?
谢谢!
1个回答

8
Caffe的层,包括Loss层,会生成Blob(4-D数组)作为它们计算的输出。如果你没有通过“top”参数设置Blob名称,则相应的Blob将被添加到网络的“output”中。
这意味着,如果你调用了“Net::forward()”方法,它将返回一个Blob列表,即那些未绑定为另一层输入的Blob。
当你调用Caffe训练工具时,它会自动将这些Blob打印到屏幕上。这样你就可以在训练过程中跟踪损失或准确率的值。

请问如果将Blob添加到Net的输出中会发生什么事情? - subha
例如,在您进行网络训练时,屏幕上会打印出数据块。您将看到类似于“迭代0,损失= 0.699334”和“测试网络输出#0:损失= 0.831318(* 1 = 0.831318损失)”的内容。 - Flavio Ferrara
我明白了...非常感谢你所提供的帮助。 - subha
不客气!如果这个答案对您有帮助,您可以接受它! - Flavio Ferrara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接