Tensorflow和Keras预测阈值

电子书

TF默认将输入图像分类为某个类别的阈值是多少?

例如,假设我有3类012,和用于图像中的标签是独热编码,如下所示:[1, 0, 0],这意味着该图像具有0类的标签。

现在,当模型在softmax之后输出这样的预测时:[0.39, 0.56, 0.05]TF是否使用0.5作为阈值,因此它预测的类别是1类?

如果所有预测都低于0.5,如[0.33, 0.33, 0.33]TF会说结果如何,该怎么办?

是否有任何方法可以指定一个新的阈值(例如0.7)并确保TF表示如果没有任何类别预测高于该阈值,则预测是错误的?

在网络不确定类的情况下,该逻辑是否还会延续到推理阶段,否则它将拒绝对图像进行分类?

Desertnaut

当模型在softmax之后输出这样的预测时:[0.39, 0.56, 0.05]TF是否使用0.5作为阈值,因此它预测的类别是1类?

不。这里没有任何门槛。Tensorflow(以及其他任何框架)将只获取最大的一个(argmax);1即使概率输出为,此处的结果(类)也将相同[0.33, 0.34, 0.33]

您似乎错误地认为,概率值0.5在3类分类问题中具有某些特殊意义。没有:0.5的概率值仅在二进制分类设置中才是“特殊的” 就此而言,是平衡的)。n-class设置中,相应的“特殊”值是1/n(此处为0.33),根据定义,在概率向量中总会有一些条目大于或等于该值。

如果所有预测都低于0.5,如[0.33, 0.33, 0.33]TF会说结果如何,该怎么办?

正如已经暗示的那样,在n> 2的n类问题中,所有概率都低于0.5的情况并不奇怪或令人意外。

现在,如果所有概率恰好相等,如您所展示的示例中所示(尽管在实践中极不可能,但是至少在理论上,这个问题是正确的),理想情况下,这种联系应该随机解决(即随机选择一个类) ); 实际上,由于通常通过argmaxNumpy方法处理此阶段,因此预测将是头等舱(即class 0),这不难证明:

import numpy as np
x = np.array([0.33, 0.33, 0.33])
np.argmax(x)
# 0

由于Numpy如何处理此类情况-从argmaxdocs中

在多次出现最大值的情况下,返回对应于第一次出现的索引。

下一个问题:

有没有办法指定一个新的阈值,例如0.7,并确保TF表示如果没有类别预测高于该阈值,则预测是错误的?

不在Tensorflow(或任何其他框架)本身中,但这总是可以在推理过程中的后处理阶段完成:无论分类器实际返回什么,总是可以添加一些额外的逻辑,从而每当最大概率值小于阈值时,您的系统(即您的模型加上后处理逻辑)都会返回类似“我不知道/不确定/我无法回答”的信息。但这又是Tensorflow(或使用的任何其他框架)和模型本身的外部,它只能在推断期间使用,不能在推断期间使用 在训练过程中(无论如何,在训练过程中这没有意义,因为在训练过程中仅使用预测的课堂概率,而不是硬课堂)。

实际上,几年前,我们已经在一个玩具项目中实现了这样的后处理模块,该模块是一种在线服务,可以根据图像对狗的比赛进行分类:当模型返回的最大概率小于阈值时(就是这种情况) ,例如,当模型显示的是猫而不是狗的图像时,系统被编程为回答“您确定这是狗这个问题,而不是被迫在模型中做出预测。预定义的狗比赛...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用API中的TensorFlow部署和提供预测?

Keras / Tensorflow预测:数组形状错误

Keras + Tensorflow:对多个GPU的预测

使用LSTM和Keras进行时间序列预测的不同大小的预测器

tensorflow和python进行值预测

Tensorflow:在GPU和CPU上同时预测

Keras Tensorflow-从多个线程进行预测时发生异常

在预测期间从Keras / Tensorflow获得中间输出

培训和预测时间的Keras Feature Wise中心

为什么批量预测时在Tensorflow(和Keras)上的每个样本预测时间比单个样本要短?

在Tensorflow中还原和预测

TensorFlow Keras在期待一个预测的同时返回了多个预测

如何使用Google AutoML更改预测阈值?

如何为输出预测设置条件阈值?

Tensorflow和Keras的多重损失

tensorflow keras无法在预测阶段退出(设置学习阶段无效)

预测中使用的阈值

具有不同形状的X和y的Tensorflow keras时间序列预测

如何在Tensorflow-keras中使用nlp的预测?

更改R中类别预测的阈值

Tensorflow - 预测序列:X 和 Y 是什么?

在 Keras 中预测和评估指标

Keras 和 tensorflow 的串联和拟合误差

为什么使用 keras 和 tensorflow 训练成功并预测失败?

在 TensorFlow Lite 中运行 Keras 模型时的不同预测

Tensorflow 和 Keras 如何从单热编码输出到用于计算准确性的类预测?

Python - TensorFlow 和 Keras

使用 tensorflow.keras 模型的 concurrent.futures 并行预测

预测 keras / tensorflow 中的所有测试批次