如何在caffe中实现soft-argmax?

时间:2019-03-07 23:13:15

标签: caffe

在Caffe深度学习框架中,存在一个argmax层,该层不可区分,因此不能用于CNN的端到端训练。 谁能告诉我如何实现argmax的软版本,即soft-argmax?

我想从热图中回归坐标,然后在损失计算中使用这些坐标。我对这个框架非常陌生,因此不知道如何执行此操作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我没有得到您想要的,但是有以下选择:

  1. 使用L2损失训练回归任务(EuclideanLoss)。或SmoothL1Loss(来自Wei Lui的SSD Caffe)或L1(不知道是不是得到了)。

  2. 使用具有交叉熵损失的Softmax(SoftmaxWithLoss)来训练具有与x或y坐标的可能值相对应的类的分类任务。例如,一个损耗层代表x,一个损耗层代表y。 SoftmaxWithLoss接受label作为数字值,并使用static_cast()将其强制转换为int。但是要考虑到实现不会检查强制转换的值是否在0 ..(num_classes-1)范围内,因此必须小心。

  3. 如果您想要更多不寻常的东西,则必须使用C ++,C ++ / CUDA或Python + NumPy编写自己的图层。除非您已经在使用别人的实现,否则通常就是这种情况。