Если вы создаете классификатор, вам нужно squared_hinge
и regularizer
, чтобы получить полную функцию потерь SVM, как можно увидеть здесь. Так что вам также нужно будет разбить последний слой надобавьте параметр регуляризации перед выполнением активации, я добавил код здесь.
Эти изменения должны дать вам вывод
from keras.regularizers import l2
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(64, activation='relu'))
model.add(Dense(1), W_regularizer=l2(0.01))
model.add(activation('softmax'))
model.compile(loss='squared_hinge',
optimizer='adadelta',
metrics=['accuracy'])
model.fit(X, Y_labels)
Также hinge
реализован в кератах для двоичной классификации, так что есливы работаете над моделью двоичной классификации, используйте приведенный ниже код.
from keras.regularizers import l2
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(64, activation='relu'))
model.add(Dense(1), W_regularizer=l2(0.01))
model.add(activation('linear'))
model.compile(loss='hinge',
optimizer='adadelta',
metrics=['accuracy'])
model.fit(X, Y_labels)
Если вы не можете понять статью или у вас возникли проблемы с кодом, не стесняйтесь комментировать.У меня была такая же проблема некоторое время назад, и эта ветка GitHub помогла мне понять, может быть, пройти через это, некоторые идеи здесь прямо отсюда https://github.com/keras-team/keras/issues/2588