mindspore.nn.MAELoss
- class mindspore.nn.MAELoss(reduction='mean')[源代码]
衡量
和 之间的平均绝对误差。其中 是输入 logits , 是标签 labels 。简单来说,假设
和 是两个长度为 的1D Tensor。未归约前的(参数 reduction 是'none'
)损失为:N 是批次(batch)个数。
如果 reduction 不是
'none'
,则:- 参数:
reduction (str, 可选) - 对输出使用归约算法:
'none'
、'mean'
、'sum'
。 默认值:'mean'
。'none'
: 不使用规约算法。'mean'
: 计算输出的平均值。'sum'
: 计算输出中所有元素的和。
- 输入:
logits (Tensor) - Tensor的shape是
,其中, 的含义是任意额外的维度。labels (Tensor) - Tensor的shape是
,通常和 logits 的shape相同。然而,当 logits 和 labels 的shape不同时,它们需要支持广播。
- 输出:
Tensor,加权损失,dtype是float,如果 reduction 是
'mean'
或'sum'
,shape则为0,否则当 reduction 是'none'
时,shape是广播之后的shape。- 异常:
ValueError - 如果 reduction 不是
'none'
,'mean'
,'sum'
中的一个。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor, nn >>> import numpy as np >>> # Case 1: logits.shape = labels.shape = (3,) >>> loss = nn.MAELoss() >>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32) >>> labels = Tensor(np.array([1, 2, 2]), mindspore.float32) >>> output = loss(logits, labels) >>> print(output) 0.33333334 >>> # Case 2: logits.shape = (3,), labels.shape = (2, 3) >>> loss = nn.MAELoss(reduction='none') >>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32) >>> labels = Tensor(np.array([[1, 1, 1], [1, 2, 2]]), mindspore.float32) >>> output = loss(logits, labels) >>> print(output) [[0. 1. 2.] [0. 0. 1.]]