0

我已经用 RNN 训练了一个机器翻译模型(从英语到越南语),具有 25000 个示例对的 LSTM(用于训练集 -> 20000,测试集 -> 5000)我使用的模型如下所示,但 val_acc 总是达到〜0, 37 并且不会增加,尽管我使用了其他一些模型并且 epoch 大约是 100:

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(Bidirectional(LSTM(n_units, return_sequences=True)))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(512, activation='relu')))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(tar_vocab, activation='softmax')))
return model

我希望模型可以防止过度拟合,希望你们帮我解决问题

4

1 回答 1

2

20k 个训练实例对于神经机器翻译来说是极小的训练数据。如果你想在这个数据上训练任何东西,你应该使用尽可能少的参数和强正则化(dropout、L2、SwitchOut 之类的东西)。

如果我正确理解了您的代码,那么您正在做的是Sutkever 在 al的 vanilla 编码器-解码器架构。虽然它是一个简单的模型,但它的建模能力相对较弱。在这么小的数据集上,注意力模型可能更合适。

于 2019-05-29T09:45:15.500 回答