Добавить SVM к последнему слою - PullRequest
0 голосов
/ 27 октября 2018

Что я сделал:

Я реализую следующую модель с использованием 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 к последнему слою в моей модели, но я не знаю как?Есть идеи?

1 Ответ

0 голосов
/ 27 октября 2018

Это должно работать для добавления 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

...