python - 在 Keras (tensorflow) 中合并多个模型

标签 python tensorflow keras

在这里做了很多努力之后是我的问题,

我有两个模型,两个模型都可以检测 2-2 个类。众所周知,我们可以使用 FunctionalAPI 合并两个模型。我试过了,但没有得到想要的结果。

我的目标:我想合并这些模型,更新后的模型应该有(1 个输入,4 个输出)。

inputs = tf.keras.Input(shape=(50,50,1))
y_1 = f1_Model(inputs)
y_2 = f2(inputs)
outputs = tf.concat([y_1, y_2], axis=0)
new_model = keras.Model(inputs, outputs)
new_model.summary()
Model: "functional_5"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_2 (InputLayer)            [(None, 50, 50, 1)]  0                                            
__________________________________________________________________________________________________
sequential (Sequential)         (None, 2)            203874      input_2[0][0]                    
__________________________________________________________________________________________________
sequential_1 (Sequential)       (None, 2)            203874      input_2[0][0]                    
__________________________________________________________________________________________________
tf_op_layer_concat (TensorFlowO [(None, 2)]          0           sequential[1][0]                 
                                                                 sequential_1[1][0]               
==================================================================================================
Total params: 407,748
Trainable params: 407,748
Non-trainable params: 0
__________________________________________________________________________________________________

当我在其中传递图像时,它给出了错误的结果。我不知道我哪里出错了。

prediction = new_model.predict([prepare(img)]) 
prediction

# index_pred=np.argmax(prediction) (this should return from 0 to 3, but not happening)
 

array([[1., 0.],
       [1., 0.]], dtype=float32)

最佳答案

据我了解,您想对 4 个类进行分类,为此,您有 2 个模型,每个模型对 2 个类进行分类。
截至目前,您的 f1 和 f2 模型输出 softmax 激活 的结果,因此首先,您必须将其删除并仅输出 logits 或仅输出 relu 激活。之后,如 @dmg2 所述,您必须在 tf.concat 中设置 axis=1 现在,最后您必须通过一个新的 softmax 激活。之后,我希望你能训练你的模型。

关于python - 在 Keras (tensorflow) 中合并多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68330534/

相关文章:

python - Plotly:如何仅将垂直和水平线(十字准线)显示为 hoverinfo?

python - 如何在 Python 中确定打开文件的大小?

python-从 json 对象中选择唯一键值

python - 使用不平衡学习进行过采样后训练的形状输出

tensorflow - 序列数据上的 LSTM,预测离散列

tensorflow - 多输入深度学习中的平均层

python - 在 TensorFlow 图中初始化变量

python - 将 tensorflow 数据集输入模型

python - 如何在 CNN 中为 AI 考勤添加新类别

python - 如何在 LSTM 模型上预测多个样本?