Fork me on GitHub

keras模型拼接

在模型测试过程中,如何让两个模型中间层的输入输出拼在一起呢?
此处输入图片的描述

首先,加载训练好的模型后,我们可以用下面的方式获取模型的中间层输出:

1
2
model = load_model("model1.h5")
First_model = Model(inputs=model.input, outputs=model.layers[7].output)#表示获取模型第7层的输出

然后如何把第7层的输出,作为下一个模型中间层的输入呢?用下面的方法是不可以的:

1
2
model2 = load_model("model2.h5")
second_model = Model(inputs=model2.layers[8].input, outputs=model2.layers[-1].output)

这样会得到类似下面的错误:

1
RuntimeError: Graph disconnected: cannot obtain value for tensor Tensor("conv2d_1_input:0", shape=(?, 144, 144, 3), dtype=float32) at layer "conv2d_1_input". The following previous layers were accessed without issue: []

解决办法是声明一个新的Input Layer,用下面的方式拼接:

1
2
3
4
5
second_input = Input(model.layers[8].input_shape[1:])
second_model = second_input
for layer in model.layers[8:]:
second_model = layer(second_model)
second_model = Model(inputs=second_input, outputs=second_model)

由此,便完成了模型的拼接!

-------------本文结束感谢阅读-------------