Pytorch 在CNN网络中使用不同核函数的SVM作为最后一层

Pytorch 在CNN网络中使用不同核函数的SVM作为最后一层,pytorch,svm,cnn,Pytorch,Svm,Cnn,我试图用支持向量机代替CNN网络最后一个完全连接的层,在多分类问题中使用pytorch。我做了一些研究,它说,我应该用nn.MultiMarginLoss替换nn.CrossEntropyLoss 改变标准实际上如何与“用SVM替换完全连接的层”任务相对应?另一件事是,我想使用不同核的SVM,比如二次核。这个问题实际上可以解释为逻辑回归和SVM在分类上的差异 我们可以天真地看待你的整个深度学习平台,就好像你有一个魔术师,魔术师接受输入数据,给你一套精心设计的特征,你使用这些特征进行分类 根据最小

我试图用支持向量机代替CNN网络最后一个完全连接的层,在多分类问题中使用pytorch。我做了一些研究,它说,我应该用
nn.MultiMarginLoss
替换
nn.CrossEntropyLoss


改变标准实际上如何与“用SVM替换完全连接的层”任务相对应?另一件事是,我想使用不同核的SVM,比如二次核。

这个问题实际上可以解释为逻辑回归和SVM在分类上的差异

我们可以天真地看待你的整个深度学习平台,就好像你有一个魔术师,魔术师接受输入数据,给你一套精心设计的特征,你使用这些特征进行分类

根据最小化的损失,可以使用不同种类的函数来解决此分类问题。如果你使用交叉熵,就像你在应用逻辑回归分类。另一方面,如果最小化边际损失,实际上等于找到支持向量,这就是支持向量机的工作原理

您需要了解内核在计算损失中的作用(例如,),但TL;DR是指对于损失计算,有一个
K(xi,xj)
组件,它实际上是核函数,表示
xi
xj
的相似性


因此,您可以实现一个自定义损失,其中有一个多项式核(在您的例子中是二次的),并模拟那里的边际损失计算。

这个问题实际上可以解释为Logistic回归和SVM在分类方面的差异

我们可以天真地看待你的整个深度学习平台,就好像你有一个魔术师,魔术师接受输入数据,给你一套精心设计的特征,你使用这些特征进行分类

根据最小化的损失,可以使用不同种类的函数来解决此分类问题。如果你使用交叉熵,就像你在应用逻辑回归分类。另一方面,如果最小化边际损失,实际上等于找到支持向量,这就是支持向量机的工作原理

您需要了解内核在计算损失中的作用(例如,),但TL;DR是指对于损失计算,有一个
K(xi,xj)
组件,它实际上是核函数,表示
xi
xj
的相似性

因此,您可以实现一个自定义损失,在这里您有一个多项式核(在您的例子中是二次的),并模拟那里的边际损失计算