[PYTHON] J'ai couru le réseau neuronal sur le FPGA réel

Aperçu

Auparavant, le code source produit par le générateur de réseau neuronal publié dans "J'ai créé un générateur de réseau neuronal fonctionnant sur FPGA" est le FPGA Atlas-SoC réel. J'ai essayé de l'exécuter avec (DE0-Nano-SoC).

Le référentiel est ici https://github.com/kotauchisunsun/DE0_NN

Licence

Affero GPL v3

une fonction

image

Le commutateur DE0-Nano-Soc est entré et la LED est sortie pour se comporter comme un réseau neuronal. Lorsque le commutateur est activé, 1 est attribué et lorsqu'il est désactivé, 0 est attribué.

Entrez SW [0] 1 Entrez SW [1] 2 SW [2] à la sortie du réseau neuronal supérieur gauche et au coefficient de pondération du réseau neuronal supérieur droit SW [3] à la sortie du réseau de neurones en bas à gauche et au coefficient de poids du réseau de neurones en haut à droite

Il est attribué à. Aussi,

Lorsque le réseau neuronal en haut à droite s'allume, la LED [0] s'allume. La LED [1] s'allume lorsque le réseau neuronal inférieur droit s'allume

C'est une fonction comme ça.

Préparation

Génération de code source

Ce travail n'a pas besoin d'être copié à partir du référentiel ci-dessus.

Utilisez le générateur de réseau neuronal utilisé dans "J'ai créé un générateur de réseau neuronal fonctionnant sur FPGA".

https://github.com/kotauchisunsun/NN_FPGA

Sera cloné.

$ cd NN_FPGA
$ python script/main.py 16 2 2 2
> NN_NL_016_0002_0002_NL_016_0002_0002
> saved to generate.v
> None

Cela générera un fichier appelé generate.v et un module appelé NN_NL_016_0002_0002_NL_016_0002_0002 pour le réseau neuronal principal.

Télécharger la papeterie

Atlas-SoC et DE0-Nano-SoC sont les mêmes en termes de matériel, seul le firmware est différent. Par conséquent, vous pouvez changer DE0-Nano-SoC et Atlas-Soc en réécrivant le firmware avec la carte SD. Cette fois, nous utiliserons les données appelées SystemCD de DE0-Nano-SoC liées ci-dessous.

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=941&PartNo=4#soc

Copie du projet de démonstration

Décompressez le fichier que vous avez téléchargé précédemment et

DE0-Nano_SoC_v.1.0.9_SystemCD\Demonstrations\SoC_FPGA\my_first_hps-fpga_base

Copiez et utilisez my_first_hps-fpga_base.

Modifier le code source

Ajoutez le référentiel précédent https://github.com/kotauchisunsun/DE0_NN ou le generate.v généré au projet.

Je n'expliquerai pas comment l'ajouter en détail, mais vous pouvez l'ajouter depuis [Projet] -> [Ajouter le fichier actuel au projet] dans la barre de menu.

Après cela, modifiez ghrd.v dans le projet. C'est un peu spécial, copiez le contenu de diff_ghrd.v dans le référentiel avant ** 271 ligne de ghrd.v et end module **.

(La raison pour laquelle il est écrit de manière détournée est que la licence de ghrd.v elle-même n'est pas bien comprise, donc si vous la placez dans le référentiel, des problèmes peuvent survenir.)

Fonctionnement réel de la machine

Après cela, compilez-le et gravez-le sur DE0-Nano-SoC avec Programmer.

IMAG0815.jpg Fonctionnant actuellement sur DE0-Nano-SoC

cas de test

J'ai préparé un cas de test parce que je ne pense pas pouvoir le comprendre tant que je ne l'ai pas déplacé. Si vous essayez ces derniers, vous pouvez voir comment le réseau neuronal fonctionne réellement.

SW[0] SW[1] SW[2] SW[3] LED[0] LED[1]
off off off off off off
on off off off off on
off on off off off on
on on off off off on
on off off on on on
off off off on off off
off off on on off off

(Remarques) Lorsque SW [2] = on SW [3] = on, vous pouvez voir que la LED [0] et la LED [1] sont les sorties OU de SW [0] et SW [1].

Résumé

DE0 en utilisant le générateur de réseau neuronal (ou le code généré à partir de celui-ci) créé dans "J'ai créé un générateur de réseau neuronal fonctionnant sur FPGA" -Nous avons créé un réseau neuronal qui fonctionne avec le Nano-SoC (Atlas-SoC) et confirmé qu'il fonctionne réellement.

Recommended Posts

J'ai couru le réseau neuronal sur le FPGA réel
J'ai fait un générateur de réseau neuronal qui fonctionne sur FPGA
J'ai exécuté python sur Windows
J'ai couru le tutoriel TensorFlow avec des commentaires (premier réseau de neurones: le début du problème de classification)
J'ai essayé de classer la musique en majeur / mineur sur Neural Network
J'ai essayé de prédire le genre de musique à partir du titre de la chanson sur le réseau neuronal récurrent
J'ai essayé de mettre en œuvre un réseau de neurones à deux couches
Je suis tombé sur l'API Hatena Keyword
J'ai essayé d'améliorer la précision de mon propre réseau neuronal
Persister le réseau de neurones construit avec PyBrain
J'expliquerai à propos du réseau neuronal "Calcul neuronal différentiel (DNC)" avec mémoire externe.
Visualisez la couche interne du réseau neuronal
Lancer et utiliser le notebook IPython sur le réseau
J'ai essayé de jouer avec la calculatrice avec tkinter
J'ai fait un peu de recherche sur la classe
Réseau neuronal paramétrique
J'ai essayé Python sur Mac pour la première fois.
J'ai essayé d'exécuter l'application sur la plateforme IoT "Rimotte"
J'ai essayé python pour la première fois avec heroku
J'ai essayé de résumer quatre méthodes d'optimisation de réseau neuronal
J'ai essayé de mettre Pytest dans la bataille réelle
J'ai essayé d'installer le noyau Linux sur virtualbox + vagrant
Comment dessiner facilement la structure d'un réseau de neurones sur Google Colaboratory à l'aide de "convnet-tiroir"
J'ai essayé un réseau de neurones convolutifs (CNN) avec un tutoriel TensorFlow sur Cloud9-Classification des images manuscrites-