Классификация текста - DNN - PullRequest
0 голосов
/ 01 апреля 2020

Я выполняю классификацию текста, используя глубокую нейронную сеть. Моя проблема в том, что я получаю высокую точность 98 для данных поезда, тогда как моя точность проверки составляет 49.

Я пробовал следующее:

  1. Перемешал данные
  2. Мои данные о поездах и проверке 80:20 split
  3. Я использую 100 измерений Vector Glov

Есть предложения?

def get_Model():
    model = tf.keras.Sequential([
    tf.keras.layers.Embedding(vocab_size+1, embedding_dim, input_length=max_length, weights= . [embeddings_matrix], trainable=False),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Conv1D(64, 5, activation='relu'),
    tf.keras.layers.MaxPooling1D(pool_size=4),
    tf.keras.layers.LSTM(64),
    tf.keras.layers.Dense(5, activation='softmax')
    ])
    model.compile(loss='sparse_categorical_crossentropy',optimizer="adam",metrics=['acc'])
    model.summary()
    return model

1 Ответ

0 голосов
/ 01 апреля 2020

Ваша модель явно переоснащена. Стандартные приемы предотвращения переоснащения:

  • Добавление отсева,
  • Регуляция L2,
  • Попытка модели меньшего размера.

Это довольно необычно использовать свертки и LSTM одновременно (хотя это совершенно нормально). Возможно, сохранение только одного из них - лучший способ уменьшить сеть.

Я предполагаю, что вы работаете с довольно небольшим набором данных. Наличие большего набора данных также помогает предотвратить переоснащение, но обычно это не самый полезный совет.

...