[PYTHON] Essayez SNN avec BindsNET

J'ai essayé d'utiliser Brian2 dans l'article précédent, mais cette fois j'utiliserai BindsNET, qui est un logiciel capable d'implémenter SNN.

Le SNN (Spiking Neural Network) est plus proche de la neurophysiologie que l'actuel Deep Learning, et l'apprentissage est réalisé en utilisant la simulation de l'activité neuronale. SNN et BindsNET sont également présentés dans cet article.

GitHub:https://github.com/BindsNET/bindsnet Article: https://www.frontiersin.org/articles/10.3389/fninf.2018.00089/full Documentation: https://bindsnet-docs.readthedocs.io/

Alors que NEURON et Brian2 sont principalement utilisés pour les simulateurs, BindsNET sera principalement utilisé comme logiciel d'apprentissage automatique. BindsNET est basé sur PyTorch et peut également utiliser le GPU. Il semble que BindsNET puisse mettre en œuvre non seulement un apprentissage supervisé et non supervisé, mais également un apprentissage amélioré.

Installation

L'environnement est Ubuntu 16.04 CUDA 10 Anaconda Python 3.6 est.

pip install bindsnet

Vous l'avez maintenant installé. La version était 0.2.7.

Cependant, si cela reste tel quel, une erreur se produira lors de l'exécution de la démo. La solution de contournement était de changer la version de Pytorch et de la réinstaller sur pytorch == 1.2.0.

Essayez la démo

Tout d'abord, téléchargez-le avec git clone.

git clone https://github.com/BindsNET/bindsnet.git

Il existe différentes démos dans bindsnet / examples /. Pour le moment, nous allons lancer une démonstration d'apprentissage supervisé.

cd examples/mnist/
python supervised_mnist.py

Cela a pris environ 20 minutes, mais cela a fonctionné. J'ai pu utiliser le GPU avec l'option --gpu, mais cela ne s'est pas accéléré. (Plutôt un peu plus lent.) J'avais également peur que le score du test ne soit pas très bon.

Je vais également faire une démonstration d'apprentissage non supervisé (Diehl & Cook).

python eth_mnist.py

Cela semble prendre plusieurs heures.

D'autres démonstrations comprenaient des cartes auto-organisées (SOM), le calcul des réservoirs et un apprentissage amélioré.

Méthode de mise en œuvre

Selon la Documentation, la méthode d'implémentation est (1) Création de réseau et (2) Définition de règles d'apprentissage Cela semble faire deux choses. Lors de la création d'un réseau, les neurones LIF, etc. sont définis comme des couches et connectés. Dans la définition des règles d'apprentissage, nous définissons des règles d'apprentissage telles que la loi Hebb et la loi STDP pour le couplage.

finalement

BindsNET ne peut pas résoudre l'ODE de la dynamique neuronale, mais il semble que l'apprentissage par SNN puisse se faire facilement. L'apprentissage automatique utilisant SNN fait encore l'objet de diverses études dans des domaines en développement, et BindsNET pourrait jouer un rôle majeur.

Recommended Posts

Essayez SNN avec BindsNET
Essayez de gratter avec Python.
Essayez la régression avec TensorFlow
Essayez de défier le sol par récursif
Essayez l'optimisation des fonctions avec Optuna
Essayez l'apprentissage en profondeur avec TensorFlow
Essayez d'utiliser PythonTex avec Texpad.
Essayez la détection des bords avec OpenCV
Essayez d'implémenter RBM avec chainer.
Essayez Google Mock avec C
Essayez d'utiliser matplotlib avec PyCharm
Essayez la programmation GUI avec Hy
Essayez Auto Encoder avec Pytorch
Essayez la sortie Python avec Haxe 3.2
Essayez l'opération matricielle avec NumPy
Essayez d'exécuter CNN avec ChainerRL
Essayez différentes choses avec PhantomJS
Essayez d'exécuter Python avec Try Jupyter
Essayez d'implémenter le parfum avec Go
Essayez Selenium Grid avec Docker
Essayez la reconnaissance faciale avec Python
Essayez OpenCV avec Google Colaboratory
Essayez le machine learning à la légère avec Kaggle
Essayez TensorFlow MNIST avec RNN
Essayez de créer Jupyter Hub avec Docker
Essayez d'utiliser le folium avec anaconda
Essayez le Deep Learning avec les concombres FPGA-Select
Essayez de gratter avec Python + Beautiful Soup
Renforcer l'apprentissage 13 Essayez Mountain_car avec ChainerRL.
Essayez d'exploiter Facebook avec Python
Essayez la décomposition de valeurs singulières avec Python
Essayez de prédire les courses de chevaux avec Chainer
Essayez de profiler avec ONNX Runtime
SVM essayant l'apprentissage automatique avec scikit-learn
Essayez L Chika avec raspberrypi
Essayez la reconnaissance faciale avec python + OpenCV
Essayez d'exécuter Jupyter avec VS Code
Essayez de miner Bitcoin avec le hashlib de Python
Débutant RNN (LSTM) | Essayer avec Keras
Essayez de déplacer 3 servos avec Raspeye
Essayez la simulation de contrôle de fréquence avec Python
Essayez de brouiller l'image avec opencv2
Essayez l'apprentissage de la représentation commune avec le chainer
Essayez de produire de l'audio avec M5 STACK
Essayez les données en parallèle avec TensorFlow distribué
Essayez d'utiliser le networkx de Python avec AtCoder
[PyStan] Essayez le lasso graphique avec Stan.
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Essayez une formule utilisant Σ avec python
Essayez de travailler avec des données binaires en Python
Essayez d'implémenter XOR avec l'API fonctionnelle Keras
Essayez l'algorithme Variational-Quantum-Eigensolver (VQE) avec Blueqat
Essayez de dessiner une distribution normale avec matplotlib
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Essayez les prévisions de prix Bitcoin avec Deep Learning
Essayez avec Chainer Deep Q Learning - Lancement
Essayons gRPC avec Go et Docker
Essayez d'utiliser Python avec Google Cloud Functions
Essayez de pêcher le Wakasagi avec Raspberry Pi