在LSTM网络的输出层中用SVM替换softmax函数

时间:2019-06-15 04:59:14

标签: keras svm lstm recurrent-neural-network softmax

我正在实施一个LSTM网络,将新闻分为4类。 我想用SVM分类器替换输出层中的softmax函数。

我尝试将损失函数更改为'hinge',并且还更改了正则化,但这没有用。我只编辑了输出层,因为softmax需要替换为SVM。

这是在python中通过keras + tensorflow-

定义模型的地方
model = Sequential()
model.add(Embedding(n_most_common_words, emb_dim, input_length = X.shape[1]))
model.add(SpatialDropout1D(0.7))
model.add(LSTM(64, dropout = 0.7, recurrent_dropout = 0.7))
model.add(Dense(4, activation = 'softmax'))
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['acc'])
print(model.summary())
history = model.fit(X_train, y_train, epochs = epochs, batch_size = batch_size, validation_split = 0.2, callbacks = [EarlyStopping(monitor = 'val_loss', patience = 7, min_delta = 0.0001)])
accr = model.evaluate(X_test, y_test) 

我希望该模型的准确性会提高,正如其他在线研究论文所解释的那样,他们在CNN,香草RNN等网络上使用此替代方法。

0 个答案:

没有答案