• Kashif Rasul's avatar
    [Time series] Add patchtst (#27581) · af8acc47
    Kashif Rasul authored
    
    
    * 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
    
    * doc improvements
    
    * move summary to the start
    
    * typo
    
    * fix docstring
    
    * turn off masking when using prediction, regression, classification
    
    * return scaled output
    
    * adjust output when using distribution head
    
    * remove _num_patches function in the config
    
    * get config.num_patches from patchifier init
    
    * add output_attentions docstring, remove tuple in output_hidden_states
    
    * change SamplePatchTSTPredictionOutput and SamplePatchTSTRegressionOutput to SamplePatchTSTOutput
    
    * remove print("model_class: ", model_class)
    
    * change encoder_attention_heads to num_attention_heads
    
    * change norm to norm_layer
    
    * change encoder_layers to num_hidden_layers
    
    * change shared_embedding to share_embedding, shared_projection to share_projection
    
    * add output_attentions
    
    * more robust check of norm_type
    
    * change dropout_path to path_dropout
    
    * edit docstring
    
    * remove positional_encoding function and add _init_pe in PatchTSTPositionalEncoding
    
    * edit shape of cls_token and initialize it
    
    * add a check on the num_input_channels.
    
    * edit head_dim in the Prediction class to allow the use of cls_token
    
    * remove some positional_encoding_type options, remove learn_pe arg, initalize pe
    
    * change Exception to ValueError
    
    * format
    
    * norm_type is "batchnorm"
    
    * make style
    
    * change cls_token shape
    
    * Change forecast_mask_patches to num_mask_patches. Remove forecast_mask_ratios.
    
    * Bring PatchTSTClassificationHead on top of PatchTSTForClassification
    
    * change encoder_ffn_dim to ffn_dim and edit the docstring.
    
    * update variable names to match with the config
    
    * add generation tests
    
    * change num_mask_patches to num_forecast_mask_patches
    
    * Add examples explaining the use of these models
    
    * make style
    
    * Revert "Revert "[time series] Add PatchTST (#25927)" (#27486)"
    
    This reverts commit 78f6ed6c
    
    .
    
    * make style
    
    * fix default std scaler's minimum_scale
    
    * fix docstring
    
    * close code blocks
    
    * Update docs/source/en/model_doc/patchtst.md
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update tests/models/patchtst/test_modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/configuration_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * Update src/transformers/models/patchtst/modeling_patchtst.py
    
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    
    * fix tests
    
    * add add_start_docstrings
    
    * move examples to the forward's docstrings
    
    * update prepare_batch
    
    * update test
    
    * fix test_prediction_head
    
    * fix generation test
    
    * use seed to create generator
    
    * add output_hidden_states and config.num_patches
    
    * add loc and scale args in PatchTSTForPredictionOutput
    
    * edit outputs if if not return_dict
    
    * use self.share_embedding to check instead checking type.
    
    * remove seed
    
    * make style
    
    * seed is an optional int
    
    * fix test
    
    * generator device
    
    * Fix assertTrue test
    
    * swap order of items in outputs when return_dict=False.
    
    * add mask_type and random_mask_ratio to unittest
    
    * Update modeling_patchtst.py
    
    * add add_start_docstrings for regression model
    
    * make style
    
    * update model path
    
    * Edit the ValueError comment in forecast_masking
    
    * update examples
    
    * make style
    
    * fix commented code
    
    * update examples: remove config from from_pretrained call
    
    * Edit example outputs
    
    * Set default target_values to None
    
    * remove config setting in regression example
    
    * Update configuration_patchtst.py
    
    * Update configuration_patchtst.py
    
    * remove config from examples
    
    * change default d_model and ffn_dim
    
    * norm_eps default
    
    * set has_attentions to Trye and define self.seq_length = self.num_patche
    
    * update docstring
    
    * change variable mask_input to do_mask_input
    
    * fix blank space.
    
    * change logger.debug to logger.warning.
    
    * remove unused PATCHTST_INPUTS_DOCSTRING
    
    * remove all_generative_model_classes
    
    * set test_missing_keys=True
    
    * remove undefined params in the docstring.
    
    ---------
    
    Co-authored-by: default avatarnnguyen <nnguyen@us.ibm.com>
    Co-authored-by: default avatarNielsRogge <48327001+NielsRogge@users.noreply.github.com>
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    Co-authored-by: default avatarNam Nguyen <namctin@gmail.com>
    Co-authored-by: default avatarWesley Gifford <79663411+wgifford@users.noreply.github.com>
    Co-authored-by: default avataramyeroberts <22614925+amyeroberts@users.noreply.github.com>
    af8acc47