如何将具有相同架构但权重不同的两个keras模型加载到一张图中?

时间:2018-12-01 13:28:19

标签: tensorflow keras

例如,我训练了两个VGG16模型,权重不同,直接加载两个模型会导致第二个模型的预测与其原始预测不同,如下所示:

model1=get_model('model1.h5')
model2=get_model('model2.h5')
p1=model1.predict(x)
p2=model2.predict(x)

如果我在另一个图中加载第二个模型,则结果是正常的,就像这样:

model1=get_model('model1.h5')
p1=model1.predict(x)
graph1 = Graph()
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
with graph1.as_default():
    session1 = tf.Session(config=config)
    with session1.as_default():
    model2=get_model('model2.h5')
    p2=model2.predict(x)

但是实际上我想混合两个模型的结果,像这样:

x=concatenate([model1.output,model2.output],axis=1)
model=Model(input=inp,outputs=x)

为此,两个模型应该在同一张图中。

我也尝试过重命名图层名称,但是没有用

for layer in model.layers:
    layer.name = layer.name + str("_2")

那么,什么是正确的方法呢?

1 个答案:

答案 0 :(得分:1)

我希望您已经用{ "something": "this\r\nis\r\na\r\nsample\r\nfile\r\n" } 保存了模型,对吧?
我看不到model.save(...)中的内容,但这可能不太正确,因为这两个模型都应该像以前一样工作。

get_model