我有一组句子及其分数,我想训练一个标记系统,该系统可以预测给定句子的分数,例如这样的例子:
(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似乎没有提供直接解决我的问题的方法。另外,我不确定我建立标记系统的方法是否正确。
答案 0 :(得分:1)
Keras还支持多种损失功能:
model = Model(inputs=inputs,
outputs=[lang_model, sent_model])
model.compile(optimizer='sgd',
loss=['categorical_crossentropy', 'mse'],
metrics=['accuracy'], loss_weights=[1., 1.])
根据您的解释,我认为您需要一个模型,首先在NLP域中基于先前的令牌预测令牌,在NLP域中通常将其称为Language model,然后计算得分(我认为这是一种情感)(它适用于其他域。
为此,您可以使用LSTM训练语言模型,并为排名任务选择LSTM的最后输出。为此,您需要定义两个损失函数:categorical_crossentropy
用于语言模型,MSE
用于排名任务。
本教程将对您有所帮助:https://www.pyimagesearch.com/2018/06/04/keras-multiple-outputs-and-multiple-losses/