共享层,不同模型

时间:2018-06-25 22:33:35

标签: python tensorflow keras

我有两个Keras模型(功能性API),它们共享一些层。我想知道是否训练第一个模型,第二个模型会自动更新其共享图层的权重,还是应该手动加载权重?

我从documentation知道可以在同一模型中共享图层,但是对于这种特殊情况我没有任何线索。

我还想知道具有共享层的Keras模型是否共享相同的计算图或它们是否具有独立的图。

1 个答案:

答案 0 :(得分:2)

训练第一个模型时,共享层中的权重将在其他所有模型中自动更新。考虑以下示例:

x = Input(shape=(input_dim,))
encoder = Dense(output_dim)(x)
decoder = Dense(input_dim)(encoder)

autoencoder = Model(input=x, output=decoder)
supervised = Model(input=x, output=encoder)

autoencoder.compile(...)
supervised.compile(...)

在这里,当您训练supervised时,encodersupervised的图层autoencoder的权重都会更新。换句话说,encoder中的权重完全属于该层,并且不依赖于使用该层的模型。

对于第二个问题,答案是Keras仅使用一个计算图(即使模型不共享层也是如此)。