用Sequential只能定义一些简单的模型,如果你想要定义多输入、多输出以及共享网络层,就需要使用Model模型了。

在model模型的声明中,需要使用\(y = layer(...)(x)\)这样的格式来构建没一个层次,并在构造函数中声明你的模型的输入和输出是什么。

来考虑下面的模型。我们试图预测 Twitter 上的一条新闻标题有多少转发和点赞数。模型的主要输入将是新闻标题本身,即一系列词语,但是为了增添趣味,我们的模型还添加了其他的辅助输入来接收额外的数据,例如新闻标题的发布的时间等。 该模型也将通过两个损失函数进行监督学习。较早地在模型中使用主损失函数,是深度学习模型的一个良好正则方法。

要在不同的输入上共享同一个层,只需实例化该层一次,然后根据需要传入你想要的输入即可:

在Model模型中,多输入、多输出、共享的实现都是简单的,只要按照一定的逻辑创建好有向图即可!

关于本文内容,部分借鉴自keras文档。