ImplicitDifferentiation

Automatic differentiation of implicit functions

https://github.com/juliadecisionfocusedlearning/implicitdifferentiation.jl

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.8%) to scientific vocabulary

Keywords

autodiff automatic-differentiation implicit julia machine-learning optimization

Keywords from Contributors

pdes numerical programming-language sciml differential-equations ode partial-differential-equations julialang neural-ode differentialequations
Last synced: 6 months ago · JSON representation ·

Repository

Automatic differentiation of implicit functions

Basic Info
Statistics
  • Stars: 133
  • Watchers: 5
  • Forks: 8
  • Open Issues: 13
  • Releases: 22
Topics
autodiff automatic-differentiation implicit julia machine-learning optimization
Created almost 4 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

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

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

whose output is defined by conditions

math 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/JuliaDecisionFocusedLearning/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

Owner

  • Name: JuliaDecisionFocusedLearning
  • Login: JuliaDecisionFocusedLearning
  • Kind: organization

Citation (CITATION.bib)

@misc{ImplicitDifferentiation.jl,
	author  = {Guillaume Dalle, Mohamed Tarek and contributors},
	title   = {ImplicitDifferentiation.jl},
	url     = {https://github.com/gdalle/ImplicitDifferentiation.jl},
	version = {v0.6.0},
	year    = {2024},
	month   = {6}
}

@phdthesis{dalle:tel-04053322,
  TITLE = {{Machine learning and combinatorial optimization algorithms, with applications to railway planning}},
  AUTHOR = {Dalle, Guillaume},
  URL = {https://pastel.hal.science/tel-04053322},
  NUMBER = {2022ENPC0047},
  SCHOOL = {{{\'E}cole des Ponts ParisTech}},
  YEAR = {2022},
  MONTH = Dec,
  KEYWORDS = {Machine learning ; Combinatorial optimization ; Latent variable models ; Differentiable optimization layers ; Julia language ; Railway planning ; Apprentissage statistique ; Optimisation combinatoire ; Mod{\`e}les {\`a} variables latentes ; Couches diff{\'e}rentiables d'optimisation ; Langage Julia ; Planification ferroviaire},
  TYPE = {Theses},
  PDF = {https://pastel.hal.science/tel-04053322/file/TH2022ENPC0047.pdf},
  HAL_ID = {tel-04053322},
  HAL_VERSION = {v1},
}

GitHub Events

Total
  • Create event: 24
  • Commit comment event: 18
  • Issues event: 1
  • Release event: 6
  • Watch event: 8
  • Delete event: 17
  • Issue comment event: 31
  • Push event: 83
  • Pull request review event: 1
  • Pull request event: 38
  • Fork event: 2
Last Year
  • Create event: 24
  • Commit comment event: 18
  • Issues event: 1
  • Release event: 6
  • Watch event: 8
  • Delete event: 17
  • Issue comment event: 31
  • Push event: 83
  • Pull request review event: 1
  • Pull request event: 38
  • Fork event: 2

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 137
  • Total Committers: 8
  • Avg Commits per committer: 17.125
  • Development Distribution Score (DDS): 0.19
Past Year
  • Commits: 20
  • Committers: 2
  • Avg Commits per committer: 10.0
  • Development Distribution Score (DDS): 0.25
Top Committers
Name Email Commits
Guillaume Dalle 2****e 111
Mohamed Tarek m****8@g****m 13
github-actions[bot] 4****] 6
sfalmo 5****o 2
Fredrik Bagge Carlson b****n@g****m 2
Yingbo Ma m****5@g****m 1
Thore Kockerols t****1 1
Pietro Monticone 3****e 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 5
  • Total pull requests: 53
  • Average time to close issues: N/A
  • Average time to close pull requests: 4 days
  • Total issue authors: 2
  • Total pull request authors: 4
  • Average comments per issue: 3.2
  • Average comments per pull request: 1.23
  • Merged pull requests: 45
  • Bot issues: 0
  • Bot pull requests: 10
Past Year
  • Issues: 3
  • Pull requests: 45
  • Average time to close issues: N/A
  • Average time to close pull requests: 3 days
  • Issue authors: 1
  • Pull request authors: 3
  • Average comments per issue: 0.33
  • Average comments per pull request: 0.96
  • Merged pull requests: 39
  • Bot issues: 0
  • Bot pull requests: 7
Top Authors
Issue Authors
  • gdalle (4)
  • benjaminfaber (1)
  • mohamed82008 (1)
Pull Request Authors
  • gdalle (44)
  • github-actions[bot] (13)
  • benjaminfaber (2)
  • longemen3000 (2)
Top Labels
Issue Labels
bug (1) feature (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • julia 26 total
  • Total dependent packages: 5
  • Total dependent repositories: 0
  • Total versions: 21
juliahub.com: ImplicitDifferentiation

Automatic differentiation of implicit functions

  • Versions: 21
  • Dependent Packages: 5
  • Dependent Repositories: 0
  • Downloads: 26 Total
Rankings
Stargazers count: 8.7%
Dependent repos count: 9.9%
Dependent packages count: 13.2%
Average: 18.0%
Forks count: 40.4%
Last synced: 6 months ago