RéservoirPy (v0.3.12) ??
Code simple et flexible pour les architectures Reservoir Computing comme Echo State Networks (ESN).
Des nouvelles passionnantes ! Nous venons de lancer un nouvel outil bêta basé sur un grand modèle linguistique ! Vous pouvez discuter avec notre "ReservoirChat" et poser des questions sur le Reservoir Computing ou le codage des réservoirs ! ? Ne le manquez pas, il est disponible pour une durée limitée ! ⏳ https://chat.reservoirpy.inria.fr
à partir de réservoirpy.nodes import Reservoir, Ridge, Inputdata = Input(input_dim=1)reservoir = Reservoir(100, lr=0.3, sr=1.1)readout = Ridge(ridge=1e-6)esn = data >> réservoir >> readoutforecast = esn.fit(X, y).run(série temporelle)
ReservoirPy est une bibliothèque simple et conviviale basée sur des modules scientifiques Python. Il fournit une interface flexible pour mettre en œuvre des architectures Reservoir Computing (RC) efficaces avec un accent particulier sur les réseaux d'état d'écho (ESN). Les fonctionnalités avancées de ReservoirPy permettent d'améliorer l'efficacité du temps de calcul sur un simple ordinateur portable par rapport à l'implémentation de base de Python, avec des ensembles de données de toute taille.
Certaines de ses fonctionnalités sont : la formation hors ligne et en ligne , l'implémentation parallèle , le calcul matriciel clairsemé , l'initialisation spectrale rapide, les règles d'apprentissage avancées (par exemple Plasticité intrinsèque ) etc. Il permet également de créer facilement des architectures complexes avec plusieurs réservoirs (par exemple les réservoirs profonds ), lectures et boucles de rétroaction complexes . De plus, des outils graphiques sont inclus pour explorer facilement les hyperparamètres à l'aide de la bibliothèque hyperopt . Enfin, il comprend plusieurs tutoriels explorant des architectures exotiques et des exemples de reproduction d'articles scientifiques.
Cette bibliothèque fonctionne pour Python 3.8 et supérieur.
Suivez les mises à jour et les nouvelles versions de @reservoirpy sur Twitter.
Consultez la documentation officielle de ReservoirPy pour en savoir plus sur les principales fonctionnalités de ReservoirPy, son API et le processus d'installation. Ou vous pouvez accéder directement au Guide de l'utilisateur avec des tutoriels.
pip installer réservoirpy
(Voir ci-dessous pour des options d'installation plus avancées)
Étape 1 : Charger l'ensemble de données
ReservoirPy est livré avec un générateur de données pratique capable de créer des séries temporelles synthétiques pour des tâches bien connues telles que la prévision de séries temporelles Mackey-Glass.
depuis réservoirpy.datasets import mackey_glassX = mackey_glass(n_timesteps=2000)
Étape 2 : Créer un réseau Echo State...
...ou tout type de modèle que vous souhaitez utiliser pour résoudre votre tâche. Dans ce cas d'utilisation simple, nous testerons Echo State Networks (ESN), l'une des architectures les plus minimales des machines Reservoir Computing.
Un ESN est constitué d'un réservoir , un réseau récurrent aléatoire utilisé pour coder nos entrées dans un espace de grande dimension (non linéaire), et d'une lecture , une simple couche de neurones à action directe chargée de lire la sortie souhaitée. des activations du réservoir.
depuis réservoirpy.nodes import Reservoir, Ridgereservoir = Reservoir (units = 100, lr = 0,3, sr = 1,25) readout = Ridge (output_dim = 1, ridge = 1e-5)
On obtient ici un réservoir de 100 neurones, un rayon spectral de 1,25 et un taux de fuite de 0,3 (vous pouvez en apprendre davantage sur ces hyperparamètres en parcourant le tutoriel Comprendre et optimiser les hyperparamètres). Ici, notre couche de lecture n'est qu'une seule unité, sur laquelle nous recevrons les connexions de (toutes les unités du) réservoir. Notez que seules les connexions de la couche de lecture sont entraînées. C’est l’une des pierres angulaires de toutes les techniques de Reservoir Computing. Dans notre cas, nous entraînerons ces connexions par régression linéaire, avec un coefficient de régularisation de 10 -5 .
Maintenant, connectons tout en utilisant l'opérateur >>
.
esn = réservoir >> lecture
C'est ça! Étape suivante : ajuster les poids de lecture pour effectuer la tâche souhaitée. Nous formerons l’ESN à faire des prévisions avec une longueur d’avance sur nos séries temporelles.
Étape 3 : Installer et exécuter l'ESN
Nous entraînons notre ESN sur les 500 premiers pas de temps de la série temporelle, avec 100 étapes utilisées pour réchauffer les états du réservoir.
esn.fit(X[:500], X[1:501], échauffement=100)
Notre ESN est désormais formé et prêt à être utilisé. Exécutons-le sur le reste de la série temporelle :
prédictions = esn.run(X[501:-1])
En guise de raccourci, les deux opérations peuvent être effectuées sur une seule ligne !
prédictions = esn.fit(X[:500], X[1:501]).run(X[501:-1])
Évaluons maintenant ses performances.
Étape 4 : Évaluer l’ESN
à partir de réservoirpy.observables import rmse, rsquareprint("RMSE:", rmse(X[502:], prédictions), "R^2 score:", rsquare(X[502:], prédictions))
Exécutez et analysez ce fichier simple (dans le dossier « Tutoriels/Exemples simples avec Mackey-Glass ») pour voir un exemple complet de prédiction de séries temporelles avec les ESN :
simple_example_MackeyGlass.py (en utilisant la classe ESN)
python simple_example_MackeyGlass.py
Si vous rencontrez des problèmes pour tester certains exemples, consultez les exigences des packages étendus dans ReadTheDocs.
Pour l'installer, utilisez l'une des commandes suivantes :
pip installer réservoirpy
ou
pip installer réservoirpy ==0.3.12
Si vous souhaitez exécuter les Python Notebooks du dossier tutoriels , installez les packages dans le fichier requis (attention : cela peut dégrader la version d'hyperopt installée) :
pip install -r tutoriels/requirements.txt
Si vous souhaitez utiliser la version précédente 0.2.4, vous pouvez installer ReservoirPy en utilisant :
pip installer réservoirpy ==0.2.4
Si vous souhaitez activer le package hyper
et ses assistants d'optimisation d'hyperparamètres à l'aide d'hyperopt, utilisez :
pip installer réservoirpy[hyper]
Accédez au dossier du didacticiel pour les didacticiels dans Jupyter Notebooks.
Accédez au dossier d'exemples pour des exemples et des articles avec des codes, également dans Jupyter Notebooks.
Le didacticiel pour ReservoirPy (v0.2) peut être trouvé dans cet article (Trouvain et al. 2020).
Un tutoriel rapide sur la façon d'explorer les hyperparamètres avec ReservoirPy et Hyperopt peut être trouvé dans cet article (Trouvain et al. 2020).
Jetez un œil à nos conseils et à notre méthode pour explorer les hyperparamètres des réservoirs dans notre récent article : (Hinaut et al 2021) HTML HAL
Tutoriel et Jupyter Notebook pour l'exploration des hyper-paramètres
Plus d'infos sur hyperopt : Site officiel
Si vous souhaitez que votre article apparaisse ici, veuillez nous contacter (voir le lien de contact ci-dessous).
Léger et coll. (2024) Réservoirs évolutifs pour l’apprentissage par méta-renforcement. Code PDF EvoAPPS 2024 HAL
Chaix-Eichel et al. (2022) De l’apprentissage implicite aux représentations explicites. Préimpression arXiv arXiv:2204.02484. arXiv PDF
Trouvain & Hinaut (2021) Canary Song Decoder : Transduction et segmentation implicite avec ESN et LTSM. ICANN 2021 HTML HAL PDF
Pagliarini et coll. (2021) Modèle sensorimoteur vocal canari avec décodeur RNN et générateur GAN de faible dimension. ICDL 2021. HTML
Pagliarini et coll. (2021) Que dit le Canari ? GAN de basse dimension appliqué au chant des oiseaux. Préimpression HAL. HALPDF
Quel battage médiatique pour ma nouvelle tâche ? Conseils et recherche aléatoire des hyperparamètres des réseaux Echo State. ICANN 2021 HTML HAL PDF
Si vous avez une question concernant la bibliothèque, veuillez ouvrir un numéro. Si vous avez des questions ou des commentaires plus généraux, vous pouvez nous contacter sur Twitter ou par email à xavier dot hinaut the-famous-home-symbol inria dot fr.
Trouvain, N., Pedrelli, L., Dinh, TT, Hinaut, X. (2020) Reservoirpy : une bibliothèque efficace et conviviale pour concevoir des réseaux d'état d'écho. Dans Conférence internationale sur les réseaux de neurones artificiels (pp. 494-505). Springer, Cham. HTML HAL PDF
Si vous utilisez ReservoirPy dans votre travail, veuillez citer notre package en utilisant l'entrée bibtex suivante :
@incollection{Trouvain2020, doi = {10.1007/978-3-030-61616-8_40}, url = {https://doi.org/10.1007/978-3-030-61616-8_40}, year = {2020}, publisher = {Springer International Publishing}, pages = {494--505}, author = {Nathan Trouvain and Luca Pedrelli and Thanh Trung Dinh and Xavier Hinaut}, title = {{ReservoirPy}: An Efficient and User-Friendly Library to Design Echo State Networks}, booktitle = {Artificial Neural Networks and Machine Learning {textendash} {ICANN} 2020} }
Ce package est développé et soutenu par Inria à Bordeaux, France dans le groupe Mnemosyne. Inria est un institut français de recherche en sciences du numérique (informatique, mathématiques, robotique, ...).