【keras】函数式(Functional)模型学习以LSTM为例构建多输入和多输出模型及完整实例(二)

多输入和多输出模型:使用函数式模型的一个典型场景是搭建多输入、多输出的模型。

考虑这样一个模型。我们希望预测Twitter上一条新闻会被转发和点赞多少次。模型的主要输入是新闻本身,也就是一个词语的序列。但我们还可以拥有额外的输入,如新闻发布的日期等。这个模型的损失函数将由两部分组成,辅助的损失函数评估仅仅基于新闻本身做出预测的情况,主损失函数评估基于新闻和额外信息的预测的情况,即使来自主损失函数的梯度发生弥散,来自辅助损失函数的信息也能够训练Embeddding和LSTM层。在模型中早点使用主要的损失函数是对于深度网络的一个良好的正则方法。总而言之,该模型框图如下:

这里写图片描述

用函数式模型来实现这个框图

主要的输入接收新闻本身,即一个整数的序列(每个整数编码了一个词)。这些整数位于1到10,000之间(即我们的字典有10,000个词)。这个序列有100个单词。

然后,我们插入一个额外的损失,使得即使在主损失很高的情况下,LSTM和Embedding层也可以平滑的训练。

再然后,我们将LSTM与额外的输入数据串联起来组成输入,送入模型中:

构建整个2输入,2输出的模型:

模型定义完毕,下一步编译模型。我们给额外的损失赋0.2的权重武汉出国中介我们可以通过关键字参数loss_weights或loss来为不同的输出设置不同的损失函数或权值。这两个参数均可为Python的列表或字典。这里我们给loss传递单个损失函数,这个损失函数会被应用于所有输出上。

编译完成后,我们通过传递训练数据和目标值训练该模型:

当然,因为之前已经定了了名称,所以可以更加全面的进行编译和训练模型:

完整实例:

猜你喜欢

转载自www.cnblogs.com/zhaolide/p/10026142.html