From 6d504a227fb71ae6f5eef77a5c4c03937953bacc Mon Sep 17 00:00:00 2001 From: Saransh Date: Fri, 1 Apr 2022 12:27:10 +0530 Subject: [PATCH 01/10] Update `ecosystem.md` --- docs/src/ecosystem.md | 99 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 86 insertions(+), 13 deletions(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index fd4b180665..57bb9b48b9 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -4,18 +4,91 @@ One of the main strengths of Julia lies in an ecosystem of packages globally providing a rich and consistent user experience. This is a non-exhaustive list of Julia packages, nicely complementing `Flux` in typical -machine learning and deep learning workflows: - -- [ArgParse.jl](https://github.com/carlobaldassi/ArgParse.jl): package for parsing command-line arguments to Julia programs. -- [Augmentor.jl](https://github.com/Evizero/Augmentor.jl): a fast image augmentation library in Julia for machine learning. -- [BSON.jl](https://github.com/JuliaIO/BSON.jl): package for working with the Binary JSON serialisation format -- [DataFrames.jl](https://github.com/JuliaData/DataFrames.jl): in-memory tabular data in Julia -- [DrWatson.jl](https://github.com/JuliaDynamics/DrWatson.jl): a scientific project assistant software -- [MLDatasets.jl](https://github.com/JuliaML/MLDatasets.jl): utility package for accessing common machine learning datasets -- [OnlineStats.jl](https://github.com/joshday/OnlineStats.jl): single-pass algorithms for statistics -- [Parameters.jl](https://github.com/mauro3/Parameters.jl): types with default field values, keyword constructors and (un-)pack macros -- [ProgressMeter.jl](https://github.com/timholy/ProgressMeter.jl): progress meters for long-running computations -- [TensorBoardLogger.jl](https://github.com/PhilipVinc/TensorBoardLogger.jl): easy peasy logging to [tensorboard](https://www.tensorflow.org/tensorboard) in Julia -- [ParameterSchedulers.jl](https://github.com/darsnack/ParameterSchedulers.jl): standard scheduling policies for machine learning +machine learning and deep learning workflows. To add your project please send a [PR](https://github.com/FluxML/Flux.jl/pulls). +See also academic work citing Flux or Zygote. + +## Advanced models + +- [FluxArchitectures.jl](https://github.com/sdobber/FluxArchitectures.jl) is a collection of slightly more advanced network architectures. + +## Computer vision + +- [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go image analysis via YOLO. +- [Metalhead.jl](https://github.com/FluxML/Metalhead.jl) includes many state-of-the-art computer vision models which can easily be used for transfer learning. +- [UNet.jl](https://github.com/DhairyaLGandhi/UNet.jl) is a generic UNet implementation. + +## Datasets + +- [MLDatasets.jl](https://github.com/JuliaML/MLDatasets.jl) focuses on downloading, unpacking, and accessing benchmark datasets. + +## Differentiable programming + +- The [SciML](https://sciml.ai/) ecosystem uses Flux and Zygote to mix neural nets with differential equations, to get the best of black box and mechanistic modelling. +- [DiffEqFlux.jl](https://github.com/SciML/DiffEqFlux.jl) provides tools for creating Neural Differential Equations. +- [Flux3D.jl](https://github.com/FluxML/Flux3D.jl) shows off machine learning on 3D data. +- [RayTracer.jl](https://github.com/avik-pal/RayTracer.jl) combines ML with computer vision via a differentiable renderer. +- [Duckietown.jl](https://github.com/tejank10/Duckietown.jl) Differentiable Duckietown simulator. +- The [Yao.jl](https://github.com/QuantumBFS/Yao.jl) project uses Flux and Zygote for Quantum Differentiable Programming. +- [AtomicGraphNets.jl](https://github.com/Chemellia/AtomicGraphNets.jl) enables learning graph based models on atomic systems used in chemistry. +- [DiffImages.jl](https://github.com/SomTambe/DiffImages.jl) differentiable computer vision modeling in Julia with the Images.jl ecosystem. + +## Graph learning + +- [GeometricFlux.jl](https://github.com/FluxML/GeometricFlux.jl) makes it easy to build fast neural networks over graphs. +- [NeuralOperators.jl](https://github.com/SciML/NeuralOperators.jl) enables training infinite dimensional PDEs by learning a continuous function instead of using the finite element method. +- [SeaPearl.jl](https://github.com/corail-research/SeaPearl.jl) is a Constraint Programming solver that uses Reinforcement Learning based on graphs as input. + +## Natural language processing + +- [Transformers.jl](https://github.com/chengchingwen/Transformers.jl) provides components for Transformer models for NLP, as well as providing several trained models out of the box. +- [TextAnalysis.jl](https://github.com/JuliaText/TextAnalysis.jl) provides several NLP algorithms that use Flux models under the hood. + +## Pipeline extensions + +- [DLPipelines.jl](https://github.com/lorenzoh/DLPipelines.jl) is an interface for defining deep learning data pipelines. + +## Plumbing + +Tools to put data into the right order for creating a model. + +- [Augmentor.jl](https://github.com/Evizero/Augmentor.jl) is a real-time library augmentation library for increasing the number of training images. +- [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl) aims to make it easy to build stochastic label-preserving augmentation pipelines for your datasets. +- [MLDataUtils.jl](https://github.com/JuliaML/MLDataUtils.jl) is a utility for generating, loading, partitioning, and processing Machine Learning datasets. +- [MLLabelUtils.j](https://github.com/JuliaML/MLLabelUtils.jl) is a utility for working with classification targets. It provides the necessary functionality for interpreting class-predictions, as well as converting classification targets from one encoding to another. + +## Probabilistic programming + +- [Turing.jl](https://github.com/TuringLang/Turing.jl) extends Flux's differentiable programming capabilities to probabilistic programming. +- [Omega.jl](https://github.com/zenna/Omega.jl) is a research project aimed at causal, higher-order probabilistic programming. +- [Stheno.jl](https://github.com/willtebbutt/Stheno.jl) provides flexible Gaussian processes. + +## Reinforcement learning + +- [AlphaZero.jl](https://github.com/jonathan-laurent/AlphaZero.jl) provides a generic, simple and fast implementation of Deepmind's AlphaZero algorithm. +- [ReinforcementLearning.jl](https://juliareinforcementlearning.org/) offers a collection of tools for doing reinforcement learning research in Julia. + +## Parameters + +- [Parameters.jl](https://github.com/mauro3/Parameters.jl) types with default field values, keyword constructors and (un-)pack macros. +- [ParameterSchedulers.jl](https://github.com/darsnack/ParameterSchedulers.jl) standard scheduling policies for machine learning. + +## Statistics + +- [OnlineStats.jl](https://github.com/joshday/OnlineStats.jl) provides single-pass algorithms for statistics. + +## Miscellaneous + +- [AdversarialPrediction.jl](https://github.com/rizalzaf/AdversarialPrediction.jl) provides a way to easily optimize generic performance metrics in supervised learning settings using the [Adversarial Prediction](https://arxiv.org/abs/1812.07526) framework. +- [Mill.jl](https://github.com/CTUAvastLab/Mill.jl) helps to prototype flexible multi-instance learning models. +- [MLMetrics.jl](https://github.com/JuliaML/MLMetrics.jl) is a utility for scoring models in data science and machine learning. +- [Torch.jl](https://github.com/FluxML/Torch.jl) exposes torch in Julia. +- [ValueHistories.jl](https://github.com/JuliaML/ValueHistories.jl) is a utility for efficient tracking of optimization histories, training curves or other information of arbitrary types and at arbitrarily spaced sampling times. +- [InvertibleNetworks.jl](https://github.com/slimgroup/InvertibleNetworks.jl/) Building blocks for invertible neural networks in the Julia programming language. +- [ProgressMeter.jl](https://github.com/timholy/ProgressMeter.jl) progress meters for long-running computations. +- [TensorBoardLogger.jl](https://github.com/PhilipVinc/TensorBoardLogger.jl) easy peasy logging to [tensorboard](https://www.tensorflow.org/tensorboard) in Julia +- [ArgParse.jl](https://github.com/carlobaldassi/ArgParse.jl) is a package for parsing command-line arguments to Julia programs. +- [BSON.jl](https://github.com/JuliaIO/BSON.jl) is a package for working with the Binary JSON serialisation format. +- [DataFrames.jl](https://github.com/JuliaData/DataFrames.jl) in-memory tabular data in Julia. +- [DrWatson.jl](https://github.com/JuliaDynamics/DrWatson.jl) is a scientific project assistant software. This tight integration among Julia packages is shown in some of the examples in the [model-zoo](https://github.com/FluxML/model-zoo) repository. From 734c5f6ce67629783479534902d7f58f8dfd88cb Mon Sep 17 00:00:00 2001 From: Saransh Date: Fri, 1 Apr 2022 21:47:57 +0530 Subject: [PATCH 02/10] Update docs/src/ecosystem.md Co-authored-by: Carlo Lucibello --- docs/src/ecosystem.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index 57bb9b48b9..26b4a041ff 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -34,7 +34,8 @@ See also academic work citing Flux or Zygote. ## Graph learning -- [GeometricFlux.jl](https://github.com/FluxML/GeometricFlux.jl) makes it easy to build fast neural networks over graphs. +- [GraphNeuralNetworks.jl](https://github.com/CarloLucibello/GraphNeuralNetworks.jl) is a fresh, performant and flexible graph neural network library based on Flux.jl. +- [GeometricFlux.jl](https://github.com/FluxML/GeometricFlux.jl) is the first graph neural network library for julia. - [NeuralOperators.jl](https://github.com/SciML/NeuralOperators.jl) enables training infinite dimensional PDEs by learning a continuous function instead of using the finite element method. - [SeaPearl.jl](https://github.com/corail-research/SeaPearl.jl) is a Constraint Programming solver that uses Reinforcement Learning based on graphs as input. From e422d90d1d58fc8ca93ed135106cc6d7e3c63774 Mon Sep 17 00:00:00 2001 From: Saransh Date: Fri, 1 Apr 2022 21:53:30 +0530 Subject: [PATCH 03/10] Update docs/src/ecosystem.md Co-authored-by: Carlo Lucibello --- docs/src/ecosystem.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index 26b4a041ff..b7e9a374fe 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -54,8 +54,7 @@ Tools to put data into the right order for creating a model. - [Augmentor.jl](https://github.com/Evizero/Augmentor.jl) is a real-time library augmentation library for increasing the number of training images. - [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl) aims to make it easy to build stochastic label-preserving augmentation pipelines for your datasets. -- [MLDataUtils.jl](https://github.com/JuliaML/MLDataUtils.jl) is a utility for generating, loading, partitioning, and processing Machine Learning datasets. -- [MLLabelUtils.j](https://github.com/JuliaML/MLLabelUtils.jl) is a utility for working with classification targets. It provides the necessary functionality for interpreting class-predictions, as well as converting classification targets from one encoding to another. +- [MLUtils.jl](https://github.com/JuliaML/MLUtils.jl) is a library for processing Machine Learning datasets. ## Probabilistic programming From c7937f675415de8c77c2042bd8e256e1a7b2cc0a Mon Sep 17 00:00:00 2001 From: Saransh Date: Fri, 1 Apr 2022 22:03:04 +0530 Subject: [PATCH 04/10] Add `MLUtils.jl` and move `FluxArchitectures.jl` --- docs/src/ecosystem.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index b7e9a374fe..b1e8bec537 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -7,10 +7,6 @@ This is a non-exhaustive list of Julia packages, nicely complementing `Flux` in machine learning and deep learning workflows. To add your project please send a [PR](https://github.com/FluxML/Flux.jl/pulls). See also academic work citing Flux or Zygote. -## Advanced models - -- [FluxArchitectures.jl](https://github.com/sdobber/FluxArchitectures.jl) is a collection of slightly more advanced network architectures. - ## Computer vision - [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go image analysis via YOLO. @@ -54,7 +50,7 @@ Tools to put data into the right order for creating a model. - [Augmentor.jl](https://github.com/Evizero/Augmentor.jl) is a real-time library augmentation library for increasing the number of training images. - [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl) aims to make it easy to build stochastic label-preserving augmentation pipelines for your datasets. -- [MLUtils.jl](https://github.com/JuliaML/MLUtils.jl) is a library for processing Machine Learning datasets. +- [MLUtils.jl](https://github.com/JuliaML/MLUtils.jl) (replaces [MLDataUtils.jl](https://github.com/JuliaML/MLDataUtils.jl) and [MLLabelUtils.jl](https://github.com/JuliaML/MLLabelUtils.jl)) is a library for processing Machine Learning datasets. ## Probabilistic programming @@ -76,6 +72,10 @@ Tools to put data into the right order for creating a model. - [OnlineStats.jl](https://github.com/joshday/OnlineStats.jl) provides single-pass algorithms for statistics. +## Time series + +- [FluxArchitectures.jl](https://github.com/sdobber/FluxArchitectures.jl) is a collection of advanced network architectures for time series forecasting. + ## Miscellaneous - [AdversarialPrediction.jl](https://github.com/rizalzaf/AdversarialPrediction.jl) provides a way to easily optimize generic performance metrics in supervised learning settings using the [Adversarial Prediction](https://arxiv.org/abs/1812.07526) framework. From 38333cf6ca06a785ff6606b0fa1952a62ce01892 Mon Sep 17 00:00:00 2001 From: Saransh Date: Sat, 2 Apr 2022 00:57:07 +0530 Subject: [PATCH 05/10] Update docs/src/ecosystem.md Co-authored-by: Kyle Daruwalla --- docs/src/ecosystem.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index b1e8bec537..dca7f100b6 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -7,6 +7,10 @@ This is a non-exhaustive list of Julia packages, nicely complementing `Flux` in machine learning and deep learning workflows. To add your project please send a [PR](https://github.com/FluxML/Flux.jl/pulls). See also academic work citing Flux or Zygote. +## High-level training flows + +- [FastAI.jl](https://github.com/FluxML/FastAI.jl) is a Julia port of Python's fast.ai library. +- [FluxTraining.jl](https://github.com/FluxML/FluxTraining.jl) is a package for using and writing powerful, extensible training loops for deep learning models. It supports callbacks for many common use cases like hyperparameter scheduling, metrics tracking and logging, checkpointing, early stopping, and more. ## Computer vision - [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go image analysis via YOLO. From fe1989ca2b1e292a9f151c4c42b075b57a5174bb Mon Sep 17 00:00:00 2001 From: Saransh Date: Mon, 4 Apr 2022 22:49:31 +0530 Subject: [PATCH 06/10] Remove `DLPipelines.jl` --- docs/src/ecosystem.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index b1e8bec537..a4a86e8252 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -40,10 +40,6 @@ See also academic work citing Flux or Zygote. - [Transformers.jl](https://github.com/chengchingwen/Transformers.jl) provides components for Transformer models for NLP, as well as providing several trained models out of the box. - [TextAnalysis.jl](https://github.com/JuliaText/TextAnalysis.jl) provides several NLP algorithms that use Flux models under the hood. -## Pipeline extensions - -- [DLPipelines.jl](https://github.com/lorenzoh/DLPipelines.jl) is an interface for defining deep learning data pipelines. - ## Plumbing Tools to put data into the right order for creating a model. From b6566a48e14fc464d531d88aabc7dfa90c301d4f Mon Sep 17 00:00:00 2001 From: Saransh Date: Mon, 4 Apr 2022 22:51:47 +0530 Subject: [PATCH 07/10] Update docs/src/ecosystem.md Co-authored-by: lorenzoh --- docs/src/ecosystem.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index 19b298a1a5..a6267d4f5d 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -10,7 +10,7 @@ See also academic work citing Flux or Zygote. ## High-level training flows - [FastAI.jl](https://github.com/FluxML/FastAI.jl) is a Julia port of Python's fast.ai library. -- [FluxTraining.jl](https://github.com/FluxML/FluxTraining.jl) is a package for using and writing powerful, extensible training loops for deep learning models. It supports callbacks for many common use cases like hyperparameter scheduling, metrics tracking and logging, checkpointing, early stopping, and more. +- [FluxTraining.jl](https://github.com/FluxML/FluxTraining.jl) is a package for using and writing powerful, extensible training loops for deep learning models. It supports callbacks for many common use cases like hyperparameter scheduling, metrics tracking and logging, checkpointing, early stopping, and more. It powers training in FastAI.jl ## Computer vision - [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go image analysis via YOLO. From 355c38f0d8f709e9e3925c0ff9115adc3be0b4a9 Mon Sep 17 00:00:00 2001 From: Saransh Date: Mon, 4 Apr 2022 22:51:55 +0530 Subject: [PATCH 08/10] Update docs/src/ecosystem.md Co-authored-by: lorenzoh --- docs/src/ecosystem.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index a6267d4f5d..25462b16ec 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -13,7 +13,7 @@ See also academic work citing Flux or Zygote. - [FluxTraining.jl](https://github.com/FluxML/FluxTraining.jl) is a package for using and writing powerful, extensible training loops for deep learning models. It supports callbacks for many common use cases like hyperparameter scheduling, metrics tracking and logging, checkpointing, early stopping, and more. It powers training in FastAI.jl ## Computer vision -- [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go image analysis via YOLO. +- [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go object detection via YOLO. - [Metalhead.jl](https://github.com/FluxML/Metalhead.jl) includes many state-of-the-art computer vision models which can easily be used for transfer learning. - [UNet.jl](https://github.com/DhairyaLGandhi/UNet.jl) is a generic UNet implementation. From c3c6399721e1d3c038c351ed72bacf9d6c6c3be9 Mon Sep 17 00:00:00 2001 From: Saransh Date: Mon, 4 Apr 2022 22:53:00 +0530 Subject: [PATCH 09/10] Update docs/src/ecosystem.md Co-authored-by: lorenzoh --- docs/src/ecosystem.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index 25462b16ec..6d05945047 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -49,7 +49,7 @@ See also academic work citing Flux or Zygote. Tools to put data into the right order for creating a model. - [Augmentor.jl](https://github.com/Evizero/Augmentor.jl) is a real-time library augmentation library for increasing the number of training images. -- [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl) aims to make it easy to build stochastic label-preserving augmentation pipelines for your datasets. +- [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl) aims to make it easy to build stochastic, label-preserving augmentation pipelines for vision use cases involving images, keypoints and segmentation masks. - [MLUtils.jl](https://github.com/JuliaML/MLUtils.jl) (replaces [MLDataUtils.jl](https://github.com/JuliaML/MLDataUtils.jl) and [MLLabelUtils.jl](https://github.com/JuliaML/MLLabelUtils.jl)) is a library for processing Machine Learning datasets. ## Probabilistic programming From 50b455be3777d979a2ddfb9d5eafc4958e822f41 Mon Sep 17 00:00:00 2001 From: Saransh Date: Thu, 7 Apr 2022 20:18:51 +0530 Subject: [PATCH 10/10] Group under less H2 headings --- docs/src/ecosystem.md | 89 +++++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/docs/src/ecosystem.md b/docs/src/ecosystem.md index 6d05945047..9b49b1720e 100644 --- a/docs/src/ecosystem.md +++ b/docs/src/ecosystem.md @@ -7,44 +7,51 @@ This is a non-exhaustive list of Julia packages, nicely complementing `Flux` in machine learning and deep learning workflows. To add your project please send a [PR](https://github.com/FluxML/Flux.jl/pulls). See also academic work citing Flux or Zygote. -## High-level training flows +## Flux models -- [FastAI.jl](https://github.com/FluxML/FastAI.jl) is a Julia port of Python's fast.ai library. -- [FluxTraining.jl](https://github.com/FluxML/FluxTraining.jl) is a package for using and writing powerful, extensible training loops for deep learning models. It supports callbacks for many common use cases like hyperparameter scheduling, metrics tracking and logging, checkpointing, early stopping, and more. It powers training in FastAI.jl -## Computer vision +Packages that are actual `Flux` models but are not available directly through the `Flux` package. -- [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go object detection via YOLO. +### Computer vision + +- [ObjectDetector.jl](https://github.com/r3tex/ObjectDetector.jl) provides ready-to-go image detection via YOLO. - [Metalhead.jl](https://github.com/FluxML/Metalhead.jl) includes many state-of-the-art computer vision models which can easily be used for transfer learning. - [UNet.jl](https://github.com/DhairyaLGandhi/UNet.jl) is a generic UNet implementation. -## Datasets - -- [MLDatasets.jl](https://github.com/JuliaML/MLDatasets.jl) focuses on downloading, unpacking, and accessing benchmark datasets. +### Natural language processing -## Differentiable programming +- [Transformers.jl](https://github.com/chengchingwen/Transformers.jl) provides components for Transformer models for NLP, as well as providing several trained models out of the box. +- [TextAnalysis.jl](https://github.com/JuliaText/TextAnalysis.jl) provides several NLP algorithms that use Flux models under the hood. -- The [SciML](https://sciml.ai/) ecosystem uses Flux and Zygote to mix neural nets with differential equations, to get the best of black box and mechanistic modelling. -- [DiffEqFlux.jl](https://github.com/SciML/DiffEqFlux.jl) provides tools for creating Neural Differential Equations. -- [Flux3D.jl](https://github.com/FluxML/Flux3D.jl) shows off machine learning on 3D data. -- [RayTracer.jl](https://github.com/avik-pal/RayTracer.jl) combines ML with computer vision via a differentiable renderer. -- [Duckietown.jl](https://github.com/tejank10/Duckietown.jl) Differentiable Duckietown simulator. -- The [Yao.jl](https://github.com/QuantumBFS/Yao.jl) project uses Flux and Zygote for Quantum Differentiable Programming. -- [AtomicGraphNets.jl](https://github.com/Chemellia/AtomicGraphNets.jl) enables learning graph based models on atomic systems used in chemistry. -- [DiffImages.jl](https://github.com/SomTambe/DiffImages.jl) differentiable computer vision modeling in Julia with the Images.jl ecosystem. +### Reinforcement learning + +- [AlphaZero.jl](https://github.com/jonathan-laurent/AlphaZero.jl) provides a generic, simple and fast implementation of Deepmind's AlphaZero algorithm. +- [ReinforcementLearning.jl](https://juliareinforcementlearning.org/) offers a collection of tools for doing reinforcement learning research in Julia. -## Graph learning +### Graph learning - [GraphNeuralNetworks.jl](https://github.com/CarloLucibello/GraphNeuralNetworks.jl) is a fresh, performant and flexible graph neural network library based on Flux.jl. - [GeometricFlux.jl](https://github.com/FluxML/GeometricFlux.jl) is the first graph neural network library for julia. - [NeuralOperators.jl](https://github.com/SciML/NeuralOperators.jl) enables training infinite dimensional PDEs by learning a continuous function instead of using the finite element method. - [SeaPearl.jl](https://github.com/corail-research/SeaPearl.jl) is a Constraint Programming solver that uses Reinforcement Learning based on graphs as input. -## Natural language processing +### Time series -- [Transformers.jl](https://github.com/chengchingwen/Transformers.jl) provides components for Transformer models for NLP, as well as providing several trained models out of the box. -- [TextAnalysis.jl](https://github.com/JuliaText/TextAnalysis.jl) provides several NLP algorithms that use Flux models under the hood. +- [FluxArchitectures.jl](https://github.com/sdobber/FluxArchitectures.jl) is a collection of advanced network architectures for time series forecasting. + +## Tools closely associated with Flux + +Utility tools you're unlikely to have met if you never used Flux! + +### High-level training flows + +- [FastAI.jl](https://github.com/FluxML/FastAI.jl) is a Julia port of Python's fast.ai library. +- [FluxTraining.jl](https://github.com/FluxML/FluxTraining.jl) is a package for using and writing powerful, extensible training loops for deep learning models. It supports callbacks for many common use cases like hyperparameter scheduling, metrics tracking and logging, checkpointing, early stopping, and more. It powers training in FastAI.jl + +### Datasets -## Plumbing +- [MLDatasets.jl](https://github.com/JuliaML/MLDatasets.jl) focuses on downloading, unpacking, and accessing benchmark datasets. + +### Plumbing Tools to put data into the right order for creating a model. @@ -52,31 +59,37 @@ Tools to put data into the right order for creating a model. - [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl) aims to make it easy to build stochastic, label-preserving augmentation pipelines for vision use cases involving images, keypoints and segmentation masks. - [MLUtils.jl](https://github.com/JuliaML/MLUtils.jl) (replaces [MLDataUtils.jl](https://github.com/JuliaML/MLDataUtils.jl) and [MLLabelUtils.jl](https://github.com/JuliaML/MLLabelUtils.jl)) is a library for processing Machine Learning datasets. -## Probabilistic programming +### Parameters + +- [Parameters.jl](https://github.com/mauro3/Parameters.jl) types with default field values, keyword constructors and (un-)pack macros. +- [ParameterSchedulers.jl](https://github.com/darsnack/ParameterSchedulers.jl) standard scheduling policies for machine learning. + +## Differentiable programming + +Packages based on differentiable programming but not necessarily related to Machine Learning. + +- The [SciML](https://sciml.ai/) ecosystem uses Flux and Zygote to mix neural nets with differential equations, to get the best of black box and mechanistic modelling. +- [DiffEqFlux.jl](https://github.com/SciML/DiffEqFlux.jl) provides tools for creating Neural Differential Equations. +- [Flux3D.jl](https://github.com/FluxML/Flux3D.jl) shows off machine learning on 3D data. +- [RayTracer.jl](https://github.com/avik-pal/RayTracer.jl) combines ML with computer vision via a differentiable renderer. +- [Duckietown.jl](https://github.com/tejank10/Duckietown.jl) Differentiable Duckietown simulator. +- The [Yao.jl](https://github.com/QuantumBFS/Yao.jl) project uses Flux and Zygote for Quantum Differentiable Programming. +- [AtomicGraphNets.jl](https://github.com/Chemellia/AtomicGraphNets.jl) enables learning graph based models on atomic systems used in chemistry. +- [DiffImages.jl](https://github.com/SomTambe/DiffImages.jl) differentiable computer vision modeling in Julia with the Images.jl ecosystem. + +### Probabilistic programming - [Turing.jl](https://github.com/TuringLang/Turing.jl) extends Flux's differentiable programming capabilities to probabilistic programming. - [Omega.jl](https://github.com/zenna/Omega.jl) is a research project aimed at causal, higher-order probabilistic programming. - [Stheno.jl](https://github.com/willtebbutt/Stheno.jl) provides flexible Gaussian processes. -## Reinforcement learning - -- [AlphaZero.jl](https://github.com/jonathan-laurent/AlphaZero.jl) provides a generic, simple and fast implementation of Deepmind's AlphaZero algorithm. -- [ReinforcementLearning.jl](https://juliareinforcementlearning.org/) offers a collection of tools for doing reinforcement learning research in Julia. - -## Parameters - -- [Parameters.jl](https://github.com/mauro3/Parameters.jl) types with default field values, keyword constructors and (un-)pack macros. -- [ParameterSchedulers.jl](https://github.com/darsnack/ParameterSchedulers.jl) standard scheduling policies for machine learning. - -## Statistics +### Statistics - [OnlineStats.jl](https://github.com/joshday/OnlineStats.jl) provides single-pass algorithms for statistics. -## Time series - -- [FluxArchitectures.jl](https://github.com/sdobber/FluxArchitectures.jl) is a collection of advanced network architectures for time series forecasting. +## Useful miscellaneous packages -## Miscellaneous +Some useful and random packages! - [AdversarialPrediction.jl](https://github.com/rizalzaf/AdversarialPrediction.jl) provides a way to easily optimize generic performance metrics in supervised learning settings using the [Adversarial Prediction](https://arxiv.org/abs/1812.07526) framework. - [Mill.jl](https://github.com/CTUAvastLab/Mill.jl) helps to prototype flexible multi-instance learning models.