• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    Julia
  • License
    MIT License
  • Created over 2 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automatic differentiation of implicit functions

ImplicitDifferentiation.jl

Stable Dev Build Status Coverage Code Style: Blue Aqua QA

ImplicitDifferentiation.jl is a package for automatic differentiation of functions defined implicitly, i.e., forward mappings

$$x \in \mathbb{R}^n \longmapsto y(x) \in \mathbb{R}^m$$

whose output is defined by conditions

$$c(x,y(x)) = 0 \in \mathbb{R}^m$$

Background

Implicit differentiation is useful to differentiate through two types of functions:

  • Those for which automatic differentiation fails. Reasons can vary depending on your backend, but the most common include calls to external solvers, mutating operations or type restrictions.
  • Those for which automatic differentiation is very slow. A common example is iterative procedures like fixed point equations or optimization algorithms.

If you just need a quick overview, check out our JuliaCon 2022 talk. If you want a deeper dive into the theory, you can refer to the paper Efficient and modular implicit differentiation by Blondel et al. (2022).

Getting started

To install the stable version, open a Julia REPL and run:

julia> using Pkg; Pkg.add("ImplicitDifferentiation")

For the latest version, run this instead:

julia> using Pkg; Pkg.add(url="https://github.com/gdalle/ImplicitDifferentiation.jl")

Please read the documentation, especially the examples and FAQ.

Related projects

In Julia:

In Python:

  • google/jaxopt: hardware accelerated, batchable and differentiable optimizers in JAX

More Repositories

1

HiddenMarkovModels.jl

A Julia package for HMM modeling, simulation, inference and learning.
Julia
45
star
2

TheFastBilateralSolver

Fast bilateral filtering for image processing
Jupyter Notebook
28
star
3

ModernJuliaWorkflows

Blog posts on best practices for Julia development
CSS
20
star
4

PointProcesses.jl

A package for temporal point process modeling, simulation and inference (unmaintained)
Julia
18
star
5

IntroJulia

An interactive introduction to the Julia language
Julia
15
star
6

SparseMatrixColorings.jl

Coloring algorithms for sparse Jacobian and Hessian matrices
Julia
15
star
7

GridGraphs.jl

Graphs defined by a grid of vertices. Compatible with the Graphs.jl ecosystem
Julia
10
star
8

MultiAgentPathFinding.jl

Fast algorithms for Multi-Agent PathFinding in Julia
Julia
8
star
9

LaTeX-packages

LaTeX setup for papers and slides
TeX
6
star
10

FastPriorityQueues.jl

Possibly faster alternatives to the priority queue from DataStructures.jl (unmaintained)
Julia
6
star
11

PlutoProfile.jl

Profile functions inside Pluto notebooks (unmaintained)
Julia
5
star
12

DifferentiableFrankWolfe.jl

Differentiable wrapper for FrankWolfe.jl convex optimization routines
Julia
5
star
13

MetaDataGraphs.jl

Yet another package for graphs with metadata (unmaintained)
Julia
4
star
14

ForwardDiffOverLogarithmicNumbers.jl

Julia
4
star
15

JuliaOptimizationDays2023

My talks for the Julia and Optimization Days 2023 in Paris
Julia
4
star
16

ControlledHiddenMarkovModels.jl

A package for Hidden Markov Models with exogenous control variables.
Julia
3
star
17

HashCode2014.jl

Lightweight package designed to interact with the data of the 2014 Google Hash Code
Julia
3
star
18

SchroedingerChess

Implementation of Haft Schroedinger Chess
Python
3
star
19

CheckConcreteStructs.jl

Julia
2
star
20

Flatland.jl

A barebones Julia version of the Flatland railway simulator
Julia
2
star
21

JolinCloudTest.jl

1
star
22

gdalle

1
star
23

ROT-TP

Practical programming session on Wardrop equilibria
Julia
1
star
24

KernelMethods

Kernel methods for ML (MVA) - Kaggle challenge
Python
1
star
25

StochasticBlockModelVariants.jl

Simulation and inference for contextual and neural SBMs
Julia
1
star
26

Logos

Julia
1
star
27

EPFLCodingCamp2024

Julia
1
star