Seq2Seq NMT使用什么损失函数?

时间:2018-10-09 22:50:15

标签: keras translation seq2seq

我正在使用https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html中提出的方法编写LSTM Seq2Seq NMT(英语为孟加拉语)。 一些主要区别是: 1.我的模型基于单词而不是基于字符 2.对于英语单词(编码器部分的输入),我使用了手套预训练的嵌入 3.对于孟加拉语单词,我使用了一种热编码方式

我有2个问题:

  1. 我已经使用“ categorical_cross_entropy”作为损失函数。但是,我不确定这是否是正确的方法,因为我有两种不同类型的输入-编码器输入的整数序列和解码器输入的单热编码seq(以及密集层softmax输出)。

    model.compile(optimizer ='adam',loss ='categorical_crossentropy',metrics = ['acc']) 历史= model.fit([encoder_input_data,oh_decoder_data],oh_target_data,           batch_size =批量大小,           epochs = 100,           validation_split = 0.2)

我觉得此损失(和准确性)功能可能由于输入编码中的差异而被误导了。我该如何解决?

  1. 输出仅生成一个单词,后跟EOS。尽管不完整,但单个单词的输出还是不错的翻译。这是因为培训问题吗?

0 个答案:

没有答案