Where Python is executable pseudocode, Julia is executable math. Models look just like the description in the paper, and you have the full power and simplicity of the Julia language (including control flow, multiple dispatch and macros).

Flux.jl

There are many lists and tutorials out there that refer either to outdated Julia packages with no or limited compatibility with Julia 1.0 or the packages are too shallow for any useful application. Moreover, I missed some description of the packages to avoid checking them all out manually to know what they do. Therefore, I am maintaining this list here. (This list is fluent and will be updated and extended from time to time.)

Frameworks under active development (and work with Julia 1.0)

  • Flux.jl
    • Flux.jl is a machine learning library written entirely in Julia. It focuses on neural networks and has some great interactive examples/experiments which we can try out inside our internet browser of choice.
    • More packages that are part of or made for the FluxML environment:
      • Metalhead.jl
        • Metalhead.jl runs on top of Flux.jl and provides common computer vision models such as VGG19. Moreover, it provides a function to download common computer vision datasets
      • ONNX.jl
        • ONNX.jl is a package for Julia that transfers models from ONNX format to Flux.jl format.
      • Zygote.jl
        • Zygote.jl implements source-to-source automatic differentiation which is important for backprop. However, it is still an early-stage prototype.
      • FluxJS.jl
        • FluxJS.jl allows to run Flux.jl models in a browser using TensorFlow.js
      • Keras.jl
        • Keras.jl allows to load keras models into Flux.jl. It requires the model architecture (model.json) as well as the weights (weights.h5)
      • DiffEqFlux.jl
  • JuliaStats
    • JuliaStats is an organization within the Julia language that maintains and provides the following packages (not all packages work flawlessly with Julia 1.0 so far):
      • StatsBase.jl
        • StatsBase.jl provides functions for basic (descriptive) statistics.
      • StatsModels.jl
        • StatsModels.jl provides functions for model fitting and evaluation (forked and extended from DataFrames.jl).
      • DataFrames.jl
        • DataFrames.jl provides R-like dataframes (also similar to parts of Pandas) and is part of JuliaData (see below).
      • Distributions.jl
        • Distributions.jl is a package that provides functions for all kinds of probability distributions and associated calculations on/with these distributions (e.g. moments, maximum likelihood, etc.)
        • Conjugating prior distributions has been moved from Distributions.jl to ConjugatePriors.jl.
      • MultivariateStats.jl
        • MultivariateStats.jl is a Julia package for multivariate statistics and provides a variety of different tools for dimensionality reduction (e.g. ICA, various PCA).
      • HypothesisTests.jl
      • MLBase.jl
        • MLBase.jl provides tools for pre-processing and training models. However, it does not contain any machine learning algorithms.
      • Distances.jl
        • Distances.jl provides all distance measures we can think of. Furthermore, it implements a few distances metrics for weighted scenarios.
      • KernelDensity.jl
        • KernelDensity.jl provides kernel density estimators for univariate, multivariate applications as well as for interpolation.
      • Clustering.jl
        • Clustering.jl provides a wide variety of clustering algorithms as well as metrics for clustering validation.
      • GLM.jl
        • GLM.jl provides linear and general linear models for Julia similar to glm() in R’s stats package.
      • GLMNet.jl
        • GLMNet.jl is a wrapper for the R glmnet package.
      • NMF.jl
        • NMF.jl provides implementations of various Nonnegative Matrix Factorization algorithms. (It looks like this package is deprecated.)
      • MCMC.jl
        • MCMC.jl was moved to Lora.jl which apparently moved back to JuliaStats as Klara.jl
      • Klara.jl
        • Klara.jl provides the basis for all kinds of Markov Chain Monte Carlo (MCMC) inference.
      • TimeSeries.jl
        • TimeSeries.jl provides a very comprehensive set of functions for handling all kinds of time series.
      • StatsFun.jl
        • StatsFun.jl ships a variety of statistics functions, especially for densities/distributions. It seems like there is some overlap with other packages such as Distributions.jl.
      • Lasso.jl
        • Lasso.jl provides Lasso/elastic net linear and generalized linear models.
  • JuliaData
    • JuliaData is an organization within the Julia language that maintains and provides the following packages (not all packages work flawlessly with Julia 1.0 so far):
  • JuliaText
  • JuliaML
  • Knet.jl
  • MLKernels.jl
    • MLKernels.jl contains a collection of Mercer kernel functions.
  • DecisionTree.jl
    • DecisionTree.jl contains decision tree and random forest algorithms for classification and regression implemented in pure Julia.
  • OnlineStats.jl
  • JuliaDB
    • JuliaDB.jl is a database for distributed analytics.
  • CombineML.jl
    • CombineML.jl is a toolbox to create arbitrary ensembles of models. classification only?
  • GeoStats.jl
  • ROCAnalysis.jl
    • ROCAnalysis.jl provides a wide variety of functions for binary classification and is developed by the same person as the ROC package for R.
  • Koala.jl
    • Koala.jl is a framework that focuses on use of unified use of DataFrame objects for various ML algorithms. Some ML algorithms are implemented in Julia, others are a wrapper to existing C++ libraries.
    • There is another version that is a wrapper to Flux.jl called KoalaFlux.jl
  • MLJ.jl
    • MLJ.jl is a package similar to mlr and makes heavy use of Bayesian optimization (MBO). nb!: MLJBase.jl has to be installed first. You can find my first look at MLJ.jl here.
  • ManifoldLearning.jl
    • ManifoldLearning.jl contains various algorithms for manifold learning.

Wrapper for Python and C++ frameworks

  • TensorFlow.jl
    • TensorFlow.jl is a wrapper for TensorFlow similar to TensorFlow’s developed and maintained by Jon Malmaud.
  • ScikitLearn.jl
    • ScikitLearn.jl is a wrapper for scikit-learn. Furthermore, it provides a scikit-learn like interface for some Julia models:
      • GaussianMixtures.jl
      • GaussianProcesses.jl
      • DecisionTree.jl
      • LowRankModels.jl
  • JuliaTorch
    • JuliaTorch is a wrapper for PyTorch

Deprecated/inactive frameworks (that still might be worth a visit)

  • Mocha.jl
  • DeepQLearning.jl
  • Boltzmann.jl
  • MXNet.jl
    • While MXNet is still under heavy development, it seems like MXNet.jl is hardly updated anymore. The latest version of Julia that it works with seems to be v0.4.
    • MXNet.jl has moved to MXNet APIs
  • OnlineAI.jl
    • OnlineAI.jl aims at neural networks for sequential/streaming data sources. It seems like it is deprecated for good.

Package reviews

There exists a nice review of statistics and machine learning libraries implemented in Julia by the University of Warwick.