[PYTHON] "Deep Learning von Grund auf neu" mit Haskell (unvollendet)
Es ist das Jahresende und Neujahr! Schreiben wir den Code!
Also habe ich die Herausforderung ausprobiert, "Deep Learning von Grund auf neu mit Haskell zu machen".
Warum Haskell verwenden?
- Haskell ist cool, nicht wahr?
- Es schmeckt nicht gut, wenn Sie nur dem Buch folgen
- Es scheint [Fusion] zu geben (http://bicycle1885.hatenablog.com/entry/2014/06/10/234448), und selbst im Bereich Deep Learning, wo wahrscheinlich Recheneffizienz erforderlich ist, ist Haskell tatsächlich Ist es nicht geeignet? Ich wollte das überprüfen
Fazit
** Fehler. Haskell war nicht stark genug **
Ich werde Ihnen den Code geben, den ich mit dem Gefühl geschrieben habe, dass ich meine Leiche überwinden kann.
https://github.com/spinylobster/my-deep-learning-from-scratch-in-haskell
~~ Der Fortschritt ist überhaupt nicht gut, ich habe die Argumentation und das Lernen des neuronalen Netzes geschrieben, aber ich habe das tatsächliche Lernen nicht bestätigt
Da die Methode zur Fehlerrückübertragung nicht implementiert wurde, scheint sie sich in der Mitte von Kapitel 4 ~~ zu befinden
- Ergänzung 2017/1/9: Etwas fortgeschritten, der Zustand, in dem das Erlernen des neuronalen Netzes abgeschlossen wurde
Ich implementiere auch AdaGrad, so dass es sich wie in der Mitte von Kapitel 6 anfühlt *
Die Leistung von Haskell ist gering, daher ist der Code kompliziert und folgt nicht dem Code des Buches, kann jedoch eine Referenz sein, wenn verschiedene Bibliotheken verwendet werden
Was Sie denken, ist die Ursache
- Ich habe zu viel Zeit damit verbracht, Haskell zu studieren
- Erneutes Erlernen vergessener Kenntnisse, Verwendung von Stack, Monadenkonverter, Datenserialisierung usw.
- Ursprünglich habe ich vor einigen Jahren Wow H-Buch gemacht.
- Ich habe viel Zeit damit verbracht, herauszufinden, wie man Gnuplot benutzt
- Ich hatte eine Berechnung, die einen Zustand haben musste, aber ich wusste nicht, wie ich sie schreiben sollte
- ~~ Matrixberechnung ist nicht sicher und ich hatte Laufzeitfehler ~~ -> ** Typ Es scheint, dass eine sichere Berechnung möglich ist! **
- Es ist sehr schwierig, den laufenden Status in Haskell zu debuggen
Was ich benutzt habe
- Stack - Ohne dies können Sie jedes Paket installieren.
- Haskell Super Primer-Um sich an die grundlegende Grammatik zu erinnern
- HMatrix - Das Äquivalent von NumPy. Matrixberechnung. Es scheint [Repa] zu geben (https://hackage.haskell.org/package/repa), und ich hatte vor, die Leistung später zu vergleichen.
- Gnuplot - Entspricht matplotlib. Zeichnen eines Diagramms. Um zu verstehen, wie man es benutzt, ist es schnell zu sehen hier
- GHCi Debugger - Ich habe zuerst von seiner Existenz erfahren. Verzögerungsbewertung und Debugger scheinen nicht kompatibel zu sein. Es war wirklich schwer zu bedienen
- Andere Bibliotheken - siehe Kabalendatei
Impressionen des Buches
- ** Wahnsinnig gut ** Leicht zu verstehen
- Es umfasst alles von der Einführung in das neuronale Netz bis zu dem, was Sie in Zukunft lernen sollten. ** Ich denke, es gibt kein besseres Einführungsbuch **
- Allerdings verstehe ich das wesentliche tiefe Lernen nicht wirklich.
- Ich verstehe die Entwurfsabsicht der CNN-Faltungsschicht nicht
- Ich denke, es ist möglich, dass ich es nicht selbst geschrieben habe
- Ich möchte es zusammen mit anderen Materialien verstehen
Hilfreiche URL
- Bereiten Sie die Haskell-Umgebung mit VS-Code vor
- http://qiita.com/DUxCA/items/8e7a68ffee522bdd8918
- Installieren Sie gnuplot auf dem Mac
- http://mashiroyuya.hatenablog.com/entry/installgnuplot
- Verwenden Sie Gnuplot von Haskell
- http://d.hatena.ne.jp/mmitou/20120912/1347441319
- Verstehen, wie man hMatrix benutzt
- https://github.com/albertoruiz/hmatrix/tree/master/examples
- Sie können
+ - * /
für elementweise Berechnungen verwenden
- Die Karte für die Matrix ist "cmap"
Ich habe das Gefühl, dass es Zeiten gibt, in denen Sendungen wie *
matrix * 2
durchgeführt werden können, und Zeiten, in denen dies nicht möglich ist. ich bin mir nicht sicher
- Haskell Library Impressions 2016
- http://syocy.hatenablog.com/entry/haskell-library-2016
- Programmierung auf Typebene mit Haskell
- http://konn-san.com/articles/2012-06-07-promoted-types-and-list-arguments.html