我已经使用rnn训练了机器翻译模型(从英语到越南语(,lnn,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
我希望模型防止过度拟合,希望你们帮助我解决问题
20K培训实例是神经机器翻译的极少数训练数据。如果您想在此数据上训练任何内容,则应使用尽可能少的参数和强烈的正则化(辍学,L2,SwitchOut之类的东西(。
如果我正确理解您的代码,则您正在Al的Sutkever进行Vanilla编码器架构。尽管它是一个简单的模型,但它具有相对较弱的建模功能。在如此小的数据集上,注意模型可能更合适。