python - 将 sigmoid 结果解释为神经网络中的概率

标签 python tensorflow sigmoid

我在最后一层创建了一个带有 sigmoid 激活函数的神经网络,所以我得到的结果在 0 到 1 之间。我想将事物分为 2 个类,所以我检查“数字是否 > 0.5,然后类1 其他 0 级”。都是基本的。 但是,我想说“它在 0 类中的概率是 x,在 1 类中的概率是 y”。

我该怎么做?

  • 像 0.73 这样的数字是否表明它有 73% 的可能性属于 1 类?那么 1-0.73 = 0.27 那么 27% 属于 0 类?
  • 当它为 0.27 时,是否意味着 0 类的确定性为 27%,1 类的确定性为 73%?毫无意义。

我应该使用 0.5 并查看“数字离中心有多远,然后就是百分比”?

或者我误解了神经网络的结果?

最佳答案

正如 Teja 所指出的,简短的答案是否定的,但是,根据您使用的损失,它可能比您想象的更接近事实。

想象一下,您尝试训练网络将数字区分为两个任意类别: beautifulugly 。假设您输入的号码是 010有一个 0.2被标记的概率ugly1有 o 0.6成为ugly的概率.

想象一下您的神经网络将 0 作为输入和 1 s,将它们传递到一些层,并以 softmax 函数结束。如果您的损失是二元交叉熵,那么您的网络的最佳解决方案是输出 0.2当它看到0时在输入和 0.6当它看到1时输入(这是交叉熵的一个属性,当您输出每个标签的真实概率时,它会被最小化)。因此,您可以将这些数字解释为概率。

当然,现实世界的例子并不那么容易,并且通常是确定性的,因此解释有点棘手。然而,我相信,只要你使用交叉熵作为损失,将你的结果视为概率并不是完全错误的。

抱歉,这个答案不是非黑即白,但现实有时很复杂;)

关于python - 将 sigmoid 结果解释为神经网络中的概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57903518/

相关文章:

python - 通过 SQLAlchemy 使用 Postgresql 执行多个语句不会保留更改

python - 如何匹配 Python 正则表达式中的开始和结束?

python - 最大化 keras 模型的 MSE

python - 在python中实现sigmoid函数

python - tensorflow : result of training data(using sigmoid) came out reversely

machine-learning - 用于多类分类的 Sigmoid 激活?

python - "type object ' EllipticCurvePublicKey ' has no attribute ' from_encoded_point '"在 pysftp/Paramiko 中

python - pip 忽略代理设置

c++ - 握手失败,出现 fatal error SSL_ERROR_SSL : error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER

machine-learning - 如何与 tflearn 进行交叉验证?