Sparse Automatique Differentiation

Forward automatic differentiation using operator overloading and sparse jacobians
188 téléchargements
Mise à jour 29 jan. 2023

This project implements a Matlab/ forward automatic differentiation method, (wikipedia definition https://en.wikipedia.org/wiki/Automatic_differentiation#Forward_accumulation) based on operator overloading. This does not provide backward mode. It enables precise and efficient computation of the Jacobian of a function. This contrasts with numerical differentiation (a.k.a finite differences) that is unprecise due to roundoff errors and that cannot exploit the sparsity of the derivatives.
In contrast with most existing automatic differentiation Matlab toolboxes:
1) Derivatives are represented as sparse matrices, which yield to large speedups when the Jacobian of the function - we aim to differentiate is sparse or when intermediate accumulated Jacobian matrices are sparse (see the image denoising example) .
2) N dimensional arrays are supported while many Matlab automatic differentiation toolboxes only support scalars, vectors and 2D matrices

It is likely that the speed could be improved by representing Jacobian matrices by their transpose, due to the way Matlab represents internally sparse matrices

a simple example using a 3D array:

>> f=@(x) sum(x.^2,3);
>> full(AutoDiffJacobianAutoDiff(f,ones(2,2,2)))
ans =

2.0000 0 0 0 2.0000 0 0 0
0 2.0000 0 0 0 2.0000 0 0
0 0 2.0000 0 0 0 2.0000 0
0 0 0 2.0000 0 0 0 2.0000

see the github page https://github.com/martinResearch/MatlabAutoDiff for more examples and a more detailed explaination

Citation pour cette source

martin de la gorce (2024). Sparse Automatique Differentiation (https://github.com/martinResearch/MatlabAutoDiff), GitHub. Récupéré le .

Compatibilité avec les versions de MATLAB
Créé avec R2014a
Compatible avec toutes les versions
Plateformes compatibles
Windows macOS Linux
Catégories
En savoir plus sur Sparse Matrices dans Help Center et MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Les versions qui utilisent la branche GitHub par défaut ne peuvent pas être téléchargées

Version Publié le Notes de version
1.0.0.0

improve doc
adding example

updating example
changing name and improving description

Pour consulter ou signaler des problèmes liés à ce module complémentaire GitHub, accédez au dépôt GitHub.
Pour consulter ou signaler des problèmes liés à ce module complémentaire GitHub, accédez au dépôt GitHub.