分布损失#

class pytorch_forecasting.metrics.base_metrics.DistributionLoss(name: str = None, quantiles: List[float] | None = None, reduction='mean')[来源]#

基类: MultiHorizonMetric

DistributionLoss 基类。

该类应继承所有分布损失,即如果网络预测概率分布的参数,可以使用DistributionLoss对这些参数进行评分并计算给定真实值的损失。

在子类中定义两个类属性:

distribution_class#

torch 概率分布

Type:

分布.Distribution

distribution_arguments#

分布的参数名称列表

Type:

列表[str]

此外,实现方法 map_x_to_distribution()rescale_parameters()

初始化指标

Parameters:
  • name (str) – 指标名称。默认为类名称。

  • 分位数 (列表[浮点数], 可选) – 概率范围的分位数。 默认为 [0.02, 0.1, 0.25, 0.5, 0.75, 0.9, 0.98]。

  • reduction (str, 可选) – 减少方式,“none”,“mean”或“sqrt-mean”。默认为“mean”。

方法

loss(预测值, 实际值)

计算负似然

map_x_to_distribution(x)

将参数的张量映射到概率分布。

sample(y_pred, n_samples)

从分布中抽样。

to_prediction(y_pred[, n_samples])

将网络预测转换为点预测。

to_quantiles(y_pred[, quantiles, n_samples])

将网络预测转换为分位数预测。

loss(y_pred: Tensor, y_actual: Tensor) Tensor[来源]#

计算负似然

Parameters:
  • y_pred – 网络输出

  • y_actual – 实际值

Returns:

可以应用反向传播的度量值

Return type:

torch.Tensor

map_x_to_distribution(x: Tensor) Distribution[来源]#

将参数的张量映射到概率分布。

Parameters:

x (torch.Tensor) – 概率分布的参数。最后一个维度将索引这些参数

Returns:

在此定义的torch概率分布

类属性 distribution_class

Return type:

分布.Distribution

sample(y_pred, n_samples: int) Tensor[来源]#

从分布中抽样。

Parameters:
  • y_pred – 网络的预测输出 (形状 batch_size x n_timesteps x n_paramters)

  • n_samples (int) – 要抽取的样本数量

Returns:

具有样本的张量(形状 为 batch_size x n_timesteps x n_samples)

Return type:

torch.Tensor

to_prediction(y_pred: Tensor, n_samples: int = 100) Tensor[来源]#

将网络预测转换为点预测。

Parameters:
  • y_pred – 网络的预测输出

  • n_samples (int) – 要抽取的样本数量

Returns:

平均预测

Return type:

torch.Tensor

to_quantiles(y_pred: Tensor, quantiles: List[float] = None, n_samples: int = 100) Tensor[来源]#

将网络预测转换为分位数预测。

Parameters:
  • y_pred – 网络的预测输出

  • 分位数 (列表[浮点数], 可选) – 概率范围的分位数。默认为类初始化中定义的分位数。

  • n_samples (int) – 用于抽取分位数的样本数量。默认为 100。

Returns:

预测分位数(最后维度)

Return type:

torch.Tensor