<p>这是我的想法,让我们假设您要堆叠以下模型:</p>
<pre><code>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)
</code></pre>
<p>如果要堆叠模型,而不是连接其输出:</p>
<pre><code>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)
</code></pre>
<p><strong>模型_输出</strong>给出:(此处通过3)</p>
<pre><code>[<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')>]
</code></pre>
<p>产生:
<a href="https://i.stack.imgur.com/o9kyA.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/o9kyA.png" alt="enter image description here"/></a></p>
<p>要保存堆叠模型,请执行以下操作:</p>
<pre><code>from tf.keras.models import save_model
save_model(stacked_model , 'model.h5')
</code></pre>
<p>我不知道如何使用它们各自的输出,但这就是如何堆叠它们</p>
<p><strong>编辑</strong>:您可以通过定义单独的损耗等来使用它们的输出。或者,由于它们是堆叠的,并且输入是共享的,因此您可以获得每个模型的输出,以使用其权重创建新模式。我不知道是否可以从堆叠模型中剪切它们,所以我说获取每个输出</p>