如何在Keras中建立共享层?

8

我希望用以下形式的共享层来训练模型:

x --> F(x)
          ==> G(F(x),F(y))
y --> F(y) 
xy 是两个独立的输入层,F 是一个共享层。在连接了F(x)F(y)后,G是最后一层。
在Keras中是否可能对此进行建模?如何操作?
1个回答

11

你可以使用Keras函数式API来实现这个目的:

from keras.layers import Input, concatenate

x = Input(shape=...)
y = Input(shape=...)

shared_layer = MySharedLayer(...)
out_x = shared_layer(x)
out_y = shared_layer(y)

concat = concatenate([out_x, out_y])

# pass concat to other layers ...
请注意xy可以是任何层的输出张量,不一定是输入层。

1
out_x和out_y是否使用相同的权重? - Amirhessam
1
@Amirhessam 它们是同一层的输出,具有相同的权重,只是给定了不同的输入(即 xy)。 - today
1
这里需要使用连接操作吗?out_x不能被传递到另一层吗? - vampiretap
1
@vampiretap 当然可以将 out_x 输入到不同的层中。这里使用连接层是因为 OP 在他们的问题中明确提到了这一点:“在连接 F(x) 和 F(y) 后,G 是最后一层”。 - today
学习过程中会发生什么?这个过程有详细记录吗? - Yan King Yin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接