使用卷积神经网络添加支持向量机

3

我希望用卷积神经网络(CNN)提取特征,然后用支持向量机(SVM)进行分类。因此,我建立了一个模型并使用“hinge”损失。

这是我的模型:

model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(Dropout(0.5))
model.add(Conv1D(filters,kernel_size,padding='valid',activation='relu',strides=1))
model.add(MaxPooling1D(pool_size=pool_size))
model.add(Dense(38, W_regularizer=l2(0.01)))
model.add(Activation('linear'))
model.compile(loss='hinge',optimizer='adadelta')

然而,我遇到了这个错误。

错误:

ValueError: 检查目标时出错:预期 activation_1 的形状为(None,38),但得到的数组形状为(129083,1)

希望有人能够帮助我解决这个问题。


1
你应该使用categorical_hinge,因为你有38个类别。你应该将目标(y)转化为one_hot_encoding(你可以使用scikit learn中的OneHotEncoder)。 - Marcin Możejko
从“model.add(Dense(38,W_regularizer = l2(0.01)))”我们可以推断出您有38类。因此,@MarcinMożejko是正确的。使用categorical_hinge。 - Hitesh
1个回答

0

使用 hinge_loss 作为损失函数

model.compile(loss='hinge_loss',optimizer='adadelta')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接