我试图保存并加载合并图层的模型的权重。由于我的模型代码有点长,让我通过使用一个简单的示例和伪样式代码来缩短它。
首先,我的模型看起来像这样:
$
所以,在训练结束后,我只保存了final_mode的重量。
def some_model():
model1 = Sequential()
model1.add(...)
model2 = Sequential()
model2.add(..)
final_model = Sequential()
final_model.add(Merge[model1, model2], mode='concat')
return final_model
当我加载重量进行进一步训练或测试时,它没有问题。
final_model.save_weights('w_final_model.h5')
到目前为止一切顺利。然而,当我试图调查final_model层的形状时,我的好奇心就来了。
显然,final_model只有自己的图层。换句话说,它并没有看起来携带model1和model2的所有权重向量。但是,它仍然有效。我想知道这是怎么可能的。或者,是否仅在为model_和model2权重再次初始化时加载final_model图层的权重?然而,网络的输出太好了,不能假设model1和model2权重是新初始化的。实际上,我是否需要分别保存每个模型的重量?