Skip to main content

autodiff

Auto Differentiation

3.1.1. Auto Differentiation

SciML/DiffEqSensitivity.jl: A component of the DiffEq ecosystem for enabling sensitivity analysis for scientific machine learning (SciML). Optimize-then-discretize, discretize-then-optimize, and more for ODEs, SDEs, DDEs, DAEs, etc.

EnzymeAD/Enzyme.jl: Julia bindings for the Enzyme automatic differentiator

Julia:

FluxML/Zygote.jl: Intimate Affection Auditor

JuliaDiffEqFlux organization

JuliaDiff

JuliaDiff/ForwardDiff.jl: Forward Mode Automatic Differentiation for Julia

JuliaDiff/ReverseDiff.jl: Reverse Mode Automatic Differentiation for Julia

JuliaDiff/AbstractDifferentiation.jl: An abstract interface for automatic differentiation.

JuliaDiff/TaylorSeries.jl: A julia package for Taylor polynomial expansions in one and several independent variables.

kailaix/ADCME.jl: Automatic Differentiation Library for Computational and Mathematical Engineering

chakravala/Leibniz.jl: Tensor algebra utility library

briochemc/F1Method.jl: F-1 method

Python:

google/jax: Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more

pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration

tensorflow/tensorflow: An Open Source Machine Learning Framework for Everyone

Similar to SciMLSensitivity.jlAMICI-dev/AMICI: Advanced Multilanguage Interface to CVODES and IDAS

Auto Difference

Julia:

SciML/DiffEqOperators.jl: Linear operators for discretizations of differential equations and scientific machine learning (SciML)

QuantEcon/SimpleDifferentialOperators.jl: Library for simple upwind finite differences

Python:

maroba/findiff: Python package for numerical derivatives and partial differential equations in any number of dimensions.

PyLops/pylops: PyLops – A Linear-Operator Library for Python

Differential Optimization (Conditional gradients)

Julia:

ZIB-IOL/FrankWolfe.jl: Julia implementation for various Frank-Wolfe and Conditional Gradient variants

jump-dev/DiffOpt.jl: Differentiating convex optimization programs w.r.t. program parameters

gdalle/ImplicitDifferentiation.jl: Automatic differentiation of implicit functions

matbesancon/MathOptSetDistances.jl: Distances to sets for MathOptInterface

axelparmentier/InferOpt.jl: Combinatorial optimization layers for machine learning pipelines

python:

cvxgrp/cvxpylayers: Differentiable convex optimization layers

Subgradient, Condition, Projected, Proximal gradients

Julia:

Proximal:

JuliaFirstOrder/ProximalOperators.jl: Proximal operators for nonsmooth optimization in Julia

JuliaFirstOrder/ProximalAlgorithms.jl: Proximal algorithms for nonsmooth optimization in Julia

JuliaSmoothOptimizers/ShiftedProximalOperators.jl: Proximal operators for use with RegularizedOptimization

Prox Repository

ReviewPyLops/pyproximal: PyProximal – Proximal Operators and Algorithms in Python

Condition Gradient:

ZIB-IOL/FrankWolfe.jl: Julia implementation for various Frank-Wolfe and Conditional Gradient variants

Derivatives of Special Functions

cgeoga/BesselK.jl: An AD-compatible modified second-kind Bessel function.