Keras多输入多输出模型的解读

Keras多输入多输出模型的解读

    • Inception 模型
    • 卷积层上的残差连接

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

其中,aux_output(Dense)层通过辅助损失调整网络参数,这一结构被应用于Inception系列中(Inception系列整体架构是单输入多输出),能够作为网络正则化的惩罚项存在,也能起到防止梯度消失的作用。main_output(Dense)层作为最后输出层。

源码实现:见链接: Keras中文文档.

Inception 模型

Inception详细描述见论文:https://arxiv.org/abs/1512.03385

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, (3, 3), padding='same', activation='relu')(tower_1)
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)

卷积层上的残差连接

resnet论文详见:https://arxiv.org/abs/1512.03385

from keras.layers import Conv2D, Input

# 输入张量为 3 通道 256x256 图像
x = Input(shape=(256, 256, 3))
# 3 输出通道(与输入通道相同)的 3x3 卷积核
y = Conv2D(3, (3, 3), padding='same')(x)

# 返回 x + y   这一层的输入相当于input和卷积层
z = keras.layers.add([x, y])

你可能感兴趣的:(AI,深度学习,人工智能,keras,深度学习,python)