mindscience.common.RelativeRMSELoss

class mindscience.common.RelativeRMSELoss(reduction='sum')[源代码]

相对均方根误差(RRMSE)是对均方根误差进行归一化后的结果,其归一化因子为真实值的均方根,其中每一个残差项都相对于真实值进行缩放。 相对均方根误差用于逐元素地度量预测值 \(x\) 与标签 \(y\) 之间的均方根误差, 其中 \(x\) 表示预测值,\(y\) 表示标签。

为简化描述,设 \(x\)\(y\) 为长度为 \(N\) 的一维 Tensor,则 \(x\)\(y\) 的损失定义如下:

\[loss = \sqrt{\frac{\sum_{i=1}^{N}{(x_i-y_i)^2}}{\sum_{i=1}^{N}{(y_i)^2}}}\]
参数:
  • reduction (str, 可选) - 应用于损失的归约方式。支持 "mean""sum""none"。默认 "sum"

输入:
  • prediction (Tensor) - 网络的预测值。形状为 \((N, *)\) 的 Tensor,其中 \(*\) 表示任意数量的附加维度。

  • labels (Tensor) - 样本的真实值。形状为 \((N, *)\) 的张量,其中 \(*\) 表示任意数量的附加维度,在常见情况下与 prediction 具有相同的形状。 该接口支持 labels 的形状与 prediction 不同,但二者需要能够相互广播。

输出:
  • output (Tensor) - 加权后的损失值。

样例:

>>> import numpy as np
>>> import mindspore
>>> from mindspore import Tensor
>>> from mindscience.common import RelativeRMSELoss
>>> # Case: prediction.shape = labels.shape = (3, 3)
>>> prediction = Tensor(np.array([[1, 2, 3],[1, 2, 3],[1, 2, 3]]), mindspore.float32)
>>> labels = Tensor(np.array([[1, 2, 2],[1, 2, 3],[1, 2, 3]]), mindspore.float32)
>>> loss_fn = RelativeRMSELoss()
>>> loss = loss_fn(prediction, labels)
>>> print(loss)
0.33333334