<p>问题是你把numpy数组和keras张量混合在一起。这不能走。在</p>
<p>有两种方法。在</p>
<ul>
<li>从每个自动编码器预测numpy数组,将数组合并,发送到第三个模型</li>
<li>连接所有型号,可能使自动编码器无法训练,适合每个自动编码器的一个输入。在</li>
</ul>
<p>就我个人而言,我会选择第一个。(假设自动编码器已经过训练,不需要更改)。在</p>
<h2>第一种方法</h2>
<pre><code>numpyOutputFromAuto1 = autoencoder1.predict(numpyInputs1)
numpyOutputFromAuto2 = autoencoder2.predict(numpyInputs2)
inputDataForThird = np.concatenate([numpyOutputFromAuto1,numpyOutputFromAuto2],axis=-1)
inputTensorForMlp = Input(inputsForThird.shape[1:])
h = Dense(num_hidden, activation='relu', name='hidden')(inputTensorForMlp)
y = Dense(1, activation='sigmoid', name='prediction')(h)
mymlp = Model(inputs=inputTensorForMlp, outputs=y)
....
mymlp.fit(inputDataForThird ,someY)
</code></pre>
<h2>第二种方法</h2>
<p>这有点复杂,一开始我觉得没什么理由这么做。(当然,在某些情况下,这是个不错的选择)</p>
<p>现在我们完全忘记了numpy和keras张量。在</p>
<p>自行创建mlp(如果以后不使用自动编码器,则很好):</p>
^{pr2}$
<p>我们可能想要自动编码器的瓶颈特性,对吧?如果您碰巧创建了正确的自动编码器:编码器模型,解码器模型,连接两者,那么只使用编码器模型就更容易了。其他:</p>
<pre><code>encodedOutput1 = autoencoder1.layers[bottleneckLayer].outputs #or encoder1.outputs
encodedOutput2 = autoencoder1.layers[bottleneckLayer].outputs #or encoder2.outputs
</code></pre>
<p>创建关联模型。我们必须使用kera作为连接层:</p>
^{4}$