neuraloperator é uma biblioteca abrangente para aprender operadores neurais em Pytorch. É a implementação oficial para operadores neurais de Fourier e operadores neurais tensorizados.
Ao contrário das redes neurais regulares, os operadores neurais permitem o mapeamento de aprendizado entre os espaços de função, e esta biblioteca fornece todas as ferramentas para fazê -lo em seus próprios dados.
Os operadores neurais também são invariantes de resolução, para que seu operador treinado possa ser aplicado nos dados de qualquer resolução.
Basta clonar o repositório e instalar localmente (no modo editável, para que as alterações no código sejam refletidas imediatamente sem precisar reinstalar):
Git clone https://github.com/neuraloperator/neuraloperator CD NeuralOperator pip install -e. pip install -r requisitos.txt
Você também pode apenas instalar o lançamento estável mais recente da biblioteca no Pypi:
PIP Instale o NeuralOperator
Depois de instalar a biblioteca, você pode começar a treinar os operadores de maneira perfeita:
from neuralop . models import FNO
operator = FNO ( n_modes = ( 16 , 16 ), hidden_channels = 64 ,
in_channels = 3 , out_channels = 1 )A tensorização também é fornecida fora da caixa: você pode melhorar os modelos anteriores simplesmente usando um FNO tensorizado com apenas alguns parâmetros:
from neuralop . models import TFNO
operator = TFNO ( n_modes = ( 16 , 16 ), hidden_channels = 64 ,
in_channels = 3 ,
out_channels = 1 ,
factorization = 'tucker' ,
implementation = 'factorized' ,
rank = 0.05 )Isso usará uma fatoração de Tucker dos pesos. O passe direto será eficiente contratando diretamente as entradas com os fatores da decomposição. As camadas de Fourier terão 5% dos parâmetros de um operador neural de Fourier equivalente e denso!
Confira a documentação para mais!
Crie um arquivo no neuraloperator/config chamado wandb_api_key.txt e cole sua chave de API de pesos e preconceitos lá. Você pode configurar o projeto que deseja usar e seu nome de usuário nos principais arquivos de configuração da YAML.
O NeuralOperator é 100% de código aberto e recebemos todas as contribuições da comunidade! Se você encontrar um bug ou um erro de digitação na documentação ou tiver uma idéia para um recurso que deseja ver, informe-o sobre o rastreador de problemas ou, melhor ainda, abra uma solicitação de tração no Github.
O NeuralOperator possui dependências adicionais para o desenvolvimento, que podem ser encontradas em requirements_dev.txt :
pip install -r requisitos_dev.txt
Antes de enviar suas alterações, verifique se o seu código adere ao nosso estilo de estilo. A maneira mais fácil de fazer isso é com black :
preto .
Testes e documentação são uma parte essencial deste pacote e todas as funções vêm com testes de unidade e documentação. Os testes são executados usando o pacote pytest.
Para executar os testes, basta executar, no terminal:
Pytest -V Neuralop
O HTML para o nosso site de documentação é construído usando sphinx . A documentação é construída a partir da pasta doc .
CD Doc faça html
Isso criará os documentos em ./doc/build/html .
Observe que a documentação requer outras dependências instaláveis em ./doc/requirements_doc.txt .
Para visualizar a documentação localmente, execute:
CD Doc/Build/HTML python -m http.server [Port_num]
Os documentos poderão ser visualizados no localhost:PORT_NUM .
Se você usa o NeuralOperator em um artigo acadêmico, cite [1], [2]:
@misc {KosSaifi2024Neur,
title = {uma biblioteca para aprender operadores neurais},
autor = {Jean Kossaifi e Nikola Kovachki e
Zongyi Li e Davit Pitt e
Miguel Liu-Schiaffini e Robert Joseph George e
Boris Bonev e Kamyar Azizzadenesheli e
Julius Berner e Anima Anandkumar},
ano = {2024},
ePrint = {2412.10354},
ArchivePrefix = {arxiv},
primaryclass = {cs.lg}
}
@Article {Kovachki2021neural,
autor = {Nikola B. Kovachki e
Zongyi Li e
Burigede Liu e
Kamyar Azizzadenesheli e
Kaushik Bhattacharya e
Andrew M. Stuart e
Anima Anandkumar},
title = {Operador neural: Mapas de aprendizado entre espaços de função},
Journal = {corrig},
volume = {abs/2108.08481},
ano = {2021},
}
| [1] | Kossaifi, J., Kovachki, N., Li, Z., Pitt, D., Liu-Schiaffini, M., George, R., Bonev, B., Azizzadenesheli, K., Berner, J.24. |
| [2] | Kovachki, N., Li, Z., Liu, B., Azizzadenesheli, K., Bhattacharya, K., Stuart, A. e Anandkumar A., “Operador neural: Mapas de aprendizado entre espaços de função”, JMLR, 2021. DOI: 10.48550/arxiv.210.210 ”, 2021. |