切片层:如何丢弃一个不会在其他层中使用的切片输出?

时间:2018-03-08 13:28:39

标签: caffe

我的网络有多重损失。我想只测试一定的损失。

我已将softmax切成softmax_1和softmax_2,并且只有softmax_1用于此特定损失。

### slice softmax into softmax_1: Nx6xHxW, softmax_2: Nx1xHxW
layer {
  name: "slice_conv1_1_D"
  type: "Slice"
  bottom: "softmax"
  top: "softmax_1"
  top: "softmax_2"
  slice_param
  {
    slice_dim: 1
    slice_point: 6
  }
}

但是,使用上面的切片层运行网络会使网络产生大量的softmax_2值,因为其他层没有使用它们。

我有什么方法可以分割我的数据" softmax"并且只保留" softmax_1"并丢弃" softmax_2"彻底?

非常感谢你的帮助。

添加了: 我知道我可能会将其他损失的loss_weight设置为0.但是,由于计算资源,我不想考虑这些选项。

1 个答案:

答案 0 :(得分:4)

SilenceLayer正是您正在寻找的 - 它是一个特殊的"什么都不做"只接受输入但不产生任何输出的图层,保持日志清洁:

layer { name: "silence" type: "Silence" bottom: "softmax_2" }