
Tinn (Tiny Neural Network) est une bibliothèque de réseaux neuronaux sans dépendance à 200 lignes écrite en C99.
Pour une démo sur la façon d'apprendre des chiffres écrits à la main, obtenez des données de formation:
wget http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data
make; ./test
Les données de formation se compose de chiffres écrits à la main écrits lentement et rapidement. Chaque ligne de l'ensemble de données correspond à un chiffre manuscrit. Chaque chiffre a une taille de 16x16 pixels en donnant 256 entrées au réseau neuronal.
À la fin de la ligne, 10 chiffres signifient le chiffre écrit à la main:
0: 1 0 0 0 0 0 0 0 0 0
1: 0 1 0 0 0 0 0 0 0 0
2: 0 0 1 0 0 0 0 0 0 0
3: 0 0 0 1 0 0 0 0 0 0
4: 0 0 0 0 1 0 0 0 0 0
...
9: 0 0 0 0 0 0 0 0 0 1
Cela donne 10 sorties au réseau neuronal. Le programme de test sortira la précision pour chaque chiffre. Attendez-vous à une précision supérieure à 99% pour le chiffre correct, et moins cette précision de 0,1% pour les autres chiffres.
Portable - s'exécute où un compilateur C99 ou C ++ 98 est présent.
Activation sigmoïdale.
Une couche cachée.
Tinn n'utilisera jamais plus que la bibliothèque standard C.
Tinn est idéal pour les systèmes intégrés. Formez un modèle sur votre bureau puissant et chargez-le sur un microcontrôleur et utilisez le convertisseur analogique à numérique pour prédire les événements en temps réel.
Le code source Tinn sera toujours inférieur à 200 lignes. Les fonctions extérieures dans l'en-tête Tinn sont protégées avec l'espace de noms XT pour Tinn externed .
Tinn peut facilement être multi-thread avec un peu d'ingéniosité, mais la branche maître restera simple pour aider à le développement des systèmes intégrés.
Tinn n'amorçait pas le générateur de nombres aléatoires. N'oubliez pas de le faire vous-même.
Toussez toujours vos données d'entrée. Merger à nouveau après chaque itération de formation.
Obtenez une plus grande précision de formation en recuit votre taux d'apprentissage. Par exemple, multipliez votre taux d'apprentissage par 0,99 chaque itération de formation. Cela se concentrera sur un bon minima d'apprentissage.
Tinn est une pratique du minimalisme.
Tinn n'est pas une bibliothèque de réseau neuronal entièrement en vedette comme Kann ou Genann:
https://github.com/attractivechaos/kann
https://github.com/codeplea/genann
Rust: https://github.com/dvdplm/rustinn
Un tutoriel utilisant Tinn NN et CTYPES
Petite bibliothèque de réseaux neuronaux dans 200 lignes de code