TFT 模型从不匹配的检查点恢复训练,无法进行连续训练
import os import numpy as np import pandas as pd from pytorch_lightning import Trainer from darts import TimeSeries from darts.dataprocessing.transformers import Scaler from darts.models import TFTModel from darts.datasets import AirPassengersDataset from darts.utils.timeseries_generation import datetime_attribute_timeseries from darts.utils.likelihood_models import QuantileRegression from darts.models.forecasting.torch_forecasting_model import _get_checkpoint_fname
Read data
series = AirPassengersDataset().load()
we convert monthly number of passengers to average daily number of passengers per month
series = series / TimeSeries.from_series(series.time_index.days_in_month) series = series.astype(np.float32)
Create training and validation sets:
training_cutoff = pd.Timestamp("19571201") train, val = series.split_after(training_cutoff)
Normalize the time series (note: we avoid fitting the Transformer on the validation set)
Transformer = Scaler() train_transformed = Transformer.fit_transform(train) val_transformed = Transformer.transform(val) series_transformed = Transformer.transform(series)
create year, month and integer index covariate series
covariates = datetime_attribute_timeseries(series, attribute="year", one_hot=False) covariates = covariates.stack( datetime_attribute_timeseries(series, attribute="month", one_hot=False) ) covariates = covariates.stack( TimeSeries.from_times_and_values( times=series.time_index, values=np.arange(len(series)), columns=["linear_increase"], ) ) covariates = covariates.astype(np.float32)
transform covariates
scaler_covs = Scaler() cov_train, cov_val = covariates.split_after(training_cutoff) scaler_covs.fit(cov_train) covariates_transformed = scaler_covs.transform(covariates)
Create model
model = TFTModel( input_dim=len(series_transformed.columns), covariates_dim=len(covariates_transformed.columns), num_layers=2, num_units=128, num_heads=4, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers=2, num_enc_units=128, num_dec_units=128, num_enc_heads=4, num_dec_heads=4, num_enc_blocks=2, num_dec_blocks=2, num_enc_layers=2, num_dec_layers
内容来源: unit8co/darts