Keras(Tensorflow)合并双分类模型得到1输入4输出时结果异常问题
问题出在张量拼接的维度选择错误。
你当前使用axis=0拼接两个模型的输出,是在批量维度执行拼接操作:每个子模型的输出形状为(批量大小, 2),按维度0拼接后得到的输出形状为(2*批量大小, 2)。当你传入单张图片预测时,批量大小为1,最终得到的就是你看到的形状为(2, 2)的数组,此时np.argmax的取值范围自然只能是0到1,无法达到你预期的0到3。
你需要将拼接维度调整为axis=1,在特征维度合并两个模型的输出,这样每个样本对应的两个2维输出会被拼接为4维,正好符合你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=1) new_model = keras.Model(inputs, outputs) new_model.summary()
修改后模型的输出形状为(None, 4),单张图片预测时输出为(1, 4)的数组,此时调用np.argmax(prediction)即可得到0到3范围内的结果。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

