From c4727668115f6f101020ad682f87dd84c5d272c2 Mon Sep 17 00:00:00 2001 From: codeboy5 Date: Sat, 10 Sep 2022 14:37:27 +0530 Subject: [PATCH 1/4] initial commit --- .../train_result.png | Bin 0 -> 56022 bytes blog/_posts/2022-09-08-FastAI-time-series.md | 83 ++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 assets/2022-09-08-FastAI-time-series/train_result.png create mode 100644 blog/_posts/2022-09-08-FastAI-time-series.md diff --git a/assets/2022-09-08-FastAI-time-series/train_result.png b/assets/2022-09-08-FastAI-time-series/train_result.png new file mode 100644 index 0000000000000000000000000000000000000000..b65a509b013011990758c8e0627e949e80a0c6a9 GIT binary patch literal 56022 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 (M8;7KB{Uperke+l)tzm)$j`xn~_2 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 Ma;neDo|^dmKTA%cX#fBK literal 0 HcmV?d00001 diff --git a/blog/_posts/2022-09-08-FastAI-time-series.md b/blog/_posts/2022-09-08-FastAI-time-series.md new file mode 100644 index 00000000..997ff386 --- /dev/null +++ b/blog/_posts/2022-09-08-FastAI-time-series.md @@ -0,0 +1,83 @@ +--- +title: FastAI.jl Time Series Development +author: Saksham +layout: blog +--- + +[FastAI.jl](https://github.com/FluxML/FastAI.jl) is a Julia library inspired by [fastai](https://github.com/fastai/fastai), and its goal is to create state-of-the-art deep learning models easily. FastAI.jl simplifies training fast and accurate neural nets using modern best practices. + +Time-Series models constitute an integral part of any machine learning stack. This blog post will demonstrate how to start working with time-series data with FastAI.jl and the [FastTimeSeries](https://github.com/FluxML/FastAI.jl/tree/master/FastTimeSeries) submodule. The work presented here was done as part of [GSoC'22](https://summerofcode.withgoogle.com/programs/2022/projects/Q9GVFW33) under the mentorship of Brian Chen, Kyle Daruwalla, and Lorenz Ohly. + + +## Loading the data in a container + +To start off, we'll load the [ECG5000](http://timeseriesclassification.com/description.php?Dataset=ECG5000) dataset. + +```julia +julia> using FastAI, FastTimeSeries, Flux +julia> data, blocks = load(datarecipes()["ecg5000"]); +``` + +Our easy to use interface allows to load an input time series along with it's label at any index using `getobs(data, index)`. It also allows us to check the total number of observations using `numobs(data)`. + +```julia +julia> input, class = sample = getobs(data, 25) +(Float32[-0.28834122 -2.2725453 … 1.722784 1.2959242], "1") +julia> numobs(data) +5000 +``` + +## Tasks + +The library supports `TSClassificationSingle(blocks, data)` and `TSRegression(blocks, data)` tasks. These are for single label time-series classification and single label time-series regression. + +```julia +julia> task = TSClassificationSingle(blocks, data); +``` + + +## Data Preprocessing + +Although, we have loaded the data in a container which can be used later while creating a `DataLoader` and training, often we would like to perform transformations on it. We can encode a sample input using +`encodesample(task, Phase(), sample)` + +```julia +julia> input, class = sample = getobs(data, 25) +(Float32[-0.28834122 -2.2725453 … 1.722784 1.2959242], "1") +julia> encodesample(task, Training(), (input, class)) +(Float32[-0.28937635 -2.2807038 … 1.7289687 1.3005764], Bool[1, 0, 0, 0, 0]) +``` + +## Models + +The library contains implementation of the following models. +- RNNs +```julia +julia> backbone = FastTimeSeries.Models.StackedLSTM(1, 16, 10, 2); +julia> model = FastAI.taskmodel(task, backbone); +``` + +- [InceptionTime](https://www.google.com/search?client=safari&rls=en&q=inceptiontime&ie=UTF-8&oe=UTF-8) +```julia +julia> model = FastTimeSeries.Models.InceptionTime(1, 5); +``` + +## Training + +We create a pair of training and validation data loaders using `taskdataloaders` . They take care of batching and loading the data in parallel in the background. With the addition of an optimizer and a loss function, we can create a `Learner` and start training. + +```julia +julia> traindl, validdl = taskdataloaders(data, task, 16); +julia> learner = Learner(model, tasklossfn(task); data=(traindl, validdl), optimizer=ADAM(), callbacks = [ToGPU(), Metrics(accuracy)]); +julia> fitonecycle!(learner, 10, 0.033); +``` + +We can view the loss and accuracy on the training and validation data after the training is compelete. + +

+ +

+ +## Conclusion + +We saw how we can work on time-series data using FastAI.jl. \ No newline at end of file From 1f820a08e0cca94230a67fb23e576e8115eac1ae Mon Sep 17 00:00:00 2001 From: codeboy5 Date: Tue, 13 Sep 2022 00:35:12 +0530 Subject: [PATCH 2/4] minor improvements --- ...-08-Adding-Time-Series-Support-to-FastAI.jl.md} | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) rename blog/_posts/{2022-09-08-FastAI-time-series.md => 2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md} (64%) diff --git a/blog/_posts/2022-09-08-FastAI-time-series.md b/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md similarity index 64% rename from blog/_posts/2022-09-08-FastAI-time-series.md rename to blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md index 997ff386..d7905905 100644 --- a/blog/_posts/2022-09-08-FastAI-time-series.md +++ b/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md @@ -1,12 +1,12 @@ --- -title: FastAI.jl Time Series Development +title: Adding Time Series Support to FastAI.jl author: Saksham layout: blog --- [FastAI.jl](https://github.com/FluxML/FastAI.jl) is a Julia library inspired by [fastai](https://github.com/fastai/fastai), and its goal is to create state-of-the-art deep learning models easily. FastAI.jl simplifies training fast and accurate neural nets using modern best practices. -Time-Series models constitute an integral part of any machine learning stack. This blog post will demonstrate how to start working with time-series data with FastAI.jl and the [FastTimeSeries](https://github.com/FluxML/FastAI.jl/tree/master/FastTimeSeries) submodule. The work presented here was done as part of [GSoC'22](https://summerofcode.withgoogle.com/programs/2022/projects/Q9GVFW33) under the mentorship of Brian Chen, Kyle Daruwalla, and Lorenz Ohly. +Models for time series data constitute an integral part of any machine learning stack. This blog post will demonstrate how to start working with time-series data with FastAI.jl and the [FastTimeSeries](https://github.com/FluxML/FastAI.jl/tree/master/FastTimeSeries) submodule. The FastTimeSeries submodule has been inspired by [tsai](https://timeseriesai.github.io/tsai/), a package built on top of fastai for time series tasks. The work presented here was done as part of [GSoC'22](https://summerofcode.withgoogle.com/programs/2022/projects/Q9GVFW33) under the mentorship of Brian Chen, Kyle Daruwalla, and Lorenz Ohly. ## Loading the data in a container @@ -29,17 +29,15 @@ julia> numobs(data) ## Tasks -The library supports `TSClassificationSingle(blocks, data)` and `TSRegression(blocks, data)` tasks. These are for single label time-series classification and single label time-series regression. +The library supports `TSClassificationSingle` and `TSRegression` tasks--used for single label time-series classification and single label time-series regression, respectively. We will pass our `data` and `blocks` from the previous step into the task: ```julia julia> task = TSClassificationSingle(blocks, data); ``` - ## Data Preprocessing -Although, we have loaded the data in a container which can be used later while creating a `DataLoader` and training, often we would like to perform transformations on it. We can encode a sample input using -`encodesample(task, Phase(), sample)` +Although `data` can already be passed to `DataLoader` for loading during training, we would often like to perform transformations on it. We can encode a sample input using `encodesample(task, Phase(), sample)` where `Phase` is a [FastAI.jl Context](https://fluxml.ai/FastAI.jl/dev/references/FastAI.Context). ```julia julia> input, class = sample = getobs(data, 25) @@ -51,13 +49,13 @@ julia> encodesample(task, Training(), (input, class)) ## Models The library contains implementation of the following models. -- RNNs +- Basic stacked RNNs ```julia julia> backbone = FastTimeSeries.Models.StackedLSTM(1, 16, 10, 2); julia> model = FastAI.taskmodel(task, backbone); ``` -- [InceptionTime](https://www.google.com/search?client=safari&rls=en&q=inceptiontime&ie=UTF-8&oe=UTF-8) +- [InceptionTime](https://arxiv.org/abs/1909.04939) ```julia julia> model = FastTimeSeries.Models.InceptionTime(1, 5); ``` From e1cd2201e197c56d0ac27360ab991f14ea4b620f Mon Sep 17 00:00:00 2001 From: codeboy5 Date: Tue, 13 Sep 2022 09:15:56 +0530 Subject: [PATCH 3/4] added future work --- .../2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md b/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md index d7905905..20dc7385 100644 --- a/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md +++ b/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md @@ -78,4 +78,9 @@ We can view the loss and accuracy on the training and validation data after the ## Conclusion -We saw how we can work on time-series data using FastAI.jl. \ No newline at end of file +We saw how we can work on time-series data using FastAI.jl. + +## Future Work + +Future work would involve adding tools to the library to improve the experience of working with time series. These would include tools for visualizations and analysis. +FastTimeSeries would also be expanded to work on more complex tasks such as multi-class classification and single and multi-step forecasting. We would also implement more complex models such as [Transformers](https://arxiv.org/abs/2010.02803). \ No newline at end of file From 4eb6316085d9563df044b1f419c7bb1ef8945e5a Mon Sep 17 00:00:00 2001 From: codeboy5 Date: Sun, 18 Sep 2022 21:10:12 +0530 Subject: [PATCH 4/4] resolving comments --- ...Adding-Time-Series-Support-to-FastAI.jl.md | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md b/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md index 20dc7385..0947c69b 100644 --- a/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md +++ b/blog/_posts/2022-09-08-Adding-Time-Series-Support-to-FastAI.jl.md @@ -49,13 +49,26 @@ julia> encodesample(task, Training(), (input, class)) ## Models The library contains implementation of the following models. -- Basic stacked RNNs + +- Basic stacked RNNs. + Stacked RNN network. Feeds the data through a chain of RNN layers, where the hidden state + of the previous layer gets fed to the next one. The Model has the following arguments. + - `c_in` : The number of input channels. + - `c_out` : The number of output classes. + - `hiddensize` : The number of "hidden channels" to use. + - `layers` : The number of RNN layers to use in the stacked network. + ```julia julia> backbone = FastTimeSeries.Models.StackedLSTM(1, 16, 10, 2); julia> model = FastAI.taskmodel(task, backbone); ``` -- [InceptionTime](https://arxiv.org/abs/1909.04939) +- [InceptionTime](https://arxiv.org/abs/1909.04939) + An implementation of the InceptionTime Model. The Model has the following arguments. + - `c_in` : The number of input channels. + - `c_out` : The number of output classes. + - `nf` : The number of "hidden channels" to use. + ```julia julia> model = FastTimeSeries.Models.InceptionTime(1, 5); ``` @@ -78,7 +91,11 @@ We can view the loss and accuracy on the training and validation data after the ## Conclusion -We saw how we can work on time-series data using FastAI.jl. +We saw how we could work on time-series data using FastAI.jl. The library now supports the following features. + +- Load time series classification datasets and regression datasets from [UCR Classification](http://timeseriesclassification.com/index.php) and [Monash Regression](http://tseregression.org/) respectively. +- Perform data transformations on the loaded data. +- Perform classification and regression tasks using InceptionTime or stacked RNNs. ## Future Work