From 34d4502dde27aba27a8961da4668c045e7ddd32e Mon Sep 17 00:00:00 2001 From: Zezhi Shao <864453277@qq.com> Date: Thu, 30 Nov 2023 11:02:17 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E2=9C=8F=EF=B8=8F=20update=20configs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- baselines/Autoformer/ETTh1.py | 2 +- baselines/Autoformer/ETTh2.py | 2 +- baselines/Autoformer/ETTm1.py | 2 +- baselines/Autoformer/ETTm2.py | 2 +- baselines/Autoformer/Electricity.py | 2 +- baselines/Autoformer/ExchangeRate.py | 2 +- baselines/Autoformer/PEMS04.py | 2 +- baselines/Crossformer/ETTm1.py | 2 +- baselines/Crossformer/ETTm2.py | 2 +- baselines/Crossformer/Electricity.py | 21 ++-- baselines/Crossformer/ExchangeRate.py | 4 +- baselines/Crossformer/PEMS04.py | 2 +- baselines/DLinear/ETTh1.py | 2 +- baselines/DLinear/Electricity.py | 2 +- baselines/FEDformer/ETTh1.py | 2 +- baselines/FEDformer/ETTm1.py | 2 +- baselines/FEDformer/ETTm2.py | 2 +- baselines/FEDformer/Electricity.py | 2 +- baselines/FEDformer/ExchangeRate.py | 4 +- baselines/FEDformer/PEMS04.py | 2 +- baselines/FEDformer/PEMS08.py | 2 +- baselines/FEDformer/Weather.py | 2 +- baselines/Informer/ETTh1.py | 2 +- baselines/Informer/ETTh2.py | 2 +- baselines/Informer/ETTm1.py | 4 +- baselines/Informer/ETTm2.py | 4 +- baselines/Informer/Electricity.py | 2 +- baselines/Informer/ExchangeRate.py | 2 +- baselines/Informer/METR-LA.py | 2 +- baselines/Informer/PEMS-BAY.py | 2 +- baselines/Informer/PEMS03.py | 136 -------------------------- baselines/Informer/PEMS04.py | 2 +- baselines/Informer/PEMS08.py | 2 +- baselines/Informer/Weather.py | 2 +- baselines/PatchTST/ETTh2.py | 10 +- baselines/PatchTST/ETTm1.py | 10 +- baselines/PatchTST/ETTm2.py | 2 +- baselines/PatchTST/Electricity.py | 12 +-- baselines/PatchTST/METR-LA.py | 130 ------------------------ baselines/PatchTST/PEMS-BAY.py | 130 ------------------------ baselines/PatchTST/PEMS04.py | 6 +- baselines/PatchTST/PEMS08.py | 6 +- baselines/Pyraformer/ETTh1.py | 2 +- baselines/Pyraformer/ETTh2.py | 2 +- baselines/Pyraformer/ETTm1.py | 4 +- baselines/Pyraformer/ETTm2.py | 4 +- baselines/Pyraformer/Electricity.py | 4 +- baselines/Pyraformer/ExchangeRate.py | 2 +- baselines/Pyraformer/METR-LA.py | 125 ----------------------- baselines/Pyraformer/PEMS-BAY.py | 125 ----------------------- baselines/Pyraformer/PEMS04.py | 2 +- baselines/Pyraformer/PEMS08.py | 2 +- baselines/Pyraformer/Weather.py | 2 +- 53 files changed, 80 insertions(+), 729 deletions(-) delete mode 100644 baselines/Informer/PEMS03.py delete mode 100644 baselines/PatchTST/METR-LA.py delete mode 100644 baselines/PatchTST/PEMS-BAY.py delete mode 100644 baselines/Pyraformer/METR-LA.py delete mode 100644 baselines/Pyraformer/PEMS-BAY.py diff --git a/baselines/Autoformer/ETTh1.py b/baselines/Autoformer/ETTh1.py index 2f328cdc..c4002f1c 100644 --- a/baselines/Autoformer/ETTh1.py +++ b/baselines/Autoformer/ETTh1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 336 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Autoformer/ETTh2.py b/baselines/Autoformer/ETTh2.py index c51c0d6e..b7842e3c 100644 --- a/baselines/Autoformer/ETTh2.py +++ b/baselines/Autoformer/ETTh2.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 336 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Autoformer/ETTm1.py b/baselines/Autoformer/ETTm1.py index e88a806f..251c008b 100644 --- a/baselines/Autoformer/ETTm1.py +++ b/baselines/Autoformer/ETTm1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Autoformer/ETTm2.py b/baselines/Autoformer/ETTm2.py index 9b1ceab5..cd562d50 100644 --- a/baselines/Autoformer/ETTm2.py +++ b/baselines/Autoformer/ETTm2.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Autoformer/Electricity.py b/baselines/Autoformer/Electricity.py index 3ee12e03..4b104df7 100644 --- a/baselines/Autoformer/Electricity.py +++ b/baselines/Autoformer/Electricity.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Electricity" CFG.DATASET_TYPE = "Electricity Consumption" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Autoformer/ExchangeRate.py b/baselines/Autoformer/ExchangeRate.py index ab986bdf..b9e93c66 100644 --- a/baselines/Autoformer/ExchangeRate.py +++ b/baselines/Autoformer/ExchangeRate.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ExchangeRate" CFG.DATASET_TYPE = "Exchange Rate" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Autoformer/PEMS04.py b/baselines/Autoformer/PEMS04.py index 0b62717a..a6b91f81 100644 --- a/baselines/Autoformer/PEMS04.py +++ b/baselines/Autoformer/PEMS04.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS04" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/Crossformer/ETTm1.py b/baselines/Crossformer/ETTm1.py index bc266ac4..a47a7a1b 100644 --- a/baselines/Crossformer/ETTm1.py +++ b/baselines/Crossformer/ETTm1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Crossformer/ETTm2.py b/baselines/Crossformer/ETTm2.py index 81593f02..35f7612e 100644 --- a/baselines/Crossformer/ETTm2.py +++ b/baselines/Crossformer/ETTm2.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Crossformer/Electricity.py b/baselines/Crossformer/Electricity.py index e20ebc43..9545897f 100644 --- a/baselines/Crossformer/Electricity.py +++ b/baselines/Crossformer/Electricity.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Electricity" CFG.DATASET_TYPE = "Electricity" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -38,13 +38,13 @@ "data_dim": NUM_NODES, "in_len": CFG.DATASET_INPUT_LEN, "out_len": CFG.DATASET_OUTPUT_LEN, - "seg_len": 6, + "seg_len": 24, "win_size": 2, # default parameters "factor": 10, - "d_model": 256, - "d_ff": 512, - "n_heads": 4, + "d_model": 64, + "d_ff": 128, + "n_heads": 2, "e_layers": 3, "dropout": 0.2, "baseline": False @@ -58,20 +58,17 @@ CFG.TRAIN.OPTIM = EasyDict() CFG.TRAIN.OPTIM.TYPE = "Adam" CFG.TRAIN.OPTIM.PARAM = { - "lr": 0.0001 + "lr": 0.001 } CFG.TRAIN.LR_SCHEDULER = EasyDict() CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" CFG.TRAIN.LR_SCHEDULER.PARAM = { - "milestones": [1], + "milestones": [1, 20, 40, 60, 80, 100, 150], "gamma": 0.5 } # ================= train ================= # -CFG.TRAIN.CLIP_GRAD_PARAM = { - "max_norm": 5.0 -} -CFG.TRAIN.NUM_EPOCHS = 50 +CFG.TRAIN.NUM_EPOCHS = 200 CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( 'checkpoints', '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) @@ -81,7 +78,7 @@ # read data CFG.TRAIN.DATA.DIR = 'datasets/' + CFG.DATASET_NAME # dataloader args, optional -CFG.TRAIN.DATA.BATCH_SIZE = 8 +CFG.TRAIN.DATA.BATCH_SIZE = 32 CFG.TRAIN.DATA.PREFETCH = False CFG.TRAIN.DATA.SHUFFLE = True CFG.TRAIN.DATA.NUM_WORKERS = 2 diff --git a/baselines/Crossformer/ExchangeRate.py b/baselines/Crossformer/ExchangeRate.py index 050c50b0..75d6ba76 100644 --- a/baselines/Crossformer/ExchangeRate.py +++ b/baselines/Crossformer/ExchangeRate.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ExchangeRate" CFG.DATASET_TYPE = "Exchange Rate" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -68,7 +68,7 @@ } # ================= train ================= # -CFG.TRAIN.NUM_EPOCHS = 50 +CFG.TRAIN.NUM_EPOCHS = 20 CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( 'checkpoints', '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) diff --git a/baselines/Crossformer/PEMS04.py b/baselines/Crossformer/PEMS04.py index 363b325e..2fad132b 100644 --- a/baselines/Crossformer/PEMS04.py +++ b/baselines/Crossformer/PEMS04.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS04" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/DLinear/ETTh1.py b/baselines/DLinear/ETTh1.py index 7e92ad3a..b96bdff2 100644 --- a/baselines/DLinear/ETTh1.py +++ b/baselines/DLinear/ETTh1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/DLinear/Electricity.py b/baselines/DLinear/Electricity.py index 0b925bb1..8769b4f9 100644 --- a/baselines/DLinear/Electricity.py +++ b/baselines/DLinear/Electricity.py @@ -105,4 +105,4 @@ # ================= evaluate ================= # CFG.EVAL = EasyDict() -CFG.EVAL.HORIZONS = [12, 24, 48, 96] +CFG.EVAL.HORIZONS = [12, 24, 48, 96, 192, 288, 336] diff --git a/baselines/FEDformer/ETTh1.py b/baselines/FEDformer/ETTh1.py index 9e6ec23c..ff69c80f 100644 --- a/baselines/FEDformer/ETTh1.py +++ b/baselines/FEDformer/ETTh1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/FEDformer/ETTm1.py b/baselines/FEDformer/ETTm1.py index 3359235d..2ea5c979 100644 --- a/baselines/FEDformer/ETTm1.py +++ b/baselines/FEDformer/ETTm1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/FEDformer/ETTm2.py b/baselines/FEDformer/ETTm2.py index 279c4e71..ae9ab0e8 100644 --- a/baselines/FEDformer/ETTm2.py +++ b/baselines/FEDformer/ETTm2.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/FEDformer/Electricity.py b/baselines/FEDformer/Electricity.py index 149a1df7..86abdf00 100644 --- a/baselines/FEDformer/Electricity.py +++ b/baselines/FEDformer/Electricity.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Electricity" CFG.DATASET_TYPE = "Electricity Consumption" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/FEDformer/ExchangeRate.py b/baselines/FEDformer/ExchangeRate.py index e2e30455..b0c28d0a 100644 --- a/baselines/FEDformer/ExchangeRate.py +++ b/baselines/FEDformer/ExchangeRate.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ExchangeRate" CFG.DATASET_TYPE = "Exchange Rate" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -59,7 +59,7 @@ "cross_activation": "tanh", # mwt cross atention activation function tanh or softmax "activation": "gelu", "num_time_features": 4, # number of used time features - "time_of_day_size": 1, + "time_of_day_size": 96, "day_of_week_size": 7, "day_of_month_size": 31, "day_of_year_size": 366 diff --git a/baselines/FEDformer/PEMS04.py b/baselines/FEDformer/PEMS04.py index 42a8c7a8..155d1f73 100644 --- a/baselines/FEDformer/PEMS04.py +++ b/baselines/FEDformer/PEMS04.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS04" CFG.DATASET_TYPE = "Traffic flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/FEDformer/PEMS08.py b/baselines/FEDformer/PEMS08.py index 23425988..3f661d15 100644 --- a/baselines/FEDformer/PEMS08.py +++ b/baselines/FEDformer/PEMS08.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS08" CFG.DATASET_TYPE = "Traffic flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/FEDformer/Weather.py b/baselines/FEDformer/Weather.py index bfd38fc6..d1f8fd9e 100644 --- a/baselines/FEDformer/Weather.py +++ b/baselines/FEDformer/Weather.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Weather" CFG.DATASET_TYPE = "Weather Data" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Informer/ETTh1.py b/baselines/Informer/ETTh1.py index 4a06779e..2b94a53a 100644 --- a/baselines/Informer/ETTh1.py +++ b/baselines/Informer/ETTh1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Informer/ETTh2.py b/baselines/Informer/ETTh2.py index 5479708e..f8fba75f 100644 --- a/baselines/Informer/ETTh2.py +++ b/baselines/Informer/ETTh2.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 336 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Informer/ETTm1.py b/baselines/Informer/ETTm1.py index 49d0486a..b8cf20a3 100644 --- a/baselines/Informer/ETTm1.py +++ b/baselines/Informer/ETTm1.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -57,7 +57,7 @@ "distil": True, # whether to use distilling in encoder, using this argument means not using distilling "mix": True, # use mix attention in generative decoder "num_time_features": 4, # number of used time features [time_of_day, day_of_week, day_of_month, day_of_year] - "time_of_day_size": 24 * 4, + "time_of_day_size": 24, "day_of_week_size": 7, "day_of_month_size": 31, "day_of_year_size": 366 diff --git a/baselines/Informer/ETTm2.py b/baselines/Informer/ETTm2.py index ce0f6e8b..7b8e7dc5 100644 --- a/baselines/Informer/ETTm2.py +++ b/baselines/Informer/ETTm2.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -57,7 +57,7 @@ "distil": True, # whether to use distilling in encoder, using this argument means not using distilling "mix": True, # use mix attention in generative decoder "num_time_features": 4, # number of used time features [time_of_day, day_of_week, day_of_month, day_of_year] - "time_of_day_size": 24 * 4, + "time_of_day_size": 24, "day_of_week_size": 7, "day_of_month_size": 31, "day_of_year_size": 366 diff --git a/baselines/Informer/Electricity.py b/baselines/Informer/Electricity.py index 231ebab2..7053127a 100644 --- a/baselines/Informer/Electricity.py +++ b/baselines/Informer/Electricity.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Electricity" CFG.DATASET_TYPE = "Electricity Consumption" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Informer/ExchangeRate.py b/baselines/Informer/ExchangeRate.py index 0827228d..de6bae8f 100644 --- a/baselines/Informer/ExchangeRate.py +++ b/baselines/Informer/ExchangeRate.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ExchangeRate" CFG.DATASET_TYPE = "Exchange Rate" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Informer/METR-LA.py b/baselines/Informer/METR-LA.py index c6e5963b..11e00f2b 100644 --- a/baselines/Informer/METR-LA.py +++ b/baselines/Informer/METR-LA.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "METR-LA" CFG.DATASET_TYPE = "Traffic Speed" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # not tested yet CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/Informer/PEMS-BAY.py b/baselines/Informer/PEMS-BAY.py index aa8bb47a..a45af96e 100644 --- a/baselines/Informer/PEMS-BAY.py +++ b/baselines/Informer/PEMS-BAY.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS-BAY" CFG.DATASET_TYPE = "Traffic Speed" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # not tested yet CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/Informer/PEMS03.py b/baselines/Informer/PEMS03.py deleted file mode 100644 index 55d23c4b..00000000 --- a/baselines/Informer/PEMS03.py +++ /dev/null @@ -1,136 +0,0 @@ -import os -import sys - -# TODO: remove it when basicts can be installed by pip -sys.path.append(os.path.abspath(__file__ + "/../../..")) -from easydict import EasyDict -from basicts.runners import SimpleTimeSeriesForecastingRunner -from basicts.data import TimeSeriesForecastingDataset -from basicts.metrics import masked_mse, masked_mae - -from .arch import Informer - -CFG = EasyDict() - -# ================= general ================= # -CFG.DESCRIPTION = "Informer model configuration" -CFG.RUNNER = SimpleTimeSeriesForecastingRunner -CFG.DATASET_CLS = TimeSeriesForecastingDataset -CFG.DATASET_NAME = "PEMS03" -CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 -CFG.DATASET_OUTPUT_LEN = 336 -CFG.GPU_NUM = 1 -CFG.NULL_VAL = 0.0 - -# ================= environment ================= # -CFG.ENV = EasyDict() -CFG.ENV.SEED = 0 -CFG.ENV.CUDNN = EasyDict() -CFG.ENV.CUDNN.ENABLED = True - -# ================= model ================= # -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "Informer" -CFG.MODEL.ARCH = Informer -NUM_NODES = 358 -CFG.MODEL.PARAM = EasyDict( - { - "enc_in": NUM_NODES, # num nodes - "dec_in": NUM_NODES, - "c_out": NUM_NODES, - "seq_len": CFG.DATASET_INPUT_LEN, # input sequence length - "label_len": CFG.DATASET_INPUT_LEN/2, # start token length used in decoder - "out_len": CFG.DATASET_OUTPUT_LEN, # prediction sequence length\ - "factor": 3, # probsparse attn factor - "d_model": 512, - "n_heads": 8, - "e_layers": 2, # num of encoder layers - # "e_layers": [4, 2, 1], # for InformerStack - "d_layers": 1, # num of decoder layers - "d_ff": 2048, - "dropout": 0.05, - "attn": 'prob', # attention used in encoder, options:[prob, full] - "embed": "timeF", # [timeF, fixed, learned] - "activation": "gelu", - "output_attention": False, - "distil": True, # whether to use distilling in encoder, using this argument means not using distilling - "mix": True, # use mix attention in generative decoder - "num_time_features": 2, # number of used time features [time_of_day, day_of_week, day_of_month, day_of_year] - "time_of_day_size": 288, - "day_of_week_size": 7, - "day_of_month_size": 31, - "day_of_year_size": 366 - } -) -CFG.MODEL.FORWARD_FEATURES = [0, 1, 2] # [raw_data, time_of_day, day_of_week, day_of_month, day_of_year] -CFG.MODEL.TARGET_FEATURES = [0] - -# ================= optim ================= # -CFG.TRAIN = EasyDict() -CFG.TRAIN.LOSS = masked_mae -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM = { - "lr": 0.002, - "weight_decay": 0.0005, -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM = { - "milestones": [1, 25, 50], - "gamma": 0.5 -} - -# ================= train ================= # -CFG.TRAIN.CLIP_GRAD_PARAM = { - 'max_norm': 5.0 -} -CFG.TRAIN.NUM_EPOCHS = 100 -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -# train data -CFG.TRAIN.DATA = EasyDict() -# read data -CFG.TRAIN.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.TRAIN.DATA.BATCH_SIZE = 64 -CFG.TRAIN.DATA.PREFETCH = False -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = 2 -CFG.TRAIN.DATA.PIN_MEMORY = False - -# ================= validate ================= # -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -# validating data -CFG.VAL.DATA = EasyDict() -# read data -CFG.VAL.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.VAL.DATA.BATCH_SIZE = 64 -CFG.VAL.DATA.PREFETCH = False -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = 2 -CFG.VAL.DATA.PIN_MEMORY = False - -# ================= test ================= # -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -# test data -CFG.TEST.DATA = EasyDict() -# read data -CFG.TEST.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.TEST.DATA.BATCH_SIZE = 64 -CFG.TEST.DATA.PREFETCH = False -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = 2 -CFG.TEST.DATA.PIN_MEMORY = False - -# ================= evaluate ================= # -CFG.EVAL = EasyDict() -CFG.EVAL.USE_GPU = False -CFG.EVAL.HORIZONS = [12, 24, 48, 96, 192, 288, 336] diff --git a/baselines/Informer/PEMS04.py b/baselines/Informer/PEMS04.py index e83b731c..9905a4cb 100644 --- a/baselines/Informer/PEMS04.py +++ b/baselines/Informer/PEMS04.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS04" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/Informer/PEMS08.py b/baselines/Informer/PEMS08.py index e0b16b4c..ee8d7ce3 100644 --- a/baselines/Informer/PEMS08.py +++ b/baselines/Informer/PEMS08.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS08" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/Informer/Weather.py b/baselines/Informer/Weather.py index 08d76b54..fb26d8bb 100644 --- a/baselines/Informer/Weather.py +++ b/baselines/Informer/Weather.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Weather" CFG.DATASET_TYPE = "Weather" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 # the best in {96, 192, 336, 720} CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/PatchTST/ETTh2.py b/baselines/PatchTST/ETTh2.py index c0c49d8f..49ab3975 100644 --- a/baselines/PatchTST/ETTh2.py +++ b/baselines/PatchTST/ETTh2.py @@ -40,11 +40,11 @@ "seq_len": CFG.DATASET_INPUT_LEN, # input sequence length "pred_len": CFG.DATASET_OUTPUT_LEN, # prediction sequence length "e_layers": 3, # num of encoder layers - "n_heads": 4, - "d_model": 16, - "d_ff": 128, - "dropout": 0.3, - "fc_dropout": 0.3, + "n_heads": 16, + "d_model": 128, + "d_ff": 256, + "dropout": 0.2, + "fc_dropout": 0.2, "head_dropout": 0.0, "patch_len": 16, "stride": 8, diff --git a/baselines/PatchTST/ETTm1.py b/baselines/PatchTST/ETTm1.py index c9193a1e..eb6d60b3 100644 --- a/baselines/PatchTST/ETTm1.py +++ b/baselines/PatchTST/ETTm1.py @@ -40,11 +40,11 @@ "seq_len": CFG.DATASET_INPUT_LEN, # input sequence length "pred_len": CFG.DATASET_OUTPUT_LEN, # prediction sequence length "e_layers": 3, # num of encoder layers - "n_heads": 4, - "d_model": 16, - "d_ff": 128, - "dropout": 0.3, - "fc_dropout": 0.3, + "n_heads": 16, + "d_model": 128, + "d_ff": 256, + "dropout": 0.2, + "fc_dropout": 0.2, "head_dropout": 0.0, "patch_len": 16, "stride": 8, diff --git a/baselines/PatchTST/ETTm2.py b/baselines/PatchTST/ETTm2.py index 87cc531b..30bd3c73 100644 --- a/baselines/PatchTST/ETTm2.py +++ b/baselines/PatchTST/ETTm2.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/PatchTST/Electricity.py b/baselines/PatchTST/Electricity.py index 1875395d..a80d8bf0 100644 --- a/baselines/PatchTST/Electricity.py +++ b/baselines/PatchTST/Electricity.py @@ -33,18 +33,18 @@ CFG.MODEL = EasyDict() CFG.MODEL.NAME = "PatchTST" CFG.MODEL.ARCH = PatchTST -NUM_NODES = 8 +NUM_NODES = 321 CFG.MODEL.PARAM = EasyDict( { "enc_in": NUM_NODES, # num nodes "seq_len": CFG.DATASET_INPUT_LEN, # input sequence length "pred_len": CFG.DATASET_OUTPUT_LEN, # prediction sequence length "e_layers": 3, # num of encoder layers - "n_heads": 4, - "d_model": 16, - "d_ff": 128, - "dropout": 0.3, - "fc_dropout": 0.3, + "n_heads": 16, + "d_model": 128, + "d_ff": 256, + "dropout": 0.2, + "fc_dropout": 0.2, "head_dropout": 0.0, "patch_len": 16, "stride": 8, diff --git a/baselines/PatchTST/METR-LA.py b/baselines/PatchTST/METR-LA.py deleted file mode 100644 index aacd6f9a..00000000 --- a/baselines/PatchTST/METR-LA.py +++ /dev/null @@ -1,130 +0,0 @@ -import os -import sys - -# TODO: remove it when basicts can be installed by pip -sys.path.append(os.path.abspath(__file__ + "/../../..")) -from easydict import EasyDict -from basicts.runners import SimpleTimeSeriesForecastingRunner -from basicts.data import TimeSeriesForecastingDataset -from basicts.metrics import masked_mse, masked_mae - -from .arch import PatchTST - -CFG = EasyDict() - -# ================= general ================= # -CFG.DESCRIPTION = "PatchTST model configuration" -CFG.RUNNER = SimpleTimeSeriesForecastingRunner -CFG.DATASET_CLS = TimeSeriesForecastingDataset -CFG.DATASET_NAME = "METR-LA" -CFG.DATASET_TYPE = "Traffic Speed" -CFG.DATASET_INPUT_LEN = 336 -CFG.DATASET_OUTPUT_LEN = 336 -CFG.GPU_NUM = 1 -CFG.NULL_VAL = 0.0 - -# ================= environment ================= # -CFG.ENV = EasyDict() -CFG.ENV.SEED = 0 -CFG.ENV.CUDNN = EasyDict() -CFG.ENV.CUDNN.ENABLED = True - -# ================= model ================= # -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "PatchTST" -CFG.MODEL.ARCH = PatchTST -NUM_NODES = 207 -CFG.MODEL.PARAM = EasyDict( - { - "enc_in": NUM_NODES, # num nodes - "seq_len": CFG.DATASET_INPUT_LEN, # input sequence length - "pred_len": CFG.DATASET_OUTPUT_LEN, # prediction sequence length - "e_layers": 3, # num of encoder layers - "n_heads": 16, - "d_model": 128, - "d_ff": 256, - "dropout": 0.2, - "fc_dropout": 0.2, - "head_dropout": 0.0, - "patch_len": 16, - "stride": 8, - "individual": 0, # individual head; True 1 False 0 - "padding_patch": "end", # None: None; end: padding on the end - "revin": 1, # RevIN; True 1 False 0 - "affine": 0, # RevIN-affine; True 1 False 0 - "subtract_last": 0, # 0: subtract mean; 1: subtract last - "decomposition": 0, # decomposition; True 1 False 0 - "kernel_size": 25, # decomposition-kernel - } -) -CFG.MODEL.FORWARD_FEATURES = [0] # [raw_data, time_of_day, day_of_week, day_of_month, day_of_year] -CFG.MODEL.TARGET_FEATURES = [0] - -# ================= optim ================= # -CFG.TRAIN = EasyDict() -CFG.TRAIN.LOSS = masked_mae -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM = { - "lr": 0.001, - "weight_decay": 0.0005, -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM = { - "milestones": [1, 25, 50], - "gamma": 0.5 -} - -# ================= train ================= # -CFG.TRAIN.CLIP_GRAD_PARAM = { - 'max_norm': 5.0 -} -CFG.TRAIN.NUM_EPOCHS = 100 -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -# train data -CFG.TRAIN.DATA = EasyDict() -# read data -CFG.TRAIN.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.TRAIN.DATA.BATCH_SIZE = 16 -CFG.TRAIN.DATA.PREFETCH = False -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = 2 -CFG.TRAIN.DATA.PIN_MEMORY = False - -# ================= validate ================= # -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -# validating data -CFG.VAL.DATA = EasyDict() -# read data -CFG.VAL.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.VAL.DATA.BATCH_SIZE = 64 -CFG.VAL.DATA.PREFETCH = False -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = 2 -CFG.VAL.DATA.PIN_MEMORY = False - -# ================= test ================= # -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -# test data -CFG.TEST.DATA = EasyDict() -# read data -CFG.TEST.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.TEST.DATA.BATCH_SIZE = 64 -CFG.TEST.DATA.PREFETCH = False -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = 2 -CFG.TEST.DATA.PIN_MEMORY = False - -# ================= evaluate ================= # -CFG.EVAL = EasyDict() -CFG.EVAL.USE_GPU = False -CFG.EVAL.HORIZONS = [12, 24, 48, 96, 192, 288, 336] diff --git a/baselines/PatchTST/PEMS-BAY.py b/baselines/PatchTST/PEMS-BAY.py deleted file mode 100644 index 4e0c4f2a..00000000 --- a/baselines/PatchTST/PEMS-BAY.py +++ /dev/null @@ -1,130 +0,0 @@ -import os -import sys - -# TODO: remove it when basicts can be installed by pip -sys.path.append(os.path.abspath(__file__ + "/../../..")) -from easydict import EasyDict -from basicts.runners import SimpleTimeSeriesForecastingRunner -from basicts.data import TimeSeriesForecastingDataset -from basicts.metrics import masked_mse, masked_mae - -from .arch import PatchTST - -CFG = EasyDict() - -# ================= general ================= # -CFG.DESCRIPTION = "PatchTST model configuration" -CFG.RUNNER = SimpleTimeSeriesForecastingRunner -CFG.DATASET_CLS = TimeSeriesForecastingDataset -CFG.DATASET_NAME = "PEMS-BAY" -CFG.DATASET_TYPE = "Traffic Speed" -CFG.DATASET_INPUT_LEN = 336 -CFG.DATASET_OUTPUT_LEN = 336 -CFG.GPU_NUM = 1 -CFG.NULL_VAL = 0.0 - -# ================= environment ================= # -CFG.ENV = EasyDict() -CFG.ENV.SEED = 0 -CFG.ENV.CUDNN = EasyDict() -CFG.ENV.CUDNN.ENABLED = True - -# ================= model ================= # -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "PatchTST" -CFG.MODEL.ARCH = PatchTST -NUM_NODES = 325 -CFG.MODEL.PARAM = EasyDict( - { - "enc_in": NUM_NODES, # num nodes - "seq_len": CFG.DATASET_INPUT_LEN, # input sequence length - "pred_len": CFG.DATASET_OUTPUT_LEN, # prediction sequence length - "e_layers": 3, # num of encoder layers - "n_heads": 16, - "d_model": 128, - "d_ff": 256, - "dropout": 0.2, - "fc_dropout": 0.2, - "head_dropout": 0.0, - "patch_len": 16, - "stride": 8, - "individual": 0, # individual head; True 1 False 0 - "padding_patch": "end", # None: None; end: padding on the end - "revin": 1, # RevIN; True 1 False 0 - "affine": 0, # RevIN-affine; True 1 False 0 - "subtract_last": 0, # 0: subtract mean; 1: subtract last - "decomposition": 0, # decomposition; True 1 False 0 - "kernel_size": 25, # decomposition-kernel - } -) -CFG.MODEL.FORWARD_FEATURES = [0] # [raw_data, time_of_day, day_of_week, day_of_month, day_of_year] -CFG.MODEL.TARGET_FEATURES = [0] - -# ================= optim ================= # -CFG.TRAIN = EasyDict() -CFG.TRAIN.LOSS = masked_mae -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM = { - "lr": 0.001, - "weight_decay": 0.0005, -} -CFG.TRAIN.LR_SCHEDULER = EasyDict() -CFG.TRAIN.LR_SCHEDULER.TYPE = "MultiStepLR" -CFG.TRAIN.LR_SCHEDULER.PARAM = { - "milestones": [1, 25], - "gamma": 0.5 -} - -# ================= train ================= # -CFG.TRAIN.CLIP_GRAD_PARAM = { - 'max_norm': 5.0 -} -CFG.TRAIN.NUM_EPOCHS = 50 -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - 'checkpoints', - '_'.join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -# train data -CFG.TRAIN.DATA = EasyDict() -# read data -CFG.TRAIN.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.TRAIN.DATA.BATCH_SIZE = 16 -CFG.TRAIN.DATA.PREFETCH = False -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = 2 -CFG.TRAIN.DATA.PIN_MEMORY = False - -# ================= validate ================= # -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -# validating data -CFG.VAL.DATA = EasyDict() -# read data -CFG.VAL.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.VAL.DATA.BATCH_SIZE = 16 -CFG.VAL.DATA.PREFETCH = False -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = 2 -CFG.VAL.DATA.PIN_MEMORY = False - -# ================= test ================= # -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -# test data -CFG.TEST.DATA = EasyDict() -# read data -CFG.TEST.DATA.DIR = 'datasets/' + CFG.DATASET_NAME -# dataloader args, optional -CFG.TEST.DATA.BATCH_SIZE = 16 -CFG.TEST.DATA.PREFETCH = False -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = 2 -CFG.TEST.DATA.PIN_MEMORY = False - -# ================= evaluate ================= # -CFG.EVAL = EasyDict() -CFG.EVAL.USE_GPU = False -CFG.EVAL.HORIZONS = [12, 24, 48, 96, 192, 288, 336] diff --git a/baselines/PatchTST/PEMS04.py b/baselines/PatchTST/PEMS04.py index 79d8cd95..39570896 100644 --- a/baselines/PatchTST/PEMS04.py +++ b/baselines/PatchTST/PEMS04.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS04" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 @@ -46,8 +46,8 @@ "dropout": 0.2, "fc_dropout": 0.2, "head_dropout": 0.0, - "patch_len": 16, - "stride": 8, + "patch_len": 32, + "stride": 16, "individual": 0, # individual head; True 1 False 0 "padding_patch": "end", # None: None; end: padding on the end "revin": 1, # RevIN; True 1 False 0 diff --git a/baselines/PatchTST/PEMS08.py b/baselines/PatchTST/PEMS08.py index ddb22efe..b592025c 100644 --- a/baselines/PatchTST/PEMS08.py +++ b/baselines/PatchTST/PEMS08.py @@ -18,7 +18,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS08" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 720 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 @@ -46,8 +46,8 @@ "dropout": 0.2, "fc_dropout": 0.2, "head_dropout": 0.0, - "patch_len": 16, - "stride": 8, + "patch_len": 32, + "stride": 16, "individual": 0, # individual head; True 1 False 0 "padding_patch": "end", # None: None; end: padding on the end "revin": 1, # RevIN; True 1 False 0 diff --git a/baselines/Pyraformer/ETTh1.py b/baselines/Pyraformer/ETTh1.py index ee17444e..53d34407 100644 --- a/baselines/Pyraformer/ETTh1.py +++ b/baselines/Pyraformer/ETTh1.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Pyraformer/ETTh2.py b/baselines/Pyraformer/ETTh2.py index 68533a08..98d7090c 100644 --- a/baselines/Pyraformer/ETTh2.py +++ b/baselines/Pyraformer/ETTh2.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTh2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Pyraformer/ETTm1.py b/baselines/Pyraformer/ETTm1.py index fc40694d..c4b1e07a 100644 --- a/baselines/Pyraformer/ETTm1.py +++ b/baselines/Pyraformer/ETTm1.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm1" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -59,7 +59,7 @@ "use_tvm": False, "embed": "DataEmbedding", "num_time_features": 4, - "time_of_day_size": 24 * 4, + "time_of_day_size": 24, "day_of_week_size": 7, "day_of_month_size": 31, "day_of_year_size": 366 diff --git a/baselines/Pyraformer/ETTm2.py b/baselines/Pyraformer/ETTm2.py index 4b6f5a2c..97e9af10 100644 --- a/baselines/Pyraformer/ETTm2.py +++ b/baselines/Pyraformer/ETTm2.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ETTm2" CFG.DATASET_TYPE = "Electricity Transformer Temperature" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -59,7 +59,7 @@ "use_tvm": False, "embed": "DataEmbedding", "num_time_features": 4, - "time_of_day_size": 24 * 4, + "time_of_day_size": 24, "day_of_week_size": 7, "day_of_month_size": 31, "day_of_year_size": 366 diff --git a/baselines/Pyraformer/Electricity.py b/baselines/Pyraformer/Electricity.py index fdb01a82..a36cb9f1 100644 --- a/baselines/Pyraformer/Electricity.py +++ b/baselines/Pyraformer/Electricity.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Electricity" CFG.DATASET_TYPE = "Electricity Consumption" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False @@ -59,7 +59,7 @@ "use_tvm": False, "embed": "DataEmbedding", "num_time_features": 4, - "time_of_day_size": 24, + "time_of_day_size": 144, "day_of_week_size": 7, "day_of_month_size": 31, "day_of_year_size": 366 diff --git a/baselines/Pyraformer/ExchangeRate.py b/baselines/Pyraformer/ExchangeRate.py index 86650695..cf40c382 100644 --- a/baselines/Pyraformer/ExchangeRate.py +++ b/baselines/Pyraformer/ExchangeRate.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "ExchangeRate" CFG.DATASET_TYPE = "Exchange Rate" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 192 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False diff --git a/baselines/Pyraformer/METR-LA.py b/baselines/Pyraformer/METR-LA.py deleted file mode 100644 index d1c03824..00000000 --- a/baselines/Pyraformer/METR-LA.py +++ /dev/null @@ -1,125 +0,0 @@ -import os -import sys - -# TODO: remove it when basicts can be installed by pip -sys.path.append(os.path.abspath(__file__ + "/../../..")) -from easydict import EasyDict -import torch - -from basicts.runners import SimpleTimeSeriesForecastingRunner -from basicts.data import TimeSeriesForecastingDataset -from basicts.metrics import masked_mse, masked_mae - -from .arch import Pyraformer - -CFG = EasyDict() - -# ================= general ================= # -CFG.DESCRIPTION = "Pyraformer model configuration" -CFG.RUNNER = SimpleTimeSeriesForecastingRunner -CFG.DATASET_CLS = TimeSeriesForecastingDataset -CFG.DATASET_NAME = "METR-LA" -CFG.DATASET_TYPE = "Traffic Speed" -CFG.DATASET_INPUT_LEN = 336 -CFG.DATASET_OUTPUT_LEN = 336 -CFG.GPU_NUM = 1 - -# ================= environment ================= # -CFG.ENV = EasyDict() -CFG.ENV.SEED = 0 -CFG.ENV.CUDNN = EasyDict() -CFG.ENV.CUDNN.ENABLED = True - -# ================= model ================= # -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "Pyraformer" -CFG.MODEL.ARCH = Pyraformer -NUM_NODES = 207 -CFG.MODEL.PARAM = EasyDict( - { - "enc_in": NUM_NODES, # num nodes - "dec_in": NUM_NODES, - "c_out": NUM_NODES, - "input_size": CFG.DATASET_INPUT_LEN, - "predict_step": CFG.DATASET_OUTPUT_LEN, - "d_model": 512, - "d_inner_hid": 512, - "d_k": 128, - "d_v": 128, - "d_bottleneck": 128, - "n_head": 4, - "n_layer": 4, - "dropout": 0.05, - "decoder": "FC", # FC or attention - "window_size": "[2, 2, 2]", - "inner_size": 5, - "CSCM": "Bottleneck_Construct", - "truncate": False, - "use_tvm": False, - "embed": "DataEmbedding", - "num_time_features": 2, - "time_of_day_size": 288, - "day_of_week_size": 7 - } -) -CFG.MODEL.FORWARD_FEATURES = [0, 1, 2] -CFG.MODEL.TARGET_FEATURES = [0] - -# ================= optim ================= # -CFG.TRAIN = EasyDict() -CFG.TRAIN.LOSS = masked_mae -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM = { - "lr": 0.0005 -} - -# ================= train ================= # -CFG.TRAIN.NUM_EPOCHS = 50 -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - "checkpoints", - "_".join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -# train data -CFG.TRAIN.DATA = EasyDict() -# read data -CFG.TRAIN.DATA.DIR = "datasets/" + CFG.DATASET_NAME -# dataloader args, optional -CFG.TRAIN.DATA.BATCH_SIZE = 64 -CFG.TRAIN.DATA.PREFETCH = False -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = 10 -CFG.TRAIN.DATA.PIN_MEMORY = False - -# ================= validate ================= # -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -# validating data -CFG.VAL.DATA = EasyDict() -# read data -CFG.VAL.DATA.DIR = "datasets/" + CFG.DATASET_NAME -# dataloader args, optional -CFG.VAL.DATA.BATCH_SIZE = 64 -CFG.VAL.DATA.PREFETCH = False -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = 2 -CFG.VAL.DATA.PIN_MEMORY = False - -# ================= test ================= # -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -# test data -CFG.TEST.DATA = EasyDict() -# read data -CFG.TEST.DATA.DIR = "datasets/" + CFG.DATASET_NAME -# dataloader args, optional -CFG.TEST.DATA.BATCH_SIZE = 64 -CFG.TEST.DATA.PREFETCH = False -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = 2 -CFG.TEST.DATA.PIN_MEMORY = False - -# ================= evaluate ================= # -CFG.EVAL = EasyDict() -CFG.EVAL.USE_GPU = False -CFG.EVAL.HORIZONS = [12, 24, 48, 96, 192, 288, 336] diff --git a/baselines/Pyraformer/PEMS-BAY.py b/baselines/Pyraformer/PEMS-BAY.py deleted file mode 100644 index 4e9aa27e..00000000 --- a/baselines/Pyraformer/PEMS-BAY.py +++ /dev/null @@ -1,125 +0,0 @@ -import os -import sys - -# TODO: remove it when basicts can be installed by pip -sys.path.append(os.path.abspath(__file__ + "/../../..")) -from easydict import EasyDict -import torch - -from basicts.runners import SimpleTimeSeriesForecastingRunner -from basicts.data import TimeSeriesForecastingDataset -from basicts.metrics import masked_mse, masked_mae - -from .arch import Pyraformer - -CFG = EasyDict() - -# ================= general ================= # -CFG.DESCRIPTION = "Pyraformer model configuration" -CFG.RUNNER = SimpleTimeSeriesForecastingRunner -CFG.DATASET_CLS = TimeSeriesForecastingDataset -CFG.DATASET_NAME = "PEMS-BAY" -CFG.DATASET_TYPE = "Traffic Speed" -CFG.DATASET_INPUT_LEN = 336 -CFG.DATASET_OUTPUT_LEN = 336 -CFG.GPU_NUM = 1 - -# ================= environment ================= # -CFG.ENV = EasyDict() -CFG.ENV.SEED = 0 -CFG.ENV.CUDNN = EasyDict() -CFG.ENV.CUDNN.ENABLED = True - -# ================= model ================= # -CFG.MODEL = EasyDict() -CFG.MODEL.NAME = "Pyraformer" -CFG.MODEL.ARCH = Pyraformer -NUM_NODES = 325 -CFG.MODEL.PARAM = EasyDict( - { - "enc_in": NUM_NODES, # num nodes - "dec_in": NUM_NODES, - "c_out": NUM_NODES, - "input_size": CFG.DATASET_INPUT_LEN, - "predict_step": CFG.DATASET_OUTPUT_LEN, - "d_model": 512, - "d_inner_hid": 512, - "d_k": 128, - "d_v": 128, - "d_bottleneck": 128, - "n_head": 4, - "n_layer": 4, - "dropout": 0.05, - "decoder": "FC", # FC or attention - "window_size": "[2, 2, 2]", - "inner_size": 5, - "CSCM": "Bottleneck_Construct", - "truncate": False, - "use_tvm": False, - "embed": "DataEmbedding", - "num_time_features": 2, - "time_of_day_size": 288, - "day_of_week_size": 7, - } -) -CFG.MODEL.FORWARD_FEATURES = [0, 1, 2] -CFG.MODEL.TARGET_FEATURES = [0] - -# ================= optim ================= # -CFG.TRAIN = EasyDict() -CFG.TRAIN.LOSS = masked_mae -CFG.TRAIN.OPTIM = EasyDict() -CFG.TRAIN.OPTIM.TYPE = "Adam" -CFG.TRAIN.OPTIM.PARAM = { - "lr": 0.0005 -} - -# ================= train ================= # -CFG.TRAIN.NUM_EPOCHS = 50 -CFG.TRAIN.CKPT_SAVE_DIR = os.path.join( - "checkpoints", - "_".join([CFG.MODEL.NAME, str(CFG.TRAIN.NUM_EPOCHS)]) -) -# train data -CFG.TRAIN.DATA = EasyDict() -# read data -CFG.TRAIN.DATA.DIR = "datasets/" + CFG.DATASET_NAME -# dataloader args, optional -CFG.TRAIN.DATA.BATCH_SIZE = 64 -CFG.TRAIN.DATA.PREFETCH = False -CFG.TRAIN.DATA.SHUFFLE = True -CFG.TRAIN.DATA.NUM_WORKERS = 10 -CFG.TRAIN.DATA.PIN_MEMORY = False - -# ================= validate ================= # -CFG.VAL = EasyDict() -CFG.VAL.INTERVAL = 1 -# validating data -CFG.VAL.DATA = EasyDict() -# read data -CFG.VAL.DATA.DIR = "datasets/" + CFG.DATASET_NAME -# dataloader args, optional -CFG.VAL.DATA.BATCH_SIZE = 16 -CFG.VAL.DATA.PREFETCH = False -CFG.VAL.DATA.SHUFFLE = False -CFG.VAL.DATA.NUM_WORKERS = 2 -CFG.VAL.DATA.PIN_MEMORY = False - -# ================= test ================= # -CFG.TEST = EasyDict() -CFG.TEST.INTERVAL = 1 -# test data -CFG.TEST.DATA = EasyDict() -# read data -CFG.TEST.DATA.DIR = "datasets/" + CFG.DATASET_NAME -# dataloader args, optional -CFG.TEST.DATA.BATCH_SIZE = 16 -CFG.TEST.DATA.PREFETCH = False -CFG.TEST.DATA.SHUFFLE = False -CFG.TEST.DATA.NUM_WORKERS = 2 -CFG.TEST.DATA.PIN_MEMORY = False - -# ================= evaluate ================= # -CFG.EVAL = EasyDict() -CFG.EVAL.USE_GPU = False -CFG.EVAL.HORIZONS = [12, 24, 48, 96, 192, 288, 336] diff --git a/baselines/Pyraformer/PEMS04.py b/baselines/Pyraformer/PEMS04.py index 2107a8cd..edd265f6 100644 --- a/baselines/Pyraformer/PEMS04.py +++ b/baselines/Pyraformer/PEMS04.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS04" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/Pyraformer/PEMS08.py b/baselines/Pyraformer/PEMS08.py index 89b01828..c7fd9f21 100644 --- a/baselines/Pyraformer/PEMS08.py +++ b/baselines/Pyraformer/PEMS08.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "PEMS08" CFG.DATASET_TYPE = "Traffic Flow" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 CFG.NULL_VAL = 0.0 diff --git a/baselines/Pyraformer/Weather.py b/baselines/Pyraformer/Weather.py index 80d37ec0..f4ae15b6 100644 --- a/baselines/Pyraformer/Weather.py +++ b/baselines/Pyraformer/Weather.py @@ -20,7 +20,7 @@ CFG.DATASET_CLS = TimeSeriesForecastingDataset CFG.DATASET_NAME = "Weather" CFG.DATASET_TYPE = "Weather Data" -CFG.DATASET_INPUT_LEN = 336 +CFG.DATASET_INPUT_LEN = 96 CFG.DATASET_OUTPUT_LEN = 336 CFG.GPU_NUM = 1 # CFG.RESCALE = False