我正在使用caffe对SSD模型进行对象检测,最近工作是调整“ MultiBoxLoss”的损失类型。 在multibox_loss_layer.cpp文件中,其丢失具有SOFTMAX作为默认值和LOGISTIC选项,我在caffe代码中添加了铰链损耗(SVM)选项,并进行了训练,但结果很糟糕。
现在老板希望我使用SVM通过python sklearn对特征图进行分类。
我遇到一个问题,在multibox_loss_layer.cpp文件中,可以使用softmax,logistic和铰链损耗来计算损失。在这一步上,它的数据只是“一维”,但特征图是高维的,我在网上发表文章,看来softmax无法对高维数据进行分类。
例如:如果有三类:猫,狗和兔子,则一维数据仅具有代表猫,狗和兔子的三个值(每个类一个值),但是高维数据则每个类都有很多值(例如特征图),在高维情况下,softmax似乎对此没有任何作用。
所以我想知道softmax,logistic和SVM之间有什么区别。有人可以帮忙吗?谢谢!
答案 0 :(得分:1)
从未见过将SVM损失函数应用于NN。但是,softmax是一个损失函数,应该使用它来优化解决方案多类分类问题。 Softmax将NN输出转换为每个类别出现的概率。 Logistic函数通常将每个神经元输出优化为一个Logistic问题,因此它并不强制输出仅是一类。如果要解决多标签问题,应使用此功能。
SVM不是函数,是另一个分类器。将softmax与SVM进行比较是没有意义的,因为第一个是损失函数,第二个是分类器。