Machine learning 如何在keras中使用分类_铰链损失,以便在最后一层使用SVM进行训练?

Machine learning 如何在keras中使用分类_铰链损失,以便在最后一层使用SVM进行训练?,machine-learning,keras,deep-learning,svm,data-science,Machine Learning,Keras,Deep Learning,Svm,Data Science,我想训练一个CNN使用SVM在最后一层分类。我知道分类铰链是最好的损失函数。我有6门课要分类。 我的模型如下所示: model = Sequential() model.add(Conv2D(50, 3, 3, activation = 'relu', input_shape = train_data.shape[1:])) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(50, 3, 3, activation =

我想训练一个CNN使用SVM在最后一层分类。我知道分类铰链是最好的损失函数。我有6门课要分类。 我的模型如下所示:

model = Sequential()    
model.add(Conv2D(50, 3, 3, activation = 'relu', input_shape = train_data.shape[1:]))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(50, 3, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(50, 3, 3, activation = 'relu'))

model.add(Flatten())
model.add(Dense(400, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(128, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation = 'sigmoid'))
网络、数据处理或丢失功能是否存在问题

模型在点之后不学习任何内容,如图所示
我该怎么办?

您的模型只有一个输出神经元,这不可能适用于6个类。模型的输出应该有6个神经元。此外,模型的输出不应具有激活功能,以便生成分类铰链可以使用的logit


请注意,分类铰链是最近(2-3周前)添加的,因此它非常新,可能没有多少人测试过它。

使用
铰链
丢失和
线性
激活最后一层

model.add(Dense(nb_classes), W_regularizer=l2(0.01))
model.add(Activation('linear'))

model.compile(loss='hinge',
              optimizer='adadelta',
              metrics=['accuracy'])

欲了解更多信息,请访问

我删除了激活函数,将目标变量更改为分类,并对网络进行了培训,但我认为培训不正确。这个模型几乎没有任何改进。在150个时期内,准确率保持在18-20%。编译功能有什么问题吗?