我已经用RNN,LSTM训练了25000个示例对(用于训练集-> 20000,测试集-> 5000)的机器翻译模型(从英语到越南语),我使用的模型如下所示,但是val_acc总是达到〜0,37并没有增加,尽管我使用了其他一些模型,但时期大约是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
我希望模型能够防止过拟合,希望你们能帮助我解决问题
答案 0 :(得分:0)
20k训练实例是用于神经机器翻译的极小的训练数据。如果要在此数据上训练任何东西,则应使用尽可能少的参数,并使用强正则化(dropout,L2,诸如SwitchOut之类的东西)。
如果我正确理解您的代码,则说明您正在使用Sutkever at al进行香草编码器-解码器体系结构。尽管它是一个简单的模型,但其建模能力相对较弱。在如此小的数据集上,注意力模型可能更合适。