将 SVM 添加到最后一层

Sae*_*eed 6 python svm neural-network keras

我做了什么:

我使用 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)
Run Code Online (Sandbox Code Playgroud)

我想要的是:

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

Upa*_*tal 5

这应该适用于将 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)
Run Code Online (Sandbox Code Playgroud)

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