Улучшить модель Keras для классификации текста - PullRequest
0 голосов
/ 06 апреля 2020

Я делаю модель для классификации названий веб-страниц на один из 101 класса, относящихся к еде (большинство названий относятся к рецептам). Средняя длина моих последовательностей составляет 42. Я очистил текст (плохие слова, изменил на строчные буквы и т. Д. c) и токенизировал его, используя токенизатор. Я поместил слой LSTM в мою модель, и я получил 83% точности на тестовом наборе. Я уверен, что это можно улучшить, внеся некоторые изменения в сеть. У вас есть предложения? Заранее спасибо! Это моя модель:

model = Sequential()
model.add(Embedding(MAX_NB_WORDS, EMBEDDING_DIM, input_length=x_train.shape[1]))
model.add(SpatialDropout1D(0.2))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(101, activation='softmax'))

opt = optimizers.Adam(learning_rate=0.01, beta_1=0.9, beta_2=0.999, amsgrad=False)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

1 Ответ

1 голос
/ 08 апреля 2020

Одна вещь, которую вы можете попытаться сделать, это добавить еще один слой LSTM, но, пожалуйста, обратите внимание на количество единиц: слишком большое их увеличение может легко привести к переоснащению. В противном случае постепенное снижение скорости обучения при достижении плато также может способствовать увеличению.

Если вы добавите еще один, не забудьте добавить «return_sequences=True» в первый слой LSTM.

Вы также должны иметь набор проверки, зарезервированный для метрик (кроме набора тестов).

...