keras搬砖系列-keras多输入多输出模型
使用函数式模型的一个典型的场景就是搭建多输入,多输出模型。
考虑这样一个模型,希望预测一条新闻会被转发和点赞多少次。模型的主要输入是新闻的本身,也就是一个词语的序列,但是我们可能还需要额外的输入,新闻发布的日期等,所以这个模型的损失函数将会由两个部分组成,辅助的损失函数基于新闻本身做出的预测的情况,主损失函数评估基于新闻和额外信息的预测情况,即使来自主损失函数的梯度弥散,来自辅助损失函数的信息也能够训练。
以inception module为例:
from keras.layers import Conv2D,MaxPooling2D,Input
input_img = Input(shape=(256,256,3))
tower_1 = Conv2D(64,(1,1),padding='same',activation='relu')(input_img)
tower_1 = Conv2D(64,(1,1),padding='same',activation='relu')(input_img)
tower_2 = Conv2D(64,(1,1),padding='same',activation='relu')(input_img)
tower_2 = Conv2D(64,(5,5),padding='same',activation='relu')(tower_2)
tower_3 = MaxPooling2D((3,3),strides=(1,1),padding='same')(input_img)
tower_3 = Conv2D(64,(1,1),padding='same',activation='relu')(tower_3)
output = keras.layers.concatenate([tower_1,tower_2,tower_3],axis=1)