Deepxde
Deepxde est une bibliothèque pour l'apprentissage machine scientifique et l'apprentissage en physique. Deepxde comprend les algorithmes suivants:
- Réseau neuronal informé de la physique (PINN)
- Résoudre différents problèmes
- Résolution d'équations différentielles ordinaires / parties inverses (ODE / PDE) [Siam Rev.]
- Résolution d'équations inverses et inverses inverses (IDE) [SIAM Rev.]
- FPINN: Résolution de PDE fractionnaires avant / inverse (FPDES) [Siam J. Sci. Comput.]
- NN-Arbitrary Polynomial Chaos (NN-APC): Résolution de PDE stochastiques (SPDES) avant / inverse (SPDES) [J. Comput. Phys.]
- PINN avec des contraintes dures (HPINN): résolution de la conception inverse / optimisation de la topologie [Siam J. Sci. Comput.]
- Amélioration de la précision de PIN
- Échantillonnage adaptatif basé sur résiduel [Siam Rev., Comput. Méthodes Appl. Mécanisme. Eng.]
- PINN amélioré par gradient (GPINN) [Comput. Méthodes Appl. Mécanisme. Eng.]
- Pinn avec fonctionnalités de Fourier à plusieurs échelles [Comput. Méthodes Appl. Mécanisme. Eng.]
- Diapositives, vidéo, vidéo en chinois
- (informé en physique) Network d'opérateur profond (Deeponet)
- Deeponet: Opérateurs d'apprentissage [Nat. Mach. Intellectuel]
- Extensions Deeponet, par exemple, pand-deponet [Comput. Méthodes Appl. Mécanisme. Eng.]
- Mionet: Apprentissage des opérateurs à entrées multiples [Siam J. Sci. Comput.]
- Fourier-Deeponet [Comput. Méthodes Appl. Mécanisme. Eng.], Fourier-Mionet [Arxiv]
- Deeponet informé de la physique [Sci. Adv.]
- Multifidelity Deeponet [Phys. Rev. Research]
- Deepm & Mnet: Résolution de problèmes multiphysiques et multi-échelles [J. Comput. Phys., J. Comput. Phys.]
- Extrapolation fiable [Comput. Méthodes Appl. Mécanisme. Eng.]
- Réseau neuronal de multifidélité (MFNN)
- Apprendre des données de multifidélité [J. Comput. Phys., PNAS]
DeepxDE prend en charge cinq bibliothèques de tenseur comme backends: Tensorflow 1.x ( tensorflow.compat.v1 dans TensorFlow 2.x), TensorFlow 2.x, Pytorch, Jax et Paddlepaddle. Pour en sélectionner un, voir travailler avec différents backends.
Documentation : ReadThedocs




Caractéristiques
Deepxde a implémenté de nombreux algorithmes comme indiqué ci-dessus et prend en charge de nombreuses fonctionnalités:
- Permet au code utilisateur d'être compact, ressemblant étroitement à la formulation mathématique.
- Géométries de domaine complexes sans génération de maillage tyrannie. Les géométries primitives sont l'intervalle, le triangle, le rectangle, le polygone, le disque, l'ellipse, la forme d'étoile, le cuboïde, la sphère, l'hypercube et l'hypersphere. D'autres géométries peuvent être construites comme géométrie solide constructive (CSG) en utilisant trois opérations booléennes: syndicat, différence et intersection. Deepxde prend également en charge une géométrie représentée par un nuage de points.
- 5 Types de conditions aux limites (BC): Dirichlet, Neumann, Robin, périodique et un BC général, qui peut être défini sur un domaine arbitraire ou sur un ensemble de points; et les fonctions de distance approximatives pour les contraintes dures .
- 3 Méthodes de différenciation automatique (AD) Pour calculer les dérivés: mode inverse (c.-à-d. Backpropagation), mode avant et décalage de coordonnées zéro (ZC).
- Différents réseaux de neurones : réseau neuronal entièrement connecté (FNN), FNN empilé, réseau neuronal résiduel, (spatio-temporel) Networks de caractéristiques de Fourier multi-échelles, etc.
- De nombreuses méthodes d'échantillonnage : uniforme, pseudorandom, échantillonnage hypercube latin, séquence de halton, séquence Hammersley et séquence SOBOL. Les points de formation peuvent rester les mêmes pendant l'entraînement ou être rééchantillonnés (de manière adaptative) toutes les itérations.
- 4 Espaces de fonction : Série de puissance, Polynomial Chebyshev, champ aléatoire gaussien (1d / 2d).
- Formation parallèle aux données sur plusieurs GPU.
- Différents optimisateurs : Adam, L-BFGS, etc.
- Économisez facilement le modèle pendant la formation et chargez un modèle formé.
- rappels pour surveiller les états internes et les statistiques du modèle pendant la formation: arrêt précoce, etc.
- Quantification de l'incertitude à l'aide d'un abandon.
- float16 , float32 et float64 .
- Beaucoup d'autres caractéristiques utiles: des pertes différentes (pondérées), des calendriers de taux d'apprentissage, des mesures, etc.
Tous les composants de Deepxde sont couplés de manière lâche, et donc Deepxde est bien structuré et très configurable. Il est facile de personnaliser Deepxde pour répondre à de nouvelles demandes.
Installation
DeepxDE nécessite l'installation de l'une des dépendances spécifiques aux backend suivantes:
- TensorFlow 1.x: TensorFlow> = 2,7.0
- TensorFlow 2.x: TensorFlow> = 2.3.0, probabilité de TensorFlow> = 0,11.0
- Pytorch: pytorch> = 1.9.0
- Jax: Jax, lin, optax
- Paddlepaddle: Paddlepaddle> = 2.6.0
Ensuite, vous pouvez installer Deepxde lui-même.
- Installez la version stable avec
pip :
- Installez la version stable avec
conda :
$ conda install -c conda-forge deepxde
- Pour les développeurs, vous devez cloner le dossier de votre machine locale et le mettre avec vos scripts de projet.
$ git clone https://github.com/lululxvi/deepxde.git
Explorer plus
- Installer et configurer
- Démos d'approximation de la fonction
- Démos de problèmes avancés
- Démos de problèmes inverses
- Démos de l'apprentissage de l'opérateur
- FAQ
- Les articles de recherche ont utilisé Deepxde
- API
Citer Deepxde
Si vous utilisez Deepxde pour la recherche universitaire, vous êtes encouragé à citer l'article suivant:
@article{lu2021deepxde,
author = {Lu, Lu and Meng, Xuhui and Mao, Zhiping and Karniadakis, George Em},
title = {{DeepXDE}: A deep learning library for solving differential equations},
journal = {SIAM Review},
volume = {63},
number = {1},
pages = {208-228},
year = {2021},
doi = {10.1137/19M1274067}
}
Contribuant à Deepxde
Tout d'abord, merci d'avoir pris le temps de contribuer!
- Rapport des bogues. Pour signaler un bogue, ouvrez simplement un problème dans les problèmes de GitHub.
- Suggérant des améliorations. Pour soumettre une suggestion d'amélioration pour Deepxde, y compris des fonctionnalités complètement nouvelles et des améliorations mineures aux fonctionnalités existantes, faites-le-nous savoir en ouvrant un problème dans les problèmes de GitHub.
- Tirez les demandes. Si vous avez apporté des améliorations à Deepxde, corrigé un bug ou en avez eu un nouvel exemple, n'hésitez pas à nous envoyer une requête de traction.
- Poser des questions. Pour obtenir de l'aide sur la façon d'utiliser Deepxde ou ses fonctionnalités, vous pouvez ouvrir une discussion dans les discussions GitHub.
- Répondre aux questions. Si vous connaissez la réponse à toute question dans les discussions, vous êtes accueilli pour répondre.
Mou. Le Deepxde Slack héberge un public principal d'utilisateurs et développeurs Deepxde modérés à expérimentés pour le chat général, les discussions en ligne, la collaboration, etc. Si vous avez besoin d'une invitation Slack, veuillez m'envoyer un e-mail.
L'équipe
Deepxde a été développé par Lu Lu sous la supervision du professeur George Kardiadakis à l'Université Brown de l'été 2018 à 2020. Deepxde a été à l'origine auto-hébergé à la subversion à l'Université Brown, sous le nom de Sciconet (Scientific Computing Neural Networks). Le 7 février 2019, Sciconet a été déplacé de Subversion à Github, renommé Deepxde.
Deepxde est actuellement entretenu par Lu Lu à l'Université de Yale, des contributions majeures provenant de nombreuses personnes talentueuses sous diverses formes et moyens. Une liste non exhaustive mais croissante doit mentionner: Paul Escapil-Inchauspé, Zongren Zou, Jialin Li, Saransh Chopra, Sensen He, Vladimir Dudenkov, Anran Jiao, Zhongyi Jiang, Shunyuan Mao.
Licence
Licence LGPL-2.1