Python 克拉斯';model.predict()使用softmax激活层以二进制形式给出输出

Python 克拉斯';model.predict()使用softmax激活层以二进制形式给出输出,python,tensorflow,keras,Python,Tensorflow,Keras,我从Keras培训了40门课程的InceptionResNetV2,并使用model.evaluate()对其进行了测试;一切都很好。但是,当我尝试对单个图像使用model.predict()时,会得到如下输出 [[0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.]代替概率分布 用于错误再现的Colab: 21是预测类的索引,您有40个类。如果您有一个类列表,即class_list[等]。则该类是class_

我从Keras培训了40门课程的InceptionResNetV2,并使用model.evaluate()对其进行了测试;一切都很好。但是,当我尝试对单个图像使用model.predict()时,会得到如下输出

[[0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.]
代替概率分布

用于错误再现的Colab:


21是预测类的索引,您有40个类。如果您有一个类列表,即class_list[等]。则该类是class_list[21]

而不是
模型。predict
,使用
模型。predict_proba
如下:

predict_proba(image, batch_size = 32, verbose = 1)

在我的案例中,使用Keras的内置函数对测试图像进行预处理很有帮助

from keras.applications.inception_resnet_v2 import preprocess_input 
img_batch = preprocess_input(img_batch)

请提供一些代码来复制…链接@DavidTheryoutput层的编辑问题需要激活,似乎它丢失了,而您只是在那里有一个密集层。例如
activation='sigmoid'
在处理多个类时,输出激活不应该是“softmax”吗?是的,没错。你的预测准确吗?如果不是的话,那就太合适了。你可以尝试的事情很少:第一次检查你输入的数据,第二次在训练集中,模型是如何运行的?是否可以显示上的代码,以及如何转移预先训练的重量?因为您的colab从加载模型开始。我想我需要完整的图片。我实际上正在测试一个类,它是class_list[0],使用的图像是用于测试的图像,请参考colab链接。它给出了与前面相同的结果