About
This repository provides model weights to run load forecasting models trained on ComStock datasets. The companion dataset repository is this. The model definitions are present in the models
directory. The corresponding trained model weights are present in the weights
directory. The corresponding model keyword arguments (as a function of a provided lookback
and lookahead
) can be imported from the file model_kwargs.py
.
Note that lookback
is denoted by L
and lookahead
by T
in the weights directory. We provide weights for the following (L,T)
pairs: (512,4)
, (512,48)
, and (512,96)
, and for HOM
ogenous and HET
erogenous datasets.
Packages
Executing the code only requires numpy
and torch
(PyTorch) packages. You can either have them in your Python base installation, or use a conda
environment.
Example
In order to see how to use the model definitions and load the weights into them, see example.py
.
Technical Details for Running the Models
In input layout of the models are as follows:
The
forward()
functions ofLSTM
,LSTNet
, andPatchTST
take in two arguments:forward(input, future_time_idx)
. They are laid out as follows:input
is a tensor of shape(B,L,num_features)
whereB
is the batch size,L
is the lookback duration, andnum_features
is 8 for our current application.future_time_idx
is a tensor of shape(B,T,2)
whereT
is the lookahead and 2 is the number of time index features.- The time indices in
input
as well asfut_time_idx
are both normalized. - The custom
torch.utils.data.Dataset
class for the train, val, and test sets can be generated by executing theget_data_and_generate_train_val_test_sets
function in thecustom_dataset.py
file in the companion dataset. - Non-time features are normalized. The mean and standard deviation of the companion dataset can be inferred by executing
example_dataset.py
there and looking atCase 1
andCase 4
. - The output shape is
(B,1)
denoting the pointwise forecastT
steps into the future.
The
forward()
functions ofTransformer
,Autoformer
,Informer
, andTimesNet
take in two arguments:forward(input, future_time_idx)
. They are laid out as follows:input
is a tensor of shape(B,L,num_features)
whereB
is the batch size,L
is the lookback duration, andnum_features
is 8 for our current application.future_time_idx
is a tensor of shape(B,T,2)
whereT
is the lookahead and 2 is the number of time index features.- The time indices in
input
as well asfut_time_idx
are un-normalized to allow for embedding. - The custom
torch.utils.data.Dataset
class for the train, val, and test sets can be generated by executing theget_data_and_generate_train_val_test_sets
function in thecustom_dataset.py
file in the companion dataset. - Non-time features are normalized. The mean and standard deviation of the companion dataset can be inferred by executing
example_dataset.py
there and looking atCase 2
andCase 5
. - The output shape is
(B,1)
denoting the pointwise forecastT
steps into the future.
The
forward()
functions ofTimesFM
takes in one argument:forward(input)
. It is laid out as follows:input
is a tensor of shape(B,L)
whereB
is the batch size andL
is the lookback duration. Since it is univariate, there is only one feature.- The sole feature is normalized. The mean and standard deviation of the companion dataset can be inferred by executing
example_dataset.py
there and looking atCase 3
andCase 6
. - The custom
torch.utils.data.Dataset
class for the train, val, and test sets can be generated by executing theget_data_and_generate_train_val_test_sets
function in thecustom_dataset_univariate.py
file in the companion dataset. - The output shape is
(B,T)
denoting the rolling horizon forecastT
steps into the future.
Credits
Some model definitions have been adapted from the code provided in the TSLib Library.