在Caffe深度学习框架中,存在一个argmax层,该层不可区分,因此不能用于CNN的端到端训练。 谁能告诉我如何实现argmax的软版本,即soft-argmax?
我想从热图中回归坐标,然后在损失计算中使用这些坐标。我对这个框架非常陌生,因此不知道如何执行此操作。任何帮助将不胜感激。
答案 0 :(得分:0)
我没有得到您想要的,但是有以下选择:
使用L2损失训练回归任务(EuclideanLoss)。或SmoothL1Loss(来自Wei Lui的SSD Caffe)或L1(不知道是不是得到了)。
使用具有交叉熵损失的Softmax(SoftmaxWithLoss)来训练具有与x或y坐标的可能值相对应的类的分类任务。例如,一个损耗层代表x,一个损耗层代表y。 SoftmaxWithLoss接受label作为数字值,并使用static_cast()将其强制转换为int。但是要考虑到实现不会检查强制转换的值是否在0 ..(num_classes-1)范围内,因此必须小心。
如果您想要更多不寻常的东西,则必须使用C ++,C ++ / CUDA或Python + NumPy编写自己的图层。除非您已经在使用别人的实现,否则通常就是这种情况。