如何在caffe中实现soft-argmax?

问题描述 投票:0回答:1

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

我想从热图中回归坐标,然后在损耗计算中使用这些坐标。我对这个框架很新,因此不知道如何做到这一点。任何帮助都感激不尽。

caffe
1个回答
0
投票

我没有得到你想要的,但有以下选项:

  1. 使用L2损失来训练回归任务(EuclideanLoss)。或SmoothL1Loss(来自SSD Caffe by Wei Lui),或L1(不知道你得到了它)。
  2. 使用具有交叉熵损失的softmax(SoftmaxWithLoss)来训练具有与x或y坐标的可能值对应的类的分类任务。例如,x为一个损失层,y为一个。 SoftmaxWithLoss接受label作为数值,并使用static_cast()将其强制转换为int。但是考虑到实现不会检查转换值是否在0 ..(num_classes-1)范围内,所以你必须要小心。
  3. 如果你想要一些更不寻常的东西,你必须用C ++,C ++ / CUDA或Python + NumPy编写自己的图层。除非您已经在使用其他人的实现,否则通常会出现这种情况。
© www.soinside.com 2019 - 2024. All rights reserved.