Как изменить модель keras, чтобы получить результат от 0 до 7, кроме 0 и 1? - PullRequest
1 голос
/ 26 мая 2019

Я довольно новичок в науке о данных и нейронных сетях.У меня есть набор предложений 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) с минимальным редактированием?

Буду признателен за любые другие рекомендации по повышению точности (основанные на опыте в областях НЛП и нейронных сетей).

1 Ответ

1 голос
/ 26 мая 2019

Похоже, вы получаете закодированные однократным образом выходы, чтобы декодировать их обратно в целое число

decoded = np.argmax(encoded, axis=1)

посмотрите пример здесь

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...