Profundo
Deepxde es una biblioteca para el aprendizaje científico de la máquina y el aprendizaje informado por física. Deepxde incluye los siguientes algoritmos:
- Red neural informada por física (PINN)
- Resolver diferentes problemas
- Resolver ecuaciones ordinarias/diferenciales ordinarias hacia adelante/inversa (ODES/PDE) [Siam Rev.]
- Resolver ecuaciones integro-diferenciales de avance/inversa (IDES) [Siam Rev.]
- FPINN: Resolución de PDE fracciales hacia adelante/inversa (FPDES) [Siam J. Sci. Computación]
- Caos polinomial arbitrario de NN (NN-APC): resolución de PDE estocásticas hacia adelante/inversa (SPDE) [J. Computación. Phys.]
- PinN con restricciones duras (HPINN): Resolver el diseño inverso/optimización de topología [Siam J. Sci. Computación]
- Mejora de la precisión de Pinn
- Muestreo adaptativo basado en residuos [Siam Rev., Comput. Métodos Appl. Mech. Eng.]
- Pinn (GPINN) mejorado con gradiente [Comput. Métodos Appl. Mech. Eng.]
- Pinn con características de Fourier a múltiples escala [Comput. Métodos Appl. Mech. Eng.]
- Diapositivas, video, video en chino
- Red de operador profundo (informado de física) (Deeponet)
- Deeponet: operadores de aprendizaje [Nat. Mach. Intell.]
- Extensiones de Deeponet, por ejemplo, Pod-Deeponet [Comput. Métodos Appl. Mech. Eng.]
- Mionet: Aprendiendo a los operadores de entrada múltiple [Siam J. Sci. Computación]
- Fourier-Deeponet [Comput. Métodos Appl. Mech. Ing.], Fourier-Mionet [Arxiv]
- Deeponet informado por física [Sci. Adv.]
- Multifidelidad Deeponet [Phys. Rev. Investigación]
- Deepm y Mnet: resolución de problemas multifísicos y multiescala [J. Computación. Phys., J. Comput. Phys.]
- Extrapolación confiable [Comput. Métodos Appl. Mech. Eng.]
- Red neural multifidelidad (MFNN)
- Aprendiendo de los datos de multifidelidad [J. Computación. Phys., PNAS]
Deepxde admite cinco bibliotecas de tensor como backends: TensorFlow 1.x ( tensorflow.compat.v1 en tensorflow 2.x), tensorflow 2.x, pytorch, jax y paddlepaddle. Para cómo seleccionar uno, vea trabajar con diferentes backends.
Documentación : Readthedocs




Características
Deepxde ha implementado muchos algoritmos como se muestra arriba y admite muchas características:
- Permite que el código de usuario sea compacto, parecido estrechamente la formulación matemática.
- Geometrías de dominio complejas sin generación de malla de tiranía. Las geometrías primitivas son intervalo, triángulo, rectángulo, polígono, disco, elipse, en forma de estrella, cuboide, esfera, hipercubo e hiperesfera. Otras geometrías se pueden construir como geometría sólida constructiva (CSG) utilizando tres operaciones booleanas: unión, diferencia e intersección. Deepxde también admite una geometría representada por una nube de puntos.
- 5 tipos de condiciones límite (BCS): Dirichlet, Neumann, Robin, periódica y un BC general, que puede definirse en un dominio arbitrario o en un conjunto de puntos; y funciones de distancia aproximadas para limitaciones duras .
- 3 Métodos de diferenciación automática (AD) para calcular derivados: modo de reverso (es decir, backpropagation), modo de avance y cambio de coordenadas cero (ZCS).
- Diferentes redes neuronales : red neuronal totalmente conectada (FNN), FNN apilada, red neuronal residual, redes de características de Fourier de múltiples escasas (espacio-temporales), etc.
- Muchos métodos de muestreo : uniforme, pseudorandom, muestreo de hipercubos latinos, secuencia de Halton, secuencia de Hammersley y secuencia de Sobol. Los puntos de entrenamiento pueden mantener lo mismo durante el entrenamiento o volver a muestrear (adaptivamente) cada ciertas iteraciones.
- 4 espacios de funciones : Serie de potencia, Chebyshev Polynomial, Gaussian Random Field (1D/2D).
- Entrenamiento de datos paralelos en múltiples GPU.
- Diferentes optimizadores : Adam, L-BFGS, etc.
- Comendigir convenientemente el modelo durante el entrenamiento y cargar un modelo entrenado.
- Backbacks para monitorear los estados internos y las estadísticas del modelo durante la capacitación: parada temprana, etc.
- Cuantificación de la incertidumbre utilizando abandono.
- Float16 , Float32 y Float64 .
- Muchas otras características útiles: pérdidas diferentes (ponderadas), horarios de tarifas de aprendizaje, métricas, etc.
Todos los componentes de Deepxde están libremente acoplados y, por lo tanto, Deepxde está bien estructurado y altamente configurable. Es fácil personalizar Deepxde para satisfacer nuevas demandas.
Instalación
Deepxde requiere que se instalaran una de las siguientes dependencias específicas de backend:
- TensorFlow 1.x: TensorFlow> = 2.7.0
- Tensorflow 2.x: TensorFlow> = 2.3.0, probabilidad de flujo de tensor> = 0.11.0
- Pytorch: Pytorch> = 1.9.0
- Jax: Jax, Flax, Optax
- Paddlepaddle: paddlepaddle> = 2.6.0
Luego, puede instalar Deepxde mismo.
- Instale la versión estable con
pip :
- Instale la versión estable con
conda :
$ conda install -c conda-forge deepxde
- Para los desarrolladores, debe clonar la carpeta a su máquina local y ponerla junto con los scripts de su proyecto.
$ git clone https://github.com/lululxvi/deepxde.git
Explorar más
- Instalar y configurar
- Demostraciones de aproximación de función
- Demostraciones de problemas hacia adelante
- Demostraciones de problemas inversos
- Demostraciones de aprendizaje del operador
- Preguntas frecuentes
- Los trabajos de investigación usados Deepxde
- API
Cita Deepxde
Si usa Deepxde para la investigación académica, se le recomienda citar el siguiente documento:
@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}
}
Contribuyendo a Deepxde
En primer lugar, ¡gracias por tomarse el tiempo para contribuir!
- Informes de errores. Para informar un error, simplemente abra un problema en los problemas de GitHub.
- Sugiriendo mejoras. Para enviar una sugerencia de mejora para Deepxde, que incluye características completamente nuevas y mejoras menores a la funcionalidad existente, háganos saber abriendo un problema en los problemas de GitHub.
- Solicitar solicitudes. Si realizó mejoras en Deepxde, solucionó un error o tenía un nuevo ejemplo, no dude en enviarnos una solicitud de extracción.
- Haciendo preguntas. Para obtener ayuda sobre cómo usar Deepxde o sus funcionalidades, puede abrir una discusión en las discusiones de GitHub.
- Respondiendo preguntas. Si sabe la respuesta a cualquier pregunta en las discusiones, es bienvenido a responder.
Flojo. Deepxde Slack organiza una audiencia principal de usuarios y desarrolladores de Deepxde moderados a experimentados para chat general, discusiones en línea, colaboración, etc. Si necesita una invitación de Slack, envíeme un correo electrónico.
El equipo
Deepxde fue desarrollado por Lu Lu bajo la supervisión del Prof. George Karnidakis en la Universidad de Brown desde el verano de 2018 hasta 2020. Deepxde fue originalmente hostigado en subversión en la Universidad de Brown, bajo el nombre de Sciconet (redes neuronales de computación científica). El 7 de febrero de 2019, Sciconet se trasladó de la subversión a Github, renombrada a Deepxde.
Deepxde es actualmente mantenido por Lu Lu en la Universidad de Yale con importantes contribuciones provenientes de muchas personas talentosas en diversas formas y medios. Una lista no exhaustiva pero creciente debe mencionar: Paul Escapil-Inchauspé, Zongren Zou, Jialin Li, Saransh Chopra, Sensen He, Vladimir Dudenkov, Anran Jiao, Zhongyi Jiang, Shunyuan Mao.
Licencia
LGPL-2.1 Licencia