带协变量的基本模型#

class pytorch_forecasting.models.base_model.BaseModelWithCovariates(dataset_parameters: Dict[str, Any] = None, log_interval: int | float = -1, log_val_interval: int | float = None, learning_rate: float | List[float] = 0.001, log_gradient_flow: bool = False, loss: 指标 = SMAPE(), logging_metrics: ModuleList = ModuleList(), reduce_on_plateau_patience: int = 1000, reduce_on_plateau_reduction: float = 2.0, reduce_on_plateau_min_lr: float = 1e-05, weight_decay: float = 0.0, optimizer_params: Dict[str, Any] = None, monotone_constraints: Dict[str, int] = {}, output_transformer: Callable = None, optimizer='adam')[来源]#

基础: BaseModel

具有使用协变量的附加方法的模型。

假设以下超参数:

Parameters:
  • static_categoricals (List[str]) – 静态分类变量的名称

  • static_reals (List[str]) – 静态连续变量的名称

  • time_varying_categoricals_encoder (List[str]) – 编码器的分类变量名称

  • time_varying_categoricals_decoder (List[str]) – 解码器的分类变量名称

  • time_varying_reals_encoder (List[str]) – 编码器的连续变量名称

  • time_varying_reals_decoder (List[str]) – 解码器的连续变量名称

  • x_reals (List[str]) – 传递给前向函数的张量中连续变量的顺序

  • x_categoricals (List[str]) – 传递给前向函数的张量中分类变量的顺序

  • embedding_sizes (字典[str, 元组[int, int]]) – 将分类变量映射到整数元组的字典,其中第一个整数表示分类类别的数量,第二个表示嵌入大小

  • embedding_labels (Dict[str, List[str]]) – 字典,将 (字符串) 索引映射到类别标签列表

  • embedding_paddings (List[str]) – 类别变量的名称,其中标签 0 始终映射到一个填充为零的嵌入向量

  • categorical_groups (Dict[str, List[str]]) – 一个分类变量的字典,这些变量被组合在一起,并且可以同时具有多个值(例如,在十月节期间的假期)。它们应该被实现为嵌入包

用于继承的时间序列预测的基础模型

Parameters:
  • log_interval (Union[int, float], optional) – 预测将被记录的批次数。如果 < 1.0,则每个批次会记录多个条目。默认值为 -1。

  • log_val_interval (Union[int, float], optional) – 预测验证结果记录的批次数。默认为 None/log_interval。

  • learning_rate (float, 可选) – 学习率。默认为 1e-3。

  • log_gradient_flow (bool) – 如果要记录梯度流,这会耗费时间,应仅用于诊断训练失败。默认为 False。

  • 损失 (指标, 可选) – 要优化的指标,也可以是指标的列表。默认为 SMAPE()。

  • logging_metrics (nn.ModuleList[MultiHorizonMetric]) – 在训练期间记录的度量列表。默认为[]。

  • reduce_on_plateau_patience (int) – 在此之后学习率减少10倍的耐心。默认为1000

  • reduce_on_plateau_reduction (float) – 当遇到平台期时,学习率的减少。默认值为 2.0。

  • reduce_on_plateau_min_lr (float) – 降至平台学习率调度器的最小学习率。默认值为 1e-5

  • weight_decay (float) – 权重衰减。默认为 0.0。

  • optimizer_params (字典[字符串, 任意类型]) – 优化器的附加参数。默认为 {}.

  • monotone_constraints (Dict[str, int]) – 用于连续解码器变量的单调性约束字典 将位置映射到约束(例如,"0"表示第一个位置)(-1表示负约束,+1表示正约束, 较大的数字对约束相对于损失增加更多的权重,但通常是不必要的)。 这个约束显著减慢训练速度。默认值为 {}。

  • output_transformer (可调用对象) – 转换器,将网络输出转换为预测空间。默认为 None,相当于 lambda out: out["prediction"]

  • optimizer (str) – 优化器,“ranger”、“sgd”、“adam”、“adamw”或torch.optim中的优化器类名或pytorch_optimizer。可以传递一个类或函数,该类或函数将参数作为第一个参数,并可选地带有lr参数(也可以有weight_decay)。默认为“adam”。

方法

calculate_prediction_actual_by_variable(x, ...)

通过在从 -std+stdbins 区间内对变量进行平均来计算预测值和实际值

extract_features(x[, embeddings, period])

提取特征

from_dataset(数据集[, ...])

从数据集中创建模型并设置与协变量相关的参数。

plot_prediction_actual_by_variable(数据[, ...])

通过变量绘制预测值和实际平均值

calculate_prediction_actual_by_variable(x: Dict[str, Tensor], y_pred: Tensor, normalize: bool = True, bins: int = 95, std: float = 2.0, log_scale: bool = None) Dict[str, Dict[str, Tensor]][来源]#

通过 bins 将变量按 -std+std 的区间平均计算预测值和实际值

Parameters:
  • x – 输入为 forward()

  • y_pred – 通过 self(x, **kwargs) 获得的预测结果

  • normalize – 是否返回标准化的平均值,即 y 的平均数或总和

  • bins – 计算的区间数量

  • std – 标准缩放连续变量的标准差数量

  • log_scale (str, 可选) – 是否在对数空间中绘图。如果为 None,则根据值的偏斜程度确定。默认为 None。

Returns:

可以用于通过 plot_prediction_actual_by_variable() 绘制平均值的字典

extract_features(x, embeddings: 多重嵌入 = None, period: str = 'all') Tensor[来源]#

提取特征

Parameters:
  • x (字典[字符串, torch.Tensor]) – 来自数据加载器的输入

  • 嵌入 (MultiEmbedding) – 类别变量的嵌入

  • period (str, 可选) – “encoder”、“decoder”或“all”中的一个。默认为“all”。

Returns:

具有选择变量的张量

Return type:

torch.Tensor

classmethod from_dataset(dataset: 时间序列数据集, allowed_encoder_known_variable_names: List[str] = None, **kwargs) LightningModule[来源]#

从数据集中创建模型并设置与协变量相关的参数。

Parameters:
  • dataset – 时间序列数据集

  • allowed_encoder_known_variable_names – 允许在编码器中使用的已知变量列表,默认为所有

  • **kwargs – 额外的参数,例如模型的超参数(见 __init__()

Returns:

Lightning模块

plot_prediction_actual_by_variable(data: Dict[str, Dict[str, Tensor]], name: str = None, ax=None, log_scale: bool = None)[来源]#

通过变量绘制预测值和实际平均值

Parameters:
  • data (Dict[str, Dict[str, torch.Tensor]]) – 从 calculate_prediction_actual_by_variable() 获得的数据

  • name (str, optional) – 要绘制实际值与预测值的变量名称。默认为 None,这意味着返回所有变量的图表字典。

  • log_scale (str, 可选) – 是否在对数空间中绘图。如果为 None,则基于值的偏斜度决定。默认为 None。

Raises:

ValueError – 如果变量名未知

Returns:

matplotlib 图形

Return type:

Union[Dict[str, plt.Figure], plt.Figure]

property categorical_groups_mapping: Dict[str, str]#

将分类变量映射到分类组

property categoricals: List[str]#

模型中所有分类变量的列表

property decoder_variables: List[str]#

模型中所有解码器变量的列表(不包括静态变量)

property encoder_variables: List[str]#

模型中所有编码器变量的列表(不包括静态变量)

property reals: List[str]#

模型中的所有连续变量列表

property static_variables: List[str]#

模型中所有静态变量的列表

property target_positions: LongTensor#

协变量中目标变量的位置。

Returns:

位置的张量。

Return type:

torch.LongTensor