Я работаю над проблемой классификации задачи semeval 2017 4A набор данных можно найти здесь , и я использую для этого глубокую сеть LSTM. В предварительной обработке я сделал нижний регистр-> токенизацию-> лемматизацию-> удаление стоп-слов-> удаление знаков препинания. Для встраивания слов я использовал модель WORD2VE C. В моем обучающем наборе 18000 образцов и 2000 образцов в тестировании.
Код для моей модели:
model = Sequential()
model.add(Embedding(max_words, 30, input_length=max_len))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.3))
model.add(Bidirectional(LSTM(32, use_bias=True, return_sequences=True)))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Bidirectional(LSTM(32, use_bias=True, return_sequences=True), input_shape=(128, 1,64)))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(SeqSelfAttention(attention_activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
model.summary()
Значение max_words равно 2000 и max_len равно 300
Но даже после этого моя точность тестирования не превышает 50%. Я не могу понять в чем проблема. PS - Я тоже использую технику проверки. Функция потерь - « двоичная кроссентропия », а оптимизатор - « Adam ».