将具有不同内核的SVM用作CNN网络的最后一层

时间:2020-05-29 08:44:16

标签: pytorch svm cnn

在多个分类问题中,我正在尝试使用pytorch将SCN替换CNN网络的最后一个完全连接的层。我已经做过一些研究,并说我应该将nn.CrossEntropyLoss替换为nn.MultiMarginLoss

更改条件实际上仅与“用SVM替换完全连接的层”任务相对应吗?另一件事是,我想将SVM与其他内核一起使用,例如二次方。

1 个答案:

答案 0 :(得分:0)

这个问题实际上可以解释为Logistic回归和SVM在分类上的区别。

我们可以天真的看待您的深度学习的整个平台,就好像您有魔术师一样,并且魔术师接受输入数据,并为您提供一组经过精心设计的功能,然后您可以使用这些功能进行分类。< / p>

根据最小化损失的多少,可以使用各种功能来解决此分类问题。如果使用交叉熵,就好像您正在应用逻辑回归分类。另一方面,如果将边际损失最小化,则实际上等于找到支持向量,这确实是SVM的工作方式。

您需要了解内核在损耗计算中的作用(例如here),但是TL; DR就是损耗计算中的K(xi,xj)组件实际上是内核函数,表示xixj的相似性。

因此,您可以在具有多项式内核(在这种情况下为二次方)的情况下实现自定义损失,并在此处模拟保证金损失计算。