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
Keywords from Contributors
Repository
Automatic differentiation of implicit functions
Basic Info
- Host: GitHub
- Owner: JuliaDecisionFocusedLearning
- License: mit
- Language: Julia
- Default Branch: main
- Homepage: https://juliadecisionfocusedlearning.github.io/ImplicitDifferentiation.jl/
- Size: 2.48 MB
Statistics
- Stars: 133
- Watchers: 5
- Forks: 8
- Open Issues: 13
- Releases: 22
Topics
Metadata Files
README.md
ImplicitDifferentiation.jl
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:
- SciML ecosystem, especially LinearSolve.jl, NonlinearSolve.jl and Optimization.jl
- jump-dev/DiffOpt.jl: differentiation of convex optimization problems
- axelparmentier/InferOpt.jl: approximate differentiation of combinatorial optimization problems
- JuliaNonconvex/NonconvexUtils.jl: contains the original implementation from which this package drew inspiration
In Python:
- google/jaxopt: hardware accelerated, batchable and differentiable optimizers in JAX
Owner
- Name: JuliaDecisionFocusedLearning
- Login: JuliaDecisionFocusedLearning
- Kind: organization
- Repositories: 1
- Profile: https://github.com/JuliaDecisionFocusedLearning
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
Top Committers
| Name | 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
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
- Homepage: https://juliadecisionfocusedlearning.github.io/ImplicitDifferentiation.jl/
- Documentation: https://docs.juliahub.com/General/ImplicitDifferentiation/stable/
- License: MIT
-
Latest release: 0.9.0
published 8 months ago