mindspore.nn.DiceLoss

class mindspore.nn.DiceLoss(smooth=1e-05)[源代码]

Dice系数是一个集合相似性loss,用于计算两个样本之间的相似性。当分割结果最好时,Dice系数的值为1,当分割结果最差时,Dice系数的值为0。

Dice系数表示两个对象之间的面积与总面积的比率。 函数如下:

\[dice = 1 - \frac{2 * |pred \bigcap true|}{|pred| + |true| + smooth}\]

\(pred\) 表示 logits\(true\) 表示 labels

参数:

  • smooth (float) - 将添加到分母中,以提高数值稳定性的参数。取值大于0。默认值:1e-5。

输入:

  • logits (Tensor) - 输入预测值,任意维度的Tensor。数据类型必须为float16或float32。

  • labels (Tensor) - 输入目标值,任意维度的Tensor,一般与 logits 的shape相同。 数据类型必须为float16或float32。

输出:

Tensor,shape为每样本采样的Dice系数的Tensor。

异常:

  • ValueError - logits 的维度与 labels 不同。

  • TypeError - logitslabels 的类型不是Tensor。

支持平台:

Ascend GPU CPU

样例:

>>> loss = nn.DiceLoss(smooth=1e-5)
>>> logits = Tensor(np.array([[0.2, 0.5], [0.3, 0.1], [0.9, 0.6]]), mstype.float32)
>>> labels = Tensor(np.array([[0, 1], [1, 0], [0, 1]]), mstype.float32)
>>> output = loss(logits, labels)
>>> print(output)
0.38596618