【问题标题】:Add SVM with Convunational Neural Network使用卷积神经网络添加 SVM
【发布时间】:2018-01-25 09:53:10
【问题描述】:

我想用 CNN 提取特征,然后用 SVM 进行分类。因此,我建立一个模型并使用“铰链”损失。

这是我的模型:

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) 的数组

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

【问题讨论】:

  • 你不应该使用categorical_hinge,因为你有 38 个班级吗?你不应该把你的目标(y)转换成一个one_hot_encoding(你可以从scikit learn使用OneHotEncoder)吗?
  • 来自model.add(Dense(38, W_regularizer=l2(0.01))),我们可以假设您有 38 个课程。所以,@MarcinMożejko 是正确的。使用分类铰链

标签: neural-network keras svm activation loss


【解决方案1】:

使用hinge_loss作为损失函数

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

【讨论】:

    猜你喜欢
    • 2021-03-30
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2017-10-20
    • 2023-03-14
    • 2020-11-01
    相关资源
    最近更新 更多