- support to MPS backend. Both the MPS accelerator and the PyTorch backend are still experimental. As such, not all operations are currently supported.
- compatibility with torch 2.2
- ability to pass arch_config to multimodal models
- added Hydra and HydraMultiRocket archs (#800)
-
UCR Dataset download link has been updated (#827)
-
mWDNPlus now supports multidimensional outputs (#802)
-
Fixed import issues with demo code in Readme.MD (#798)
-
added functionality to support inputs with static/ observed (time-dependent) features
-
added functionality to support inputs with categorical/ continuous features
-
added functionality to apply patches to time series models
-
Added
MultiRocket
/MultiRocketPlus
architectures -
added
TSSelfDropout
(#790) -
added
get_feat_idxs
to calculate multimodal indices (#789) -
remaining features assigned to o_cont_idxs by default (#788)
-
added patch encoder to
MultiInputWrapper
(#787) -
added
TSTargetEncoder
transform (#769) -
added
TSRobustScaler
to tfm pipelines (#763) -
added new tfms -
TSDropIfTrueCols
and ApplyFunc (#760) -
tensor slices in different devices when using
TensorSplitter
(#799)
-
mixed augmentations (
MixUp1d
,CutMix1d
,..) are not updating labels (#791) -
get_UCR_data
function fails due to changed download link (#785) -
error when using
TSSelectColumns
due to pandas df slicing (#762) -
short arrays create issues when running
get_usable_idxs
(#761) -
get_X_pred
creates different probablities when using numpy array or torch tensor (#754) -
partial_n
is applied to all datasets by default (#748) -
get_best_dls_params
function still prints output when the verbose parameter is set to false (#737) -
using xresnet for vision classification raises an error (#728)
-
added optional activation to get_X_preds (#715)
-
added external vocab option to dls (#705)
-
allow classification outputs with n dimensions (#704)
-
added get_sweep_config to wandb module (#687)
-
added functionality to run pipeline sweeps (#686)
-
added seed to learners to make training reproducible (#685)
-
added functionality to filter df for required forecasting dates (#679)
-
added option to train model on train only (#671)
-
access all available dataloaders in dls (#724)
-
make all models ending in Plus work with ndim classification targets (#719)
-
make all models ending in Plus work with ndim work with ndim regression/ forecasting targets (#718)
-
added MiniRocket to get_arch (#717)
-
fixed issue with get_arch missing new models (#709)
-
valid_metrics causes an error when using TSLearners (#708)
-
valid_metrics are not shown when an array is passed within splits (#707)
-
TSDatasets w/o tfms and inplace=False creates new X (#695)
-
Prediction and True Values Swapped in plot_forecast (utils.py) (#690)
-
MiniRocket incompatible with latest scikit-learn version (#677)
-
Df2xy causing incorrect splits (#666)
-
Feature Importance & Step Importance Not working (#647)
-
multi-horizon forecasting (#591)
-
Issues saving models with TSMetaDataset Dataloader (#317)
- removed default transforms from TSClassifier, TSRegressor and TSForecaster (#665)
-
add option to pass an instantiated model to TSLearners (#650)
-
Added PatchTST model to tsai (#638)
-
Added new long-term time series forecasting tutorial notebook
-
Undefined variable (#662)
-
Multivariate Regression and Forecasting basic tutorials throw an error (#629)
-
TypeError: init() got an unexpected keyword argument 'custom_head' (#597)
-
Issues with TSMultiLabelClassification (#533)
-
Incompatible errors or missing functions in 'tutorial_nbs' notebooks, please fix. (#447)
-
Saving models with TSUnwindowedDataset Dataloaders: AttributeError: 'TSUnwindowedDataset' object has no attribute 'new_empty' (#215)
-
compatibility with Pytorch 1.13 (#619)
-
added sel_vars to get_robustscale_params (#610)
-
added sel_steps to TSRandom2Value (#607)
-
new walk forward cross-validation in tsai (#582)
-
fixed issue when printing an empty dataset wo transforms NoTfmLists (#622)
-
fixed minor issue in get_robustscaler params with sel_vars (#615)
-
fixed issue when using tsai in dev with VSCode (#614)
-
issue when using lists as sel_vars and sel_steps in TSRandom2Value (#612)
-
fixed issue with feature_importance and step_importance when using metrics (#609)
-
renamed data processing tfms feature_idxs as sel_vars for consistency (#608)
-
fixed issue when importing 'GatedTabTransformer' (#536)
-
replaced TSOneHot preprocessor by TSOneHotEncode using a different API (#502)
-
replaced MultiEmbedding n_embeds, embed_dims and padding_idxs by n_cat_embeds, cat_embed_dims and cat_padding_idxs (#497)
-
added GaussianNoise transform (#514)
-
added TSSequencer model based on Sequencer: Deep LSTM for Image Classification paper (#508)
-
added TSPosition to be able to pass any steps list that will be concatenated to the input (#504)
-
added TSPosition preprocessor to allow the concatenation of a custom position sequence (#503)
-
added TSOneHot class to encode a variable on the fly (#501)
-
added token_size and tokenizer arguments to tsai (#496)
-
SmeLU activation function not found (#495)
-
added example on how to perform inference, partial fit and fine tuning (#491)
-
added get_time_per_batch and get_dl_percent_per_epoch (#489)
-
added TSDropVars used to removed batch variables no longer needed (#488)
-
added SmeLU activation function (#458)
-
Feature request: gMLP and GatedTabTransformer. (#354)
-
Pay Attention to MLPs - gMLP (paper, implementation)
-
The GatedTabTransformer (paper, implementation);
-
after_batch tfms set to empty Pipeline when using dl.new() (#516)
-
00b_How_to_use_numpy_arrays_in_fastai: AttributeError: attribute 'device' of 'torch._C._TensorBase' objects is not writable (#500)
-
getting regression data returns _check_X() argument error (#430)
-
I wonder why only 'Nor' is displayed in dls.show_batch(sharvey=True). (#416)
-
added StratifiedSampler to handle imbalanced datasets (#479)
-
added seq_embed_size and seq_embed arguments to TSiT (#476)
-
added get_idxs_to_keep that can be used to filter indices based on different conditions (#469)
-
added SmeLU activation function (#458)
-
added split_in_chunks (#454)
-
upgraded min Python version to 3.7 (#450)
-
added sampler argument to NumpyDataLoader and TSDataLoader (#436)
-
added TSMask2Value transform which supports multiple masks (#431)
-
added TSRandomStandardize for improved ood generalization (#428)
-
added get_dir_size function (#421)
-
Is there any ways of recording the wrong predictions into a txt files? (#397)
- I am wondering if the net could record the wrong predictions of the dataset? So maybe I can find a pattern from the wrong files and adjust my method of preprocessing data.
-
slow import of MiniRocketMultivariate from sktime (#482)
-
Installing from source fails on Windows (UnicodeDecodeError) (#470)
- Hi everyone,
trying to install the package from source does not work for on Windows 10; it fails with UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position [...]
. The problem also affects other packages (e.g. iitzco/faced#21), but is easily solved by specifying an encoding
in the setup.py
, see PR.
-
TSDataset error oindex is not an attribute (#462)
-
split_in_chunks incorrectly calculated (#455)
-
_check_X() got an unexpected keyword argument 'coerce_to_numpy' (#415)
-
Added function that pads sequences to same length (#410)
-
Added TSRandomStandardize preprocessing technique (#396)
-
New visualization techniques: model's feature importance and step importance (#393)
-
Allow from tsai.basics import * to speed up loading (#320)
- Separate core from non-core dependencies in tsai - pip install tsaiextras. This is an important change that:
- reduces the time to
pip install tsai
- avoid errors during installation
- reduces the time to load tsai using
from tsai.all import *
- reduces the time to
-
updated forward_gaps removing nan_to_num (#331)
-
TSRobustScaler only applied by_var (#329)
-
remove add_na arg from TSCategorize (#327)
-
added IntraClassCutMix1d (#384)
-
added learn.calibrate_model method (#379)
-
added analyze_array function (#378)
-
Added TSAddNan transform (#376)
-
added dummify function to create dummy data from original data (#366)
-
added Locality Self Attention to TSiT (#363)
-
added sel_vars argument to MVP callback (#349)
-
added sel_vars argument to TSNan2Value (#348)
-
added multiclass, weighted FocalLoss (#346)
-
added TSRollingMean batch transform (#343)
-
added recall_at_specificity metric (#342)
-
added train_metrics argument to ts_learner (#341)
-
added hist to PredictionDynamics for binary classification (#339)
-
add padding_idxs to MultiEmbedding (#330)
-
sort_by data may be duplicated in SlidingWindowPanel (#389)
-
create_script splits the nb name if multiple underscores are used (#385)
-
added torch functional dependency to plot_calibration_curve (#383)
-
issue when setting horizon to 0 in SlidingWindow (#382)
-
replace learn by self in calibrate_model patch (#381)
-
Argument
d_head
is not used in TSiTPlus (#380) -
replace default relu activation by gelu in TSiT (#361)
-
sel_vars and sel_steps in TSDatasets and TSDalaloaders don't work when used simultaneously (#347)
-
ShowGraph fails when recoder.train_metrics=True (#340)
-
fixed 'se' always equal to 16 in MLSTM_FCN (#337)
-
ShowGraph doesn't work well when train_metrics=True (#336)
-
TSPositionGaps doesn't work on cuda (#333)
-
XResNet object has no attribute 'backbone' (#332)
-
import InceptionTimePlus in tsai.learner (#328)
-
df2Xy: Format correctly without the need to specify sort_by (#324)
-
bug in MVP code learn.model --> self.learn.model (#323)
-
Colab install issues: importing the lib takes forever (#315)
-
Calling learner.feature_importance on larger than memory dataset causes OOM (#310)
- removed InceptionTSiT, InceptionTSiTPlus, ConvTSiT & ConvTSiTPlus (#276)
-
add stateful custom sklearn API type tfms: TSShrinkDataFrame, TSOneHotEncoder, TSCategoricalEncoder (#313)
-
Pytorch 1.10 compatibility (#311)
-
ability to pad at the start/ end of sequences and filter results in SlidingWindow (#307)
-
added bias_init to TSiT (#288)
-
plot permutation feature importance after a model's been trained (#286)
-
added separable as an option to MultiConv1d (#285)
-
Modified TSiTPlus to accept a feature extractor and/or categorical variables (#278)
-
learn modules takes too long to load (#312)
-
error in roll2d and roll3d when passing index 2 (#304)
-
TypeError: unhashable type: 'numpy.ndarray' (#302)
-
ValueError: only one element tensors can be converted to Python scalars (#300)
-
unhashable type: 'numpy.ndarray' when using multiclass multistep labels (#298)
-
incorrect data types in NumpyDatasets subset (#297)
-
create_future_mask creates a mask in the past (#293)
-
NameError: name 'X' is not defined in learner.feature_importance (#291)
-
TSiT test fails on cuda (#287)
-
MultiConv1d breaks when ni == nf (#284)
-
WeightedPerSampleLoss reported an error when used with LDS_weights (#281)
-
pos_encoding transfer weight in TSiT fails (#280)
-
MultiEmbedding cat_pos and cont_pos are not in state_dict() (#277)
- removed torch-optimizer dependency (#228)
-
added option to train MVP on random sequence lengths (#252)
-
added ability to pass an arch name (str) to learner instead of class (#217)
-
created convenience fns create_directory and delete_directory in utils (#213)
-
added option to create random array of given shapes and dtypes (#212)
-
my_setup() print your main system and package versions (#202)
-
added a new tutorial on how to train large datasets using tsai (#199)
-
added a new function to load any file as a module (#196)
-
Loading code just for inference takes too long (#273)
-
Fixed out-of-memory issue with large datasets on disk (#126)
-
AttributeError: module 'torch' has no attribute 'nan_to_num' (#262)
-
Fixed TypeError: unhashable type: 'numpy.ndarray' (#250)
-
Wrong link in paper references (#249)
-
remove default PATH which overwrites custom PATH (#238)
-
Predictions where not properly decoded when using with_decoded. (#237)
-
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame (#221)
-
InceptionTimePlus wasn't imported by TSLearners (#218)
-
get_subset_dl fn is not properly creating a subset dataloader (#211)
-
Bug in WeightedPersSampleLoss (#203)
- implemented src_key_padding_mask in TST & TSTPlus (#79)
- Problem with get_minirocket_features while using CUDA in training (#153)
- Models:
- implement src_key_padding_mask in TST & TSTPlus (#79)
- Models:
- Problem with get_minirocket_features while using CUDA in training (#153)
-
Data:
- Update TSStandardize to accept some variables and/or groups of variables when using by_var.
- added option to pad labeled and unlabed datasets with SlidingWindow with a padding value
- added split_idxs and idxs to mixed_dls
- added sklearn preprocessing tfms
- added functions to measure sequence gaps
- added decodes to TSStandardize
-
Callbacks:
- change mask return values in MVP to True then mask
- updated MVP to accept nan values
-
Models:
- updated mWDN to take either model or arch
- added padding_var to TST
- added MiniRocketFeatures in Pytorch
-
Losses & metrics:
- added WeightedPerSampleLoss
- added mean_per_class_accuracy to metrics
- added mape metric
- added HuberLoss and LogCoshLoss
-
Learner:
- added Learner.remove_all_cbs
- updated get_X_preds to work with multilabel datasets
-
Miscellaneous:
- added rotate_axis utility functions
-
Callbacks:
- fixed and issue with inconsistency in show_preds in MVP
-
Models:
- Fixed an issue in InceptionTimePlus with stochastic depth regularization (stoch_depth parameter)
- Fixed issue with get_X_preds (different predictions when executed multiple times)
- fixed stoch_depth issue in InceptionTimePlus
- fixed kwargs issue in MultiInceptionTimePlus
-
Data:
- fixed issue in delta gap normalize
-
Learner:
- fixed bug in get_X_preds device
- updated get_X_preds to decode classification and regression outputs
- Models:
- Fixed an issue in TST and TSTPlus related to encoder layer creation.
- Fixed issue in TSStandardize when passing tensor with nan values
-
Models:
- Added TabTransformer, a state-of-the-art tabular transformer released in Dec 2020.
- TSTPlus now supports padding masks (passed as nan values) by default.
-
Data:
- Added a Nan2Value batch transform that removes any nan value in the tensor by zero or median.
- Faster dataloader when suffle == True.
- Added TSUndindowedDataset and TSUnwindowedDatasets, which apply window slicing online to prepare time series data.
- Added TSMetaDataset and TSMetaDatasets, which allow you to use one or multiple X (and y) arrays as input. In this way, you won't need to merge all data into a single array. This will allow you to work with larger than memory datasets.
- Added a new tutorial notebook that demonstrates both multi-class and multi-label classification using tsai.
- Upgraded df2Xy to accept y_func that allows calculation of different types of targets
-
Callbacks:
- MVP is now much faster as masks are now created directly as cuda tensors. This has increased speed by 2.5x in some tests.
- Data:
- train_perc in get_splits has been changed to train_size to allow both floats or integers.
- df2Xy API has been modified
-
Learner:
- Updated 3 new learner APIs: TSClassifier, TSRegressor, TSForecaster.
-
ShowGraph callback:
- Callback optionally plots all metrics at the end of training.
- Data:
- Updated df2xy function to fix a bug.
- Tutorial notebooks:
- Updated 04 (regression) to use the recently released Monash, UEA & UCR Time Series Extrinsic Regression Repository (2020).
- Models:
- Added new pooling layers and 3 new heads: attentional_pool_head, universal_pool_head, gwa_pool_head
-
General:
- Added 3 new sklearn-type APIs: TSClassifier, TSRegressor and TSForecaster.
-
Data:
- External: added a new function get_forecasting_data to access some forecasting datasets.
- Modified TimeSplitter to also allow passing testing_size.
- Utilities: add a simple function (standardize) to scale any data using splits.
- Preprocessing: added a new class (Preprocess) to be able to preprocess data before creating the datasets/ dataloaders. This is mainly to test different target preprocessing techniques.
- Utils added Nan2Value batch transform to remove any nan values in the dataset.
- Added a new utility function to easy the creation of a single TSDataLoader when no splits are used (for example with unlabeled datasets).
- Added a new function to quickly create empty arrays on disk or in memory (create_empty_array).
-
Models:
- TST: Added option to visualize self-attention maps.
- Added 3 new SOTA models: MiniRocketClassifier and MiniRocketRegressor for datasets <10k samples, and MiniRocket (Pytorch) which supports any dataset size.
- Added a simple function to create a naive forecast.
- Added future_mask to TSBERT to be able to train forecasting models.
- Added option to pass any custom mask to TSBERT.
-
Training:
- PredictionDynamics callback: allows you to visualize predictions during training.
-
Tutorial notebooks:
- New notebook demonstrating the new PredictionDynamics callback.
- Models:
- Fixed bug that prevented models to freeze or unfreeze. Now all models that end with Plus can take predefined weights and learn.freeze()/ learn.unfreeze() will work as expected.
-
Data:
- External: added a new function get_Monash_data to get extrinsic regression data.
-
Models:
- Added show_batch functionality to TSBERT.
-
General: Added min requirements for all package dependencies.
-
Data:
- Validation: added split visualization (show_plot=True by default).
- Data preprocessing: add option to TSStandardize or TSNormalize by_step.
- Featurize time series: added tsfresh library to allow the creation of features from time series.
-
Models:
- Updated ROCKET to speed up feature creation and allow usage of large datasets.
- Added change_model_head utility function to ease the process of changing an instantiated models head.
- conv_lin_3d_head function to allow generation of 3d output tensors. This may be useful for multivariate, multi-horizon direct (non-recursive) time series forecasting, multi-output regression tasks, etc.
- Updated TST (Time series transformer) to allow the use of residual attention (based on He, R., Ravula, A., Kanagal, B., & Ainslie, J. (2020). Realformer: Transformer Likes Informed Attention. arXiv preprint arXiv:2012.11747.)
- provided new functionality to transfer model's weights (useful when using pre-trained models).
- updated build_ts_model to be able to use pretrained model weights.
-
Training:
- TSBERT: a new callback has been added to be able to train a model in a self-supervised manner (similar to BERT).
-
Tutorial notebooks:
- I've added a new tutorial notebook to demonstrate how to apply TSBERT (self-supervised method for time series).
- Data:
- ROCKET: fixed a bug in
create_rocket_features
.
- ROCKET: fixed a bug in
- Data:
- core:
get_subset_dl
andget_subset_dls
convenience function have been added. - data preparation:
SlidingWindow
andSlidingWindowPanel
functions are now vectorized, and are at least an order of magnitude faster.
- core:
- Models:
XCM
: An Explainable Convolutional Neural Network for Multivariate Time Series Classification have been added. Official code not released yet. This is a stete-of-the-art time series model that combines Conv1d and Conv2d and has good explainability.
- Training:
- learner:
ts_learner
andtsimage_learner
convenience functions have been added, as well as aget_X_preds
methods to facilitate the generation of predictions.
- learner:
- Data:
- data preparation: a new
SlidingWindowPanel
function has been added to help prepare the input from panel data.SlidingWindow
has also been enhanced. - new preprocessors: TSRobustScaler, TSClipOutliers, TSDiff, TSLog, TSLogReturn
- data preparation: a new
- Models:
MLP
andTCN
(Temporal Convolutional Network) have been added.
- Training:
- Callback: Uncertainty-based data augmentation
- Label-mixing transforms (data augmentation): MixUp1D, CutMix1D callbacks
- Utility functions: build_ts_model, build_tabular_model, get_ts_dls, get_tabular_dls, ts_learner
- Added support to Pytorch 1.7.
tsai
0.2.0 is a major update to the tsai library. These are the major changes made to the library:
- New tutorial nbs have been added to demonstrate the use of new functionality like:
- Time series data preparation
- Intro to time series regression
- TS archs comparison
- TS to image classification
- TS classification with transformers
-
More ts data transforms have been added, including ts to images.
-
New callbacks, like the state of the art noisy_student that will allow you to use unlabeled data.
-
New time series, state-of-the-art models are now available like XceptionTime, RNN_FCN (like LSTM_FCN, GRU_FCN), TransformerModel, TST (Transformer), OmniScaleCNN, mWDN (multi-wavelet decomposition network), XResNet1d.
-
Some of the models (those finishing with an plus) have additional, experimental functionality (like coordconv, zero_norm, squeeze and excitation, etc).