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

我有2个问题:

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

model.compile(optimizer ='adam',loss ='categorical_crossentropy',metrics = ['acc'])history = model.fit([encoder_input_data,oh_decoder_data],oh_target_data,batch_size = batch_size,epochs = 100,validation_split = 0.2)

我觉得由于输入编码的差异,这种损失(和准确性)功能可能会被误导 . 我该如何解决这个问题?

  • 输出只生成一个单词,后跟EOS . 虽然不完整,但单字输出是一个很好的翻译 . 这是因为培训问题吗?