Замена функции softmax на SVM в выходном слое сети LSTM - PullRequest
0 голосов
/ 15 июня 2019

Я внедряю сеть LSTM для классификации новостей по 4 категориям.Я хочу заменить функцию softmax в выходном слое на классификатор SVM.

Я попытался изменить функцию потерь на «шарнир», а также изменил регуляризацию, но это не сработало.Я только отредактировал выходной слой, так как softmax нужно заменить на SVM.

Здесь модель определяется в python через keras + tenorflow-

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 ванили и т. д.

...