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

Slice layer : how to discard one sliced output that will not be used in further layers?

我的网络有多个损失。我只想测试某个loss。

我把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。但是,由于计算资源的原因,我不想考虑该选项。

SilenceLayer 正是您要找的东西 - 它是一个特殊的 "do nothing" 层,它只接受输入但不产生任何输出,保持您的日志干净:

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