带协变量的基本模型#
- 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”。
方法
通过在从
-std
到+std
的bins
区间内对变量进行平均来计算预测值和实际值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