Keras 中的多任务学习
数据挖掘
机器学习
神经网络
深度学习
喀拉斯
多任务学习
2021-10-11 01:50:22
1个回答
通过使用功能 API,您可以轻松地在网络的不同部分之间共享权重。在您的情况下,我们有一个Input
这是我们的输入,然后我们将有一个Dense
名为 shared 的层。然后我们将有三个不同的Dense
层,称为 sub1、sub2 和 sub3,然后是三个输出层,称为 out1、out2 和 out3。
x = Input(shape=(n, ))
shared = Dense(32)(x)
sub1 = Dense(16)(shared)
sub2 = Dense(16)(shared)
sub3 = Dense(16)(shared)
out1 = Dense(1)(sub1)
out2 = Dense(1)(sub2)
out3 = Dense(1)(sub3)
我们现在可以像这样定义我们的模型:
model = Model(inputs=x, outputs=[out1, out2, out3])
它现在需要一个包含三个元素的元组/列表,每个输出一个。
您可以通过这些概念走得更远。假设我们想学习个人层的各个权重,但仍然希望对输出层的线性组合具有相同的权重,我们可以通过这样做来实现:
out = Dense(1)
out1 = out(sub1)
out2 = out(sub2)
out3 = out(sub3)
编辑:连接基本上与您想要做的相反,它将网络不同部分的(中间)输出粘贴到新层中。你实际上想分成多个不同的部分。
其它你可能感兴趣的问题