Deepxde
O Deepxde é uma biblioteca para aprendizado científico de metralhador e aprendizado informado por física. Deepxde inclui os seguintes algoritmos:
- Rede neural informada por física (PINN)
- resolvendo problemas diferentes
- Resolvendo equações diferenciais ordinárias/inversas/inversas (ODES/PDEs) [Siam Rev.]
- Resolvendo Equações Integro-Diferenciais Avançadas/Inversas (IDES) [Siam Rev.]
- FPINN: Resolvendo PDEs fracionários para frente/inverso (FPDEs) [Siam J. Sci. Comput.]
- Chaos polinomial nn-arbitrário (NN-APC): resolvendo PDEs estocásticos para frente/inverso (SPDEs) [J. Computação. Phys.]
- PINN com restrições difíceis (HPINN): Resolvendo o Projeto Inverso/Otimização da Topologia [Siam J. Sci. Comput.]
- melhorando a precisão do pinn
- Amostragem adaptativa baseada em resíduos [Siam Rev., Comput. Métodos Appl. Mech. Eng.]
- Pinn aprimorado por gradiente (GPINN) [Comput. Métodos Appl. Mech. Eng.]
- Pinn com recursos de Fourier em várias escalas [Comput. Métodos Appl. Mech. Eng.]
- Slides, vídeo, vídeo em chinês
- (Física informada) Rede de Operadores Deep (Deponenet)
- Deoponet: Operadores de Aprendizagem [Nat. Mach. Intell.]
- Extensões deponetas, por exemplo, pod-deponet [Comput. Métodos Appl. Mech. Eng.]
- Mionet: Aprendendo operadores de múltiplas entradas [Siam J. Sci. Comput.]
- Fourier-Deeponet [Comput. Métodos Appl. Mech. Eng.], Fourier-Mionet [Arxiv]
- Deeponet informado pela física [SCI. Adv.]
- Multifidelity Dedonet [Phys. Rev. Research]
- Deepm & Mnet: resolvendo problemas multifísicos e multiscaterais [J. Computação. Phys., J. Comput. Phys.]
- Extrapolação confiável [Comput. Métodos Appl. Mech. Eng.]
- Rede Neural de Multifidelidade (MFNN)
- Aprendendo com dados de multifidelidade [J. Computação. Phys., PNAs]
O Deepxde suporta cinco bibliotecas de tensoros como back -end: tensorflow 1.x ( tensorflow.compat.v1 no tensorflow 2.x), tensorflow 2.x, pytorch, Jax e paddlepaddle. Para como selecionar um, consulte trabalhando com diferentes back -ends.
Documentação : ReadThEdocs




Características
O Deepxde implementou muitos algoritmos, como mostrado acima, e suporta muitos recursos:
- Permite que o código do usuário seja compacto, semelhante à formulação matemática.
- Geometrias de domínio complexas sem geração de malha de tirania. As geometrias primitivas são intervalos, triângulo, retângulo, polígono, disco, elipse, em forma de estrela, cubóide, esfera, hipercubo e hiperesfera. Outras geometrias podem ser construídas como geometria sólida construtiva (CSG) usando três operações booleanas: união, diferença e interseção. O Deepxde também suporta uma geometria representada por uma nuvem de pontos.
- 5 tipos de condições de contorno (BCS): Dirichlet, Neumann, Robin, Periódico e um BC geral, que podem ser definidos em um domínio arbitrário ou em um conjunto de pontos; e funções de distância aproximada para restrições difíceis .
- 3 Métodos de diferenciação automática (AD) para calcular derivados: modo reverso (isto é, retropagação), modo de frente e mudança de coordenada zero (ZCS).
- Diferentes redes neurais : rede neural totalmente conectada (FNN), FNN empilhada, rede neural residual, redes de recursos de Fourier em escala múltipla (espaço-temporal), etc.
- Muitos métodos de amostragem : uniforme, pseudorandom, amostragem de hipercubo latino, sequência de Halton, sequência de Hammersley e sequência de Sobol. Os pontos de treinamento podem manter o mesmo durante o treinamento ou serem reamostrados (adaptativamente) todas as iterações.
- 4 Espaços de função : Série de Power, Chebyshev Polinomial, campo aleatório gaussiano (1d/2d).
- Treinamento paralelo de dados em várias GPUs.
- Otimizadores diferentes: Adam, L-BFGs, etc.
- Salve convenientemente o modelo durante o treinamento e carregue um modelo treinado.
- retornos de chamada para monitorar os estados internos e estatísticas do modelo durante o treinamento: parada precoce, etc.
- Quantificação da incerteza usando o abandono.
- Float16 , Float32 e Float64 .
- Muitos outros recursos úteis: perdas diferentes (ponderadas), cronogramas de taxa de aprendizado, métricas, etc.
Todos os componentes do Deepxde são vagamente acoplados e, portanto, o Deepxde é bem estruturado e altamente configurável. É fácil personalizar o Deepxde para atender às novas demandas.
Instalação
Deepxde requer que uma das seguintes dependências específicas de back-end seja instalada:
- Tensorflow 1.x: tensorflow> = 2.7.0
- TensorFlow 2.x: Tensorflow> = 2.3.0, Probabilidade do TensorFlow> = 0,11.0
- Pytorch: pytorch> = 1.9.0
- Jax: Jax, linho, optax
- Paddlepaddle: Paddlepaddle> = 2.6.0
Em seguida, você pode instalar o próprio Deepxde.
- Instale a versão estável com
pip :
- Instale a versão estável com
conda :
$ conda install -c conda-forge deepxde
- Para os desenvolvedores, você deve clonar a pasta para sua máquina local e colocá -la junto com os scripts do projeto.
$ git clone https://github.com/lululxvi/deepxde.git
Explorar mais
- Instalar e configurar
- Demos de aproximação da função
- Demos de problemas para a frente
- Demos de problemas inversos
- Demonsionadores de aprendizado do operador
- Perguntas frequentes
- Documentos de pesquisa usavam Deepxde
- API
Citar Deepxde
Se você usa o Deepxde para pesquisa acadêmica, é incentivado a citar o seguinte artigo:
@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}
}
Contribuindo para o Deepxde
Primeiro, obrigado por reservar um tempo para contribuir!
- Relatórios de bugs. Para relatar um bug, basta abrir um problema nos problemas do GitHub.
- Sugerindo aprimoramentos. Para enviar uma sugestão de aprimoramento para o Deepxde, incluindo recursos completamente novos e pequenas melhorias na funcionalidade existente, informe -nos abrindo um problema nos problemas do GitHub.
- Puxar solicitações. Se você fez melhorias no Deepxde, corrigiu um bug ou teve um novo exemplo, fique à vontade para nos enviar uma solicitação de tração.
- Fazendo perguntas. Para obter ajuda sobre como usar o Deepxde ou suas funcionalidades, você pode abrir uma discussão nas discussões do Github.
- Respondendo a perguntas. Se você souber a resposta para qualquer pergunta nas discussões, é bem -vindo para responder.
Folga. O Slack Deepxde hospeda um público principal de usuários e desenvolvedores de Deepxde moderado a experiente para bate -papo geral, discussões on -line, colaboração etc. Se você precisar de um convite de folga, envie -me um email.
A equipe
O Deepxde foi desenvolvido por Lu Lu sob a supervisão do Prof. George Karniadekis na Brown University, desde o verão de 2018 a 2020. O Deepxde foi originalmente auto-hospedado em subversão na Universidade Brown, sob o nome SCiconet (redes neurais de computação científica). Em 7 de fevereiro de 2019, o SCICONET foi transferido da subversão para o Github, renomeado para Deepxde.
O Deepxde é atualmente mantido por Lu Lu na Universidade de Yale, com grandes contribuições provenientes de muitos indivíduos talentosos de várias formas e meios. Uma lista não exaustiva, mas crescente, precisa mencionar: Paul Escapil-InChauspé, Zongren Zou, Jialin Li, Saransh Chopra, Sensen He, Vladimir Dudenkov, Anran Jiao, Zhongyi Jiang, Shunyuan Mao.
Licença
Licença LGPL-2.1