neuraloperator est une bibliothèque complète pour l'apprentissage des opérateurs neuronaux à Pytorch. Il s'agit de la mise en œuvre officielle des opérateurs neuronaux de Fourier et des opérateurs neuronaux tenorisés.
Contrairement aux réseaux de neurones réguliers, les opérateurs neuronaux permettent d'apprendre la cartographie entre les espaces de fonction, et cette bibliothèque fournit tous les outils pour le faire sur vos propres données.
Les opérateurs neuronaux sont également invariants de résolution, de sorte que votre opérateur formé peut être appliqué sur les données de toute résolution.
Il suffit de cloner le référentiel et d'installer localement (en mode modifiable, donc les modifications du code sont immédiatement reflétées sans avoir à réinstaller):
Git Clone https://github.com/neuraloperator/neuralOperator CD NeuralOperator pip install -e. pip install -r exigences.txt
Vous pouvez également simplement installer la version stable la plus récente de la bibliothèque sur PYPI:
PIP Installer NeuralOperator
Après avoir installé la bibliothèque, vous pouvez commencer à former des opérateurs de manière transparente:
from neuralop . models import FNO
operator = FNO ( n_modes = ( 16 , 16 ), hidden_channels = 64 ,
in_channels = 3 , out_channels = 1 )La tenorisation est également fournie hors de la boîte: vous pouvez améliorer les modèles précédents en utilisant simplement un FNO Tucker Tensorisé avec seulement quelques paramètres:
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 )Cela utilisera une factorisation Tucker des poids. Le laissez-passer avant sera efficace en contractant directement les intrants avec les facteurs de la décomposition. Les couches de Fourier auront 5% des paramètres d'un opérateur neuronal de Fourier équivalent et dense!
Découvrez la documentation pour en savoir plus!
Créez un fichier dans neuraloperator/config appelé wandb_api_key.txt et collez vos poids et biais sur la clé de l'API. Vous pouvez configurer le projet que vous souhaitez utiliser et votre nom d'utilisateur dans les principaux fichiers de configuration YAML.
Le neuralopérateur est 100% open-source et nous accueillons toutes les contributions de la communauté! Si vous apercevez un bug ou une faute de frappe dans la documentation, ou si vous avez une idée d'une fonctionnalité que vous souhaitez voir, veuillez le signaler sur notre tracker de numéro, ou mieux, ouvrez une nouvelle demande sur GitHub.
NeuralOperator a des dépendances supplémentaires pour le développement, qui peuvent être trouvées dans requirements_dev.txt :
PIP INSTALL -R-RIDENSE_DEV.TXT
Avant de soumettre vos modifications, vous devez vous assurer que votre code adhère à notre guide de style. La façon la plus simple de le faire est avec black :
noir .
Les tests et la documentation sont une partie essentielle de ce package et toutes les fonctions sont livrées avec des tests unitaires et de la documentation. Les tests sont exécutés à l'aide du package Pytest.
Pour exécuter les tests, exécutez simplement, dans le terminal:
pytest -v neuralop
Le HTML pour notre site Web de documentation est construit à l'aide sphinx . La documentation est construite à l'intérieur du dossier doc .
cd doc faire du HTML
Cela construira les documents dans ./doc/build/html .
Notez que la documentation nécessite d'autres dépendances installables à partir de ./doc/requirements_doc.txt .
Pour afficher la documentation localement, exécutez:
cd doc / build / html python -m http.server [port_num]
Les documents seront ensuite visibles sur localhost:PORT_NUM .
Si vous utilisez le neuralopérateur dans un journal académique, veuillez citer [1], [2]:
@Misc {kossaifi2024neural,
title = {une bibliothèque pour apprendre les opérateurs de neurones},
auteur = {Jean Kossaifi et Nikola Kovachki et
Zongyi Li et Davit Pitt et
Miguel Liu-Schiaffini et Robert Joseph George et
Boris Bonev et Kamyar Azizzadenesheli et
Julius Berner et Anima Anandkumar},
année = {2024},
eprint = {2412.10354},
archivePrefix = {arXiv},
primaireClass = {cs.lg}
}
@article {kovachki2021neural,
auteur = {Nikola B. Kovachki et
Zongyi li et
Bugede liu et
Kamyar azizzadenesheli et
Kaushik Bhattacharya et
Andrew M. Stuart et
Anima anandkumar},
title = {Opérateur neuronal: cartes d'apprentissage entre les espaces de fonction},
journal = {corr},
volume = {ABS / 2108.08481},
année = {2021},
}
| [1] | Kossaifi, J., Kovachki, N., Li, Z., Pitt, D., Liu-Schiffini, M., George, R., Bonev, B., Azizzadeshesheli, K., Berner, J., et Anandkumar, A., "A Library for Learning Neural Operators", Arxiv, 2024. DOI: 10.48550 / arxiv.2412.10354. |
| [2] | Kovachki, N., Li, Z., Liu, B., Azizzadeshesheli, K., Bhattacharya, K., Stuart, A., et Anandkumar A., «Opérateur neuronal: cartes d'apprentissage entre les espaces de fonction», JMLR, 2021. DOI: 10.48550 / arxiv.2108.08481. |