Почему уровень внимания работает только для данных о поездах, но не для тестовых данных в модели двунаправленного машинного перевода LSTM - PullRequest
0 голосов
/ 28 декабря 2018

Я добавил слой внимания в свою модель машинного перевода.

model.add(AttentionDecoder(tar_timesteps, tar_vocab))

Я применил модель к 144K (135K поезд + 9K тест), португальскому и китайскому корпусу 30 эпох.По сравнению с моделью без внимания, другие условия остаются теми же, данные поезда получили увеличение BLEU-1/2/3/4 на 20% по всем направлениям, но почти не изменили данные испытаний.Я хочу выяснить, есть ли в моей реализации что-то не так.

def define_model(src_vocab, tar_vocab, src_timesteps, tar_timesteps, n_units):
    model = Sequential()
    model.add(Embedding(src_vocab, n_units, input_length=src_timesteps, mask_zero=True))
    model.add(Bidirectional(LSTM(n_units)))
    model.add(Dropout(0.2))
    model.add(RepeatVector(tar_timesteps))
    model.add(AttentionDecoder(tar_timesteps, tar_vocab))
    model.add(Bidirectional(LSTM(n_units, return_sequences=True)))
    model.add(Dropout(0.2))
    model.add(TimeDistributed(Dense(tar_vocab, activation='softmax')))
return model
...