
Tinn (Tiny Neural Network) ist eine in C99 geschriebene Bibliothek für die Abhängigkeit von 200 Linien.
Für eine Demo zum Erlernen von handgeschriebenen Ziffern erhalten Sie einige Trainingsdaten:
wget http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data
make; ./test
Die Trainingsdaten bestehen aus handgeschriebenen Ziffern, die sowohl langsam als auch schnell geschrieben wurden. Jede Zeile im Datensatz entspricht einer handgeschriebenen Ziffer. Jede Ziffer beträgt 16x16 Pixel Größe, die 256 Eingänge für das neuronale Netzwerk enthält.
Am Ende der Zeile 10 Ziffern bedeutet die handgeschriebene Ziffer:
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
Dies gibt 10 Ausgänge für das neuronale Netzwerk. Das Testprogramm gibt die Genauigkeit für jede Ziffer aus. Erwarten Sie über 99% Genauigkeit für die richtige Ziffer und weniger als 0,1% Genauigkeit für die anderen Ziffern.
Tragbar - läuft dort, wo ein C99- oder C ++ 98 -Compiler vorhanden ist.
Sigmoidale Aktivierung.
Eine versteckte Schicht.
Tinn wird niemals mehr als die C -Standardbibliothek verwenden.
Tinn eignet sich hervorragend für eingebettete Systeme. Trainieren Sie ein Modell auf Ihrem leistungsstarken Desktop und laden Sie es auf einen Mikrocontroller und verwenden Sie den Analog -zu -Digital -Konverter, um Echtzeit -Ereignisse vorherzusagen.
Der Tinn -Quellcode ist immer weniger als 200 Zeilen. Die im Tinn Header externen Funktionen sind mit dem XT -Namespace geschützt, der für externe Tinn steht.
Tinn kann leicht mit ein wenig Einfallsreichtum mehrfach mitgetrieben werden, aber der Master-Zweig bleibt ein einzelnes Gewinde, um die Entwicklung für eingebettete Systeme zu unterstützen.
Tinn säen den Zufallszahlengenerator nicht. Vergessen Sie nicht, dies selbst zu tun.
Mischen Sie Ihre Eingabedaten immer. Nach jeder Trainings -Iteration wieder mischen.
Erhalten Sie eine größere Trainingsgenauigkeit, indem Sie Ihre Lernrate angleiten. Multiplizieren Sie beispielsweise Ihre Lernrate mit 0,99 bei jeder Trainings -Iteration. Dies wird auf ein gutes Lernminima auftreten.
Tinn ist eine Praxis im Minimalismus.
Tinn ist kein vollständig vorgestellter neuronales Netzbibliothek wie Kann oder Genann:
https://github.com/attractivechaos/kann
https://github.com/codeplea/genann
Rust: https://github.com/dvdplm/rustinn
Ein Tutorial mit Tinn nn und ctypes
Tiny Neural Network Library in 200 Codezeilen