为什么分割模型库的预测输出(值)是(0到1)而不是(0或1)?

在按照这个教程进行语义分割任务时,
我注意到模型的最终预测输出不是0和1,
而是介于0.0000xxxx到1.0之间的十进制值。

由于模型只接受0和1的标签,
输出中的十进制值范围的含义是什么?
(像素属于某一类别的可能性?)

test_img = cv2.imread('data/membrane1/test/0.png', cv2.IMREAD_COLOR)    test_img = cv2.resize(test_img, (SIZE_Y, SIZE_X))test_img = cv2.cvtColor(test_img, cv2.COLOR_RGB2BGR)test_img = np.expand_dims(test_img, axis=0)prediction = model.predict(test_img)plt.imshow(prediction_image, cmap='gray')

样本输出图像
enter image description here

样本输出/预测值
enter image description here

Youtube教程 – 177 – 简易语义分割(使用分割模型库)
Github原始源代码


回答:

不确定您使用的是哪种模型,但很可能模型的最后一层是一个使用sigmoid函数作为激活函数的密集层。这将给出0到1之间的值。您需要找到一个阈值,并测试哪个阈值能带来更好的结果。例如,将预测值小于0.5的所有值转换为0,将预测值大于或等于0.5的值转换为1。然而,这个阈值需要调整以查看哪个阈值能带来更好的结果。建议您使用完全未用于训练的数据来找到这个阈值。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注