AI4HealthUOL / SSSD

Repository for the paper: 'Diffusion-based Time Series Imputation and Forecasting with Structured State Space Models'
MIT License
270 stars 47 forks source link

How to train on ETTm1 dataset? #18

Closed HarperHao closed 11 months ago

HarperHao commented 1 year ago

Thanks for your wonderful work!

I want to run train.py on ETTm1 dataset. Should I run the ettm1.py under docs/instructions/ETTm1 or should I use the train_ettm1_1056.npy downloaded from MEGA?

As far as I think for myself, ettm1.py should be used, as then it is possible to use the different conditional lengths mentioned in the paper. but in this case, how to modify config_SSSDS4.json?

Looking forward to your response!

juanlopezcode commented 11 months ago

Hello

the train_ettm1_1056.npy file is indeed the dataset for one setting only, if you want to pre-process the dataset with different settings/lengths, please use the ettm1.py file.

the most important attributes you should change are:

{
"diffusion_config":{ "T": 200, "beta_0": 0.0001, "beta_T": 0.02 }, "wavenet_config": { "in_channels": , the number of dimension of your time series samples "out_channels":, the number of dimension of your time series samples "s4_lmax": 100, -> the length of your time series samples }, "train_config": { "ckpt_iter": "max", "n_iters": , -> the number of iterations you want to train the model "learning_rate": 2e-4, "masking": "bm", -> forecasting is bm "missing_k": -> time steps you want to use for blackout(forecast), remember it is an iterative masking of same length }, "trainset_config":{ "train_data_path": "", -> path if want to load from here the data, otherwise load in-file. "test_data_path": "", -> path if want to load from here the data, otherwise load in-file. "segment_length":100, -> desired time series length }, "gen_config":{ "output_directory": "", path for outputs generations "ckpt_path": "/" -> path for saved models, keep '/', usually same than 'output_directory' } }

I hope it helps

HarperHao commented 11 months ago

Thank you for your reply!

But whether the "segment_length" parameter is invalid, I can't find a place in the code to use it.

juanlopezcode commented 11 months ago

you are right, it probably didn't got any function after I modified the code last time, you can just ignore it then