• Gift Sinthong's avatar
    [time series] Add PatchTST (#25927) · 2ac5b932
    Gift Sinthong authored
    
    
    * Initial commit of PatchTST model classes
    
    Co-authored-by: default avatarPhanwadee Sinthong <phsinthong@gmail.com>
    Co-authored-by: default avatarNam Nguyen <namctin@gmail.com>
    Co-authored-by: default avatarVijay Ekambaram <vijaykr.e@gmail.com>
    Co-authored-by: default avatarNgoc Diep Do <55230119+diepi@users.noreply.github.com>
    Co-authored-by: default avatarWesley Gifford <79663411+wgifford@users.noreply.github.com>
    
    * Add PatchTSTForPretraining
    
    * update to include classification
    
    Co-authored-by: default avatarPhanwadee Sinthong <phsinthong@gmail.com>
    Co-authored-by: default avatarNam Nguyen <namctin@gmail.com>
    Co-authored-by: default avatarVijay Ekambaram <vijaykr.e@gmail.com>
    Co-authored-by: default avatarNgoc Diep Do <55230119+diepi@users.noreply.github.com>
    Co-authored-by: default avatarWesley Gifford <79663411+wgifford@users.noreply.github.com>
    
    * clean up auto files
    
    * Add PatchTSTForPrediction
    
    * Fix relative import
    
    * Replace original PatchTSTEncoder with ChannelAttentionPatchTSTEncoder
    
    * temporary adding absolute path + add PatchTSTForForecasting class
    
    * Update base PatchTSTModel + Unittest
    
    * Update ForecastHead to use the config class
    
    * edit cv_random_masking, add mask to model output
    
    * Update configuration_patchtst.py
    
    * add masked_loss to the pretraining
    
    * add PatchEmbeddings
    
    * Update configuration_patchtst.py
    
    * edit loss which considers mask in the pretraining
    
    * remove patch_last option
    
    * Add commits from internal repo
    
    * Update ForecastHead
    
    * Add model weight initilization + unittest
    
    * Update PatchTST unittest to use local import
    
    * PatchTST integration tests for pretraining and prediction
    
    * Added PatchTSTForRegression + update unittest to include label generation
    
    * Revert unrelated model test file
    
    * Combine similar output classes
    
    * update PredictionHead
    
    * Update configuration_patchtst.py
    
    * Add Revin
    
    * small edit to PatchTSTModelOutputWithNoAttention
    
    * Update modeling_patchtst.py
    
    * Updating integration test for forecasting
    
    * Fix unittest after class structure changed
    
    * docstring updates
    
    * change input_size to num_input_channels
    
    * more formatting
    
    * Remove some unused params
    
    * Add a comment for pretrained models
    
    * add channel_attention option
    
    add channel_attention option and remove unused positional encoders.
    
    * Update PatchTST models to use HF's MultiHeadAttention module
    
    * Update paper + github urls
    
    * Fix hidden_state return value
    
    * Update integration test to use PatchTSTForForecasting
    
    * Adding dataclass decorator for model output classes
    
    * Run fixup script
    
    * Rename model repos for integration test
    
    * edit argument explanation
    
    * change individual option to shared_projection
    
    * style
    
    * Rename integration test + import cleanup
    
    * Fix outpu_hidden_states return value
    
    * removed unused mode
    
    * added std, mean and nops scaler
    
    * add initial distributional loss for predition
    
    * fix typo in docs
    
    * add generate function
    
    * formatting
    
    * add num_parallel_samples
    
    * Fix a typo
    
    * copy weighted_average function, edit PredictionHead
    
    * edit PredictionHead
    
    * add distribution head to forecasting
    
    * formatting
    
    * Add generate function for forecasting
    
    * Add generate function to prediction task
    
    * formatting
    
    * use argsort
    
    * add past_observed_mask ordering
    
    * fix arguments
    
    * docs
    
    * add back test_model_outputs_equivalence test
    
    * formatting
    
    * cleanup
    
    * formatting
    
    * use ACT2CLS
    
    * formatting
    
    * fix add_start_docstrings decorator
    
    * add distribution head and generate function to regression task
    
    add distribution head and generate function to regression task. Also made add PatchTSTForForecastingOutput,  PatchTSTForRegressionOutput.
    
    * add distribution head and generate function to regression task
    
    add distribution head and generate function to regression task. Also made add PatchTSTForForecastingOutput,  PatchTSTForRegressionOutput.
    
    * fix typos
    
    * add forecast_masking
    
    * fixed tests
    
    * use set_seed
    
    * fix doc test
    
    * formatting
    
    * Update docs/source/en/model_doc/patchtst.md
    
    Co-authored-by: default avatarNielsRogge <48327001+NielsRogge@users.noreply.github.com>
    
    * better var names
    
    * rename PatchTSTTranspose
    
    * fix argument names and docs string
    
    * remove compute_num_patches and unused class
    
    * remove assert
    
    * renamed to PatchTSTMasking
    
    * use num_labels for classification
    
    * use num_labels
    
    * use default num_labels from super class
    
    * move model_type after docstring
    
    * renamed PatchTSTForMaskPretraining
    
    * bs -> batch_size
    
    * more review fixes
    
    * use hidden_state
    
    * rename encoder layer and block class
    
    * remove commented seed_number
    
    * edit docstring
    
    * Add docstring
    
    * formatting
    
    * use past_observed_mask
    
    * doc suggestion
    
    * make fix-copies
    
    * use Args:
    
    * add docstring
    
    * add docstring
    
    * change some variable names and add PatchTST before some class names
    
    * formatting
    
    * fix argument types
    
    * fix tests
    
    * change x variable to patch_input
    
    * format
    
    * formatting
    
    * fix-copies
    
    * Update tests/models/patchtst/test_modeling_patchtst.py
    
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    
    * move loss to forward
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    
    * formatting
    
    * fix a bug when pre_norm is set to True
    
    * output_hidden_states is set to False as default
    
    * set pre_norm=True as default
    
    * format docstring
    
    * format
    
    * output_hidden_states is None by default
    
    * add missing docs
    
    * better var names
    
    * docstring: remove default to False in output_hidden_states
    
    * change labels name to target_values in regression task
    
    * format
    
    * fix tests
    
    * change to forecast_mask_ratios and random_mask_ratio
    
    * change mask names
    
    * change future_values to target_values param in the prediction class
    
    * remove nn.Sequential and make PatchTSTBatchNorm class
    
    * black
    
    * fix argument name for prediction
    
    * add output_attentions option
    
    * add output_attentions to PatchTSTEncoder
    
    * formatting
    
    * Add attention output option to all classes
    
    * Remove PatchTSTEncoderBlock
    
    * create PatchTSTEmbedding class
    
    * use config in PatchTSTPatchify
    
    * Use config in PatchTSTMasking class
    
    * add channel_attn_weights
    
    * Add PatchTSTScaler class
    
    * add output_attentions arg to test function
    
    * format
    
    * Update doc with image patchtst.md
    
    * fix-copies
    
    * rename Forecast <-> Prediction
    
    * change name of a few parameters to match with PatchTSMixer.
    
    * Remove *ForForecasting class to match with other time series models.
    
    * make style
    
    * Remove PatchTSTForForecasting in the test
    
    * remove PatchTSTForForecastingOutput class
    
    * change test_forecast_head to test_prediction_head
    
    * style
    
    * fix docs
    
    * fix tests
    
    * change num_labels to num_targets
    
    * Remove PatchTSTTranspose
    
    * remove arguments in PatchTSTMeanScaler
    
    * remove arguments in PatchTSTStdScaler
    
    * add config as an argument to all the scaler classes
    
    * reformat
    
    * Add norm_eps for batchnorm and layernorm
    
    * reformat.
    
    * reformat
    
    * edit docstring
    
    * update docstring
    
    * change variable name pooling to pooling_type
    
    * fix output_hidden_states as tuple
    
    * fix bug when calling PatchTSTBatchNorm
    
    * change stride to patch_stride
    
    * create PatchTSTPositionalEncoding class and restructure the PatchTSTEncoder
    
    * formatting
    
    * initialize scalers with configs
    
    * edit output_hidden_states
    
    * style
    
    * fix forecast_mask_patches doc string
    
    ---------
    
    Co-authored-by: default avatarGift Sinthong <gift.sinthong@ibm.com>
    Co-authored-by: default avatarNam Nguyen <namctin@gmail.com>
    Co-authored-by: default avatarVijay Ekambaram <vijaykr.e@gmail.com>
    Co-authored-by: default avatarNgoc Diep Do <55230119+diepi@users.noreply.github.com>
    Co-authored-by: default avatarWesley Gifford <79663411+wgifford@users.noreply.github.com>
    Co-authored-by: default avatarWesley M. Gifford <wmgifford@us.ibm.com>
    Co-authored-by: default avatarnnguyen <nnguyen@us.ibm.com>
    Co-authored-by: default avatarNgoc Diep Do <diiepy@gmail.com>
    Co-authored-by: default avatarKashif Rasul <kashif.rasul@gmail.com>
    Co-authored-by: default avatarNielsRogge <48327001+NielsRogge@users.noreply.github.com>
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    2ac5b932