mindspore.ops.SigmoidCrossEntropyWithLogits

class mindspore.ops.SigmoidCrossEntropyWithLogits[源代码]

计算预测值与真实值之间的sigmoid交叉熵。

测量离散分类任务中的分布误差,每个类相互独立,且计算出各个类的交叉熵损失。

将输入 logits 设置为 \(X\) ,输入 label\(Y\) ,输出为 \(loss\) 。然后,

\[\begin{split}\begin{array}{ll} \\ p_{ij} = sigmoid(X_{ij}) = \frac{1}{1 + e^{-X_{ij}}} \\ loss_{ij} = -[Y_{ij} * ln(p_{ij}) + (1 - Y_{ij})ln(1 - p_{ij})] \end{array}\end{split}\]
输入:
  • logits (Tensor) - 预测值,任意维度的Tensor,其shape为 \((N, *)\) ,其中 \(*\) 为任意数量的额外维度。据类型必须为float16或float32。

  • label (Tensor) - 真实值。shape和数据类型与 logits 的相同。

输出:

Tensor,shape和数据类型与输入 logits 相同。

异常:
  • TypeError - logitslabel 不是Tensor。

支持平台:

Ascend GPU CPU

样例:

>>> logits = Tensor(np.array([[-0.8, 1.2, 0.7], [-0.1, -0.4, 0.7]]).astype(np.float32))
>>> labels = Tensor(np.array([[0.3, 0.8, 1.2], [-0.6, 0.1, 2.2]]).astype(np.float32))
>>> sigmoid = ops.SigmoidCrossEntropyWithLogits()
>>> output = sigmoid(logits, labels)
>>> print(output)
[[ 0.6111007   0.5032824   0.26318604]
 [ 0.58439666  0.5530153  -0.4368139 ]]