mindearth.core.RelativeRMSELoss

查看源文件
class mindearth.core.RelativeRMSELoss(reduction='mean')[源代码]

相对均方根误差(RRMSE)是由均方根值归一化的均方根误差,其中每个残差都是根据实际值缩放的。 Relative RMSELoss用来测量 \(x\)\(y\) 之间的相对均方根误差,其中 \(x\) 是预测值, \(y\) 是目标值。

为简单起见,令 \(x\)\(y\) 为长度为 \(N\) 的一维Tensor, \(x\)\(y\) 的损失如下:

\[loss = \sqrt{\frac{\frac{1}{N}\sum_{i=1}^{N}{(x_i-y_i)^2}}{sum_{i=1}^{N}{(y_i)^2}}}\]
参数:
  • reduction (str) - reduction 决定了计算模式。有三种模式可选: "mean""sum""none"。默认值: "mean"

输入:
  • prediction (Tensor) - 预测值,公式中的 \(x\) ,shape为 \((N, *)\) 的Tensor, \(*\) 代表任意数量的其他维度。

  • labels (Tensor) - 样本的真实值,公式中的 \(y\) 。Tensor的shape \((N, *)\) 其中 \(*\) 表示任意维度,通常情况下和 prediction 的shape一致。但是,也支持 labels 的shape和 prediction 的shape不一致,两者需满足可相互广播。

输出:

Tensor,加权损失浮点数。

  • output (Tensor) - shape为 \(()\) 的Tensor。

支持平台:

Ascend GPU CPU

样例:

>>> import numpy as np
>>> import mindspore
>>> from mindspore import Tensor
>>> from mindearth.core 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.11111112