Я довольно новичок в науке о данных и нейронных сетях.У меня есть набор предложений Unicode, которые были помечены как 0 и 1 для «спам» или «не_спам».Модель, которую я использовал для данных, представляет собой приведенный ниже код (исключая предварительную обработку данных):
from keras.models import Model
from keras.layers import LSTM, Activation, Dense, Dropout, Input, Embedding
def RNN():
inputs = Input(name='inputs',shape=[max_len])
layer = Embedding(max_words,50,input_length=max_len)(inputs)
layer = LSTM(64)(layer)
layer = Dense(256,name='FC1')(layer)
layer = Activation('relu')(layer)
layer = Dropout(0.5)(layer)
layer = Dense(1,name='out_layer')(layer)
layer = Activation('sigmoid')(layer)
# sigmoid aka 0 to 1 output
model = Model(inputs=inputs,outputs=layer)
return model
model.compile(loss='binary_crossentropy',optimizer=RMSprop(),metrics=['accuracy'])
Прогнозы пока хороши.
Но теперь я изменил свой набор данных.Я добавил 6 столбцов вместо столбца «спам», чтобы моя метка данных стала целым числом между [1-7].Набор данных выглядит следующим образом (случай № 1):
sentence | category
sent 1 | 1
sent 2 | 3
sent 3 | 2
sent 4 | 7
.
.
.
Я знаю, что могу добавить фиктивные переменные и изменить его так (случай № 2):
sentence | category_1 | category_2 | category_3 | ... | category_7
sent 1 | 1 | 0 | 0 | | 0
sent 2 | 0 | 0 | 1 | | 0
sent 3 | 0 | 1 | 0 | | 0
sent 4 | 0 | 0 | 0 | | 1
.
.
.
ИтакЯ знаком с компонентом разработки функций для набора данных.То, что я на самом деле ищу, - это изменить код так, чтобы он выводил из модели, например, 1,2,3,4, .. (что подразумевает прогноз для каждой категории).
Кто-нибудь знает, как я могу изменитькод (модель Keras) с минимальным редактированием?
Буду признателен за любые другие рекомендации по повышению точности (основанные на опыте в областях НЛП и нейронных сетей).