如何在Keras中的LSTM的每个步骤中采用多个不同的损失函数

如何在Keras中的LSTM的每个步骤中采用多个不同的损失函数,keras,lstm,Keras,Lstm,我有一组句子和它们的分数,我想训练一个评分系统,可以预测给定句子的分数,例如: (X =Tomorrow is a good day, Y = 0.9) 我想使用LSTM来构建这样的标记系统,并且考虑句子中每个单词之间的顺序关系,因此上面所示的训练例子被变换如下: (x1=Tomorrow, y1=is) (x2=is, y2=a) (x3=a, y3=good) (x4=day, y4=0.9) 在训练此LSTM时,我希望前三个时间步骤使用softmax分类器,最后一个步骤使用MSE。显然

我有一组句子和它们的分数,我想训练一个评分系统,可以预测给定句子的分数,例如:

(X =Tomorrow is a good day, Y = 0.9)
<>我想使用LSTM来构建这样的标记系统,并且考虑句子中每个单词之间的顺序关系,因此上面所示的训练例子被变换如下:

(x1=Tomorrow, y1=is) (x2=is, y2=a) (x3=a, y3=good) (x4=day, y4=0.9)

在训练此LSTM时,我希望前三个时间步骤使用softmax分类器,最后一个步骤使用MSE。显然,本LSTM中使用的损失函数由两个不同的损失函数组成。在这种情况下,Keras似乎没有提供直接解决我的问题的方法。此外,我不确定构建评分系统的方法是否正确。

KERA还支持多种损失函数:

   model = Model(inputs=inputs,
                 outputs=[lang_model, sent_model])

    model.compile(optimizer='sgd', 
                  loss=['categorical_crossentropy', 'mse'],
                  metrics=['accuracy'], loss_weights=[1., 1.])
根据你的解释,我认为你需要一个模型,首先,根据以前的标记预测一个标记,在它通常调用的NLP域中,然后计算一个分数,我认为这是一个情绪(它适用于其他域)

为此,您可以使用LSTM训练您的语言模型,并为您的排名任务选择LSTM的最后输出。为此,您需要定义两个损失函数:
categorical\u crossentropy
用于语言模型,而
MSE
用于排名任务


本教程将非常有用:

你好,阿米尔,非常感谢您的回复。你的回答中的“标记”是指句子的特征吗?i、 例如,最后一个时间步的softmax输入?@KevinSun我指的是您传递给LSTM的内容。通常是单词向量(手套或w2v)。再次感谢。正如我从你提到的教程中了解到的,多重损耗是建立在没有任何连接的不同输出层上的。例如,如果我们想要两个损失,这两个损失建立在两个层上,分别命名为layer1和layer2。从本教程中,第1层和第3层彼此没有连接。在我的问题中,我的损失建立在第三层和第四层的输出上,而第四层的输入是第三层的输出。在这一点上,我可以利用这些多重损失吗?不客气。你可以,但我不确定模型的收敛性。你对我问题的第一个回答是否与我在上一篇文章中问你的意思相同?