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 - logits 或 label 不是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 ]]