python - 将 SVM 添加到最后一层

标签 python neural-network keras svm

我做了什么:

我使用 Keras 实现了以下模型:

train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=np.random.seed(7), shuffle=True)

train_X = np.reshape(train_X, (train_X.shape[0], 1, train_X.shape[1]))
test_X = np.reshape(test_X, (test_X.shape[0], 1, test_X.shape[1]))

inp = Input((train_X.shape[1], train_X.shape[2]))
lstm = LSTM(1, return_sequences=False)(inp)
output = Dense(train_Y.shape[1], activation='softmax')(lstm)

model = Model(inputs=inp, outputs=output)
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
model.fit(train_X, train_Y, validation_split=.20, epochs=2, batch_size=50)

我想要的:

我想将 SVM 添加到我模型的最后一层,但我不知道该怎么做?有什么想法吗?

最佳答案

这应该适用于添加 svm 作为最后一层。

inp = Input((train_X.shape[1], train_X.shape[2]))
lstm = LSTM(1, return_sequences=False)(inp)
output = Dense(train_Y.shape[1], activation='softmax', W_regularizer=l2(0.01)))(lstm)

model = Model(inputs=inp, outputs=output)
model.compile(loss='hinge', optimizer='adam', metrics=['accuracy'])
model.fit(train_X, train_Y, validation_split=.20, epochs=2, batch_size=50)

这里我使用hinge 作为考虑二元分类目标的损失。但如果不止于此,那么你可以考虑使用categorical_hinge

关于python - 将 SVM 添加到最后一层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53019301/

相关文章:

python - 在 Python 2.5 中,我如何杀死一个子进程?

python - Mac OS X 上的 libusb - "ValueError: No backend available"

python - 使用自定义搜索以编程方式在 Python 中搜索 google

machine-learning - HyperNEAT - 底物激活函数和 CPPN 激活函数之间的差异

machine-learning - 猜谜游戏的神经网络

python - 在目标检测中使用步长为 1 的最大池化层的目的是什么

tensorflow - 如何在图层中设置自定义权重?

python - 如何在不显式调出每个属性的情况下将 GAE 中一种类型的所有实体复制到另一种类型

machine-learning - Keras 拟合和评估函数中的 y 参数

tensorflow - 何时使用 @tf.function 装饰器,何时不使用?我知道 tf.function 构建图形。但是如何知道何时构建图呢?