NHiTS#

class pytorch_forecasting.models.nhits._nhits.NHiTS(output_size: int | List[int] = 1, static_categoricals: List[str] | None = None, static_reals: List[str] | None = None, time_varying_categoricals_encoder: List[str] | None = None, time_varying_categoricals_decoder: List[str] | None = None, categorical_groups: Dict[str, List[str]] | None = None, time_varying_reals_encoder: List[str] | None = None, time_varying_reals_decoder: List[str] | None = None, embedding_sizes: Dict[str, Tuple[int, int]] | None = None, embedding_paddings: List[str] | None = None, embedding_labels: List[str] | None = None, x_reals: List[str] | None = None, x_categoricals: List[str] | None = None, context_length: int = 1, prediction_length: int = 1, static_hidden_size: int | None = None, naive_level: bool = True, shared_weights: bool = True, activation: str = 'ReLU', initialization: str = 'lecun_normal', n_blocks: List[str] | None = None, n_layers: int | List[int] = 2, hidden_size: int = 512, pooling_sizes: List[int] | None = None, downsample_frequencies: List[int] | None = None, pooling_mode: str = 'max', interpolation_mode: str = 'linear', batch_normalization: bool = False, dropout: float = 0.0, learning_rate: float = 0.01, log_interval: int = -1, log_gradient_flow: bool = False, log_val_interval: int = None, weight_decay: float = 0.001, loss: 多视角指标 = None, reduce_on_plateau_patience: int = 1000, backcast_loss_ratio: float = 0.0, logging_metrics: ModuleList = None, **kwargs)[来源]#

基础: BaseModelWithCovariates

初始化 N-HiTS 模型 - 如果可能,请使用它的 from_dataset() 方法。

基于文章 N-HiTS: Neural Hierarchical Interpolation for Time Series Forecasting。 该网络已显示出比 NBeats 增加约 25% 的准确性,并且还支持协变量。

Parameters:
  • hidden_size (int) – 隐藏层的大小,可以在8到1024之间变化 - 如果不使用协变量,则使用32-128。默认为512。

  • static_hidden_size (可选[整数], 可选) – 静态变量的隐藏层大小。默认为 hidden_size。

  • loss – 要优化的损失。默认为MASE()。也支持QuantileLoss

  • shared_weights (bool, 可选) – 如果为 True,块的权重将在每个堆栈中共享。默认为 True。

  • naive_level (bool, 可选) – 如果为 True,则在开始时添加最后一次观察的原生预测。默认为 True。

  • 初始化 (str, 可选) – 初始化方法。可选值为 [‘orthogonal’, ‘he_uniform’, ‘glorot_uniform’, ‘glorot_normal’, ‘lecun_normal’]。默认为 “lecun_normal”。

  • n_blocks (列表[整数], 可选) – 每个堆叠中使用的块的列表(即堆叠的长度)。默认为 [1, 1, 1]。

  • n_layers (Union[int, List[int]], 可选) – 每个块的层数或每个堆栈中块使用的层数列表(即堆栈的长度)。默认为 2。

  • pooling_sizes (可选[列表[整数]], 可选) – 每个堆栈输入的池化大小列表, 即更高的值意味着对输入的平滑程度更高。将列表按从高到低的顺序排列 可以改善结果。 默认为一种启发式方法。

  • pooling_mode (str, 可选) – 用于汇总输入的池化模式。可选值包括 [‘max’,’average’]。默认为 “max”。

  • downsample_frequencies (可选[列表[整数]], 可选) – 每个堆叠的输出下采样倍率,即 更高意味着在预测时需要更多插值。应该等于或大于 pooling_sizes,但小于等于 prediction_length。 默认为与 pooling_sizes 匹配的启发式方法。

  • interpolation_mode (str, optional) – 预测的插值模式。可以是[‘linear’, ‘nearest’, ‘cubic-x’],其中‘x’被批量大小替换。默认为“linear”。

  • batch_normalization (bool, 可选) – 是否进行批量归一化。默认为 False.

  • dropout (float, optional) – 隐藏层的 dropout 率。默认为 0.0。

  • activation (str, optional) – 激活函数。可选值为 [‘ReLU’, ‘Softplus’, ‘Tanh’, ‘SELU’, ‘LeakyReLU’, ‘PReLU’, ‘Sigmoid’]。默认为“ReLU”。

  • output_size – 输出数量(通常是QuantileLoss的分位数数量以及一个目标或输出大小列表,但目前仅允许点预测)。自动设置。

  • static_categoricals – 静态分类变量的名称

  • static_reals – 静态连续变量的名称

  • time_varying_categoricals_encoder – 编码器的分类变量名称

  • time_varying_categoricals_decoder – 解码器的分类变量名称

  • time_varying_reals_encoder – 编码器的连续变量名称

  • time_varying_reals_decoder – 解码器的连续变量名称

  • categorical_groups – 字典,其中值是分类变量的列表,这些变量共同形成一个新的分类变量,该变量是字典中的键

  • x_reals – 传递给前向函数的张量中连续变量的顺序

  • x_categoricals – 传递给前向函数的张量中的分类变量的顺序

  • hidden_continuous_size – 用于处理连续变量的隐藏层大小的默认值(类似于类别嵌入大小)

  • hidden_continuous_sizes – 字典,将连续输入索引映射到可变选择的大小 (如果索引不在字典中,则回退到 hidden_continuous_size)

  • embedding_sizes – 字典,将(字符串)索引映射到分类类的数量和嵌入大小的元组

  • embedding_paddings – 嵌入的索引列表,负责将零的嵌入转化为零向量

  • embedding_labels – 字典,将(字符串)索引映射到分类标签的列表

  • learning_rate – 学习率

  • log_interval – 每x个批次记录一次预测,如果小于或等于0则不记录,如果大于0则记录解释。如果小于1.0,将在每个批次记录多个条目。默认为-1。

  • log_val_interval – 记录验证集指标的频率,默认为 log_interval

  • log_gradient_flow – 如果记录梯度流,这会花费时间,应该仅在诊断训练失败时执行

  • prediction_length – 预测长度。也称为“视野”。

  • context_length – 条件预测的时间单位数。也称为“回溯期”。应该在预测长度的1-10倍之间。

  • backcast_loss_ratio – 在计算损失时,回溯与预测的权重比较。权重为1.0意味着回溯和预测损失的权重相同(与回溯和预测的长度无关)。默认为0.0,即无权重。

  • log_gradient_flow – 如果记录梯度流,这会耗费时间,仅应在诊断训练故障时进行

  • reduce_on_plateau_patience (int) – 学习率减少10倍后的耐心时间

  • logging_metrics (nn.ModuleList[MultiHorizonMetric]) – 在训练期间记录的指标列表。默认为 nn.ModuleList([SMAPE(), MAE(), RMSE(), MAPE(), MASE()])

  • **kwargs – 额外的参数用于 BaseModel

方法

forward(x)

网络的前向传递。

from_dataset(数据集, **kwargs)

方便的函数,用于从 :py:class`~pytorch_forecasting.data.timeseries.TimeSeriesDataSet` 创建网络。

log_interpretation(x, out, batch_idx)

在tensorboard中对网络预测的日志进行解释。

plot_interpretation(x, output, idx[, ax])

图表解释。

step(x, y, batch_idx)

进行训练/验证步骤。

forward(x: Dict[str, Tensor]) Dict[str, Tensor][来源]#

网络的前向传递。

Parameters:

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

Returns:

模型的输出

Return type:

字典[str, torch.Tensor]

classmethod from_dataset(dataset: 时间序列数据集, **kwargs)[来源]#

方便的函数,用于从 :py:class`~pytorch_forecasting.data.timeseries.TimeSeriesDataSet` 创建网络。

Parameters:
  • 数据集 (TimeSeriesDataSet) – 唯一预测变量是目标的 数据集。

  • **kwargs – 传递给 __init__ 方法的额外参数。

Returns:

NBeats

log_interpretation(x, out, batch_idx)[来源]#

在tensorboard中对网络预测的日志进行解释。

plot_interpretation(x: Dict[str, Tensor], output: Dict[str, Tensor], idx: int, ax=None)[来源]#

图表解释。

绘制两个面板:预测和反向预测与实际值,以及将预测分解为捕捉不同频率的不同区块预测。

Parameters:
  • x (字典[字符串, torch.Tensor]) – 网络输入

  • 输出 (字典[字符串, torch.Tensor]) – 网络输出

  • idx (int) – 要绘制解释的样本索引。

  • ax (列表[matplotlib坐标轴], 可选) – 要绘制解释的两个matplotlib坐标轴的列表。默认为None。

Returns:

matplotlib 图形

Return type:

plt.Figure

step(x, y, batch_idx) Dict[str, Tensor][来源]#

进行训练/验证步骤。

property decoder_covariate_size: int#

解码器协变量大小。

Returns:

解码器使用的时间依赖协变量的大小

Return type:

整数

property encoder_covariate_size: int#

编码器协变量大小。

Returns:

编码器使用的时间依赖协变量的大小

Return type:

整数

property n_stacks: int#

堆栈数量。

Returns:

堆叠数量。

Return type:

整数

property static_size: int#

静态协变量的大小。

Returns:

静态协变量的大小

Return type:

整数