mindspore.ops.soft_margin_loss

查看源文件
mindspore.ops.soft_margin_loss(input, target, reduction='mean')[源代码]

计算 inputtarget 之间的soft margin loss。

一个二分类任务,计算输入 x 和真实标签 y (包含1或-1)之间的损失。

loss(x,y)=ilog(1+exp(y[i]x[i]))x.nelement()

其中 x.nelement()x 的元素数量。

警告

这是一个实验性API,后续可能修改或删除。

参数:
  • input (Tensor) - 预测值。数据类型必须为float16、float32、bfloat16(其中,Atlas训练系列产品不支持bfloat16)。

  • target (Tensor) - 真实标签,shape与 input 相同。GE模式下类型需要与 input 相同。

  • reduction (str,可选) - 指定应用于输出结果的规约计算方式,可选 'none''mean''sum' ,默认 'mean'

    • "none":不应用规约方法。

    • "mean":计算输出元素的平均值。

    • "sum":计算输出元素的总和。

返回:

Tensor或Scalar。如果 reduction'none' ,其shape与 input 相同。否则,将返回Scalar。

异常:
  • TypeError - 如果 inputtarget 不是Tensor。

  • TypeError - 如果 inputtarget 的数据类型不是float16、float32、bfloat16(其中,Atlas训练系列产品不支持bfloat16)。

  • ValueError - 如果 inputtarget 的shape不相同。

  • ValueError - 如果 reduction 不是 'none''mean''sum'

支持平台:

Ascend GPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> logits = Tensor(np.array([[0.3, 0.7], [0.5, 0.5]]), mindspore.float32)
>>> labels = Tensor(np.array([[-1, 1], [1, -1]]), mindspore.float32)
>>> output = ops.soft_margin_loss(logits, labels)
>>> print(output)
0.6764238