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)[来源]#
-
初始化 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
- 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
- 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:
整数