这是我的想法,假设您有这些模型要堆叠:
model_1 = tf.keras.models.Model(inputs = model_1.input, outputs = model_1_out)
model_2 = tf.keras.models.Model(inputs = model_2.input, outputs = model_2_out)
model_3 = tf.keras.models.Model(inputs = model_3.input, outputs = model_3_out)
如果你想堆叠模型,而不是连接它们的输出:
models = [model_3 , model_2 , model_1]
stacked_model_input = tf.keras.Input(shape=(x, x, x))
model_outputs = [model(stacked_model_input) for model in models]
stacked_model = tf.keras.models.Model(inputs=stacked_model_input, outputs=model_outputs)
model_outputs 给出:(此处通过 3。)
[<KerasTensor: shape=(None, 3) dtype=float32 (created by layer 'model_2')>,
<KerasTensor: shape=(None, 3) dtype=float32 (created by layer 'model_1')>,
<KerasTensor: shape=(None, 3) dtype=float32 (created by layer 'model')>]
产生:
用于保存堆叠模型:
from tf.keras.models import save_model
save_model(stacked_model , 'model.h5')
我不确定如何使用它们的单独输出,但是,这就是你可以堆叠它们的方式。
编辑:您可以通过定义单独的损失等来使用它们的输出。或者由于它们是堆叠的并且输入是共享的,您可以获得每个模型的输出以创建具有其权重的新模式。我不知道你能不能把它们从堆叠模型中剪下来,所以这就是我说得到每个输出的原因。