"Deep Learning von Grund auf neu - Die Theorie und Implementierung von Deep Learning aus Python" wurde gelesen, daher die Fortsetzung "Deep from Grund neu" ❷-Natural Language Processing lernen ", aber das Lebenstempo änderte sich aufgrund des Einflusses der neuen Corona, so dass ich gut lernen konnte. Kann nicht mehr gemacht werden. Bis jetzt war es meine tägliche Routine, auf dem Heimweg von der Arbeit zum Studium in einem Café vorbeizuschauen, aber als ich Telearbeiter wurde, lebte ich 5 Minuten nach der Arbeit in einem Bier: Sweat_smile:
Das ist nicht gut, also werde ich Arafifs Körper peitschen und das Studium fortsetzen. Wie bei Gepostet im vorherigen Band werde ich notieren, worauf ich in diesem Buch gestoßen bin, also habe ich einen Fehler gemacht. Ich wäre Ihnen dankbar, wenn Sie auf solche Probleme hinweisen könnten.
Nach wie vor werden wir mit der virtuellen Maschine des Mac fortfahren. Das Betriebssystem der virtuellen Maschine wurde von Mojave auf Catalina aktualisiert.
Gastgeber | Umgebung |
---|---|
hart | Mac mini(Late 2012) |
OS | macOS Mojave Version 10.14.6 |
Virtualisierungsinfrastruktur | Parallels Desktop 15 für Mac Pro Edition Version 15.1.4 (47270) |
Die Gäste | Umgebung |
---|---|
OS | macOS Catalina Version 10.15.4 |
Entwicklungsumgebung | Anaconda 2019.10 (Python 3.7) |
Editor | Visual Studio Code Version 1.44.2 |
Es ist möglicherweise nicht möglich, eine virtuelle Maschine vor acht Jahren auf einer Maschine auszuführen und Deep Learning durchzuführen, aber das vorherige Volume hat dies geschafft, daher werde ich fortfahren. Weitere Informationen zu meiner Umgebung finden Sie im vorherigen Beachten Sie, dass ein Amateur in Deep Learning von Grund auf neu gestolpert ist: Kapitel 1.
Im Teil "Vorwort" dieses Buches "Wer ist das Buch?" Sind diejenigen, die Kenntnisse über neuronale Netze und Python haben, so konzipiert, dass sie dieses Buch ohne Kenntnis der vorherigen Arbeit lesen können. Ich denke jedoch, dass es schwierig ist zu wissen, wie viel vorausgesetztes Wissen erforderlich sein sollte.
Dieses Kapitel 1 enthält mehr als die Hälfte des Inhalts des vorherigen Bandes. Wenn Sie also in Kapitel 1 frustriert sein möchten, zuerst erster Band. Wir empfehlen Ihnen, jp / books / 9784873117584 /) zu lesen.
Im Folgenden werde ich die Punkte auflisten, auf die ich gestoßen bin, einschließlich der Punkte, die ich aufgrund der Unterschiede zum vorherigen Band bemerkt habe.
Broadcasting in Referenz [1], eingeführt in "1.1.3 Broadcast", ist in englischer Sprache. Auf Japanisch ist die [NumPy-Sendung (automatische Formkonvertierung)] von nkmk (https://note.nkmk.me/python-numpy-broadcasting/) jedoch leicht zu verstehen.
Ich habe kürzlich erfahren, dass das "np.dot (x, y)", das in "1.1.4 Produkt des inneren Vektorprodukts und des Matrixprodukts" erscheint, auch mit dem Operator "@" als "x @ y" geschrieben werden kann. Ich denke, "@" ist besser, aber da gesagt wird, dass dieses "@" nach Python 3.5 verwendet werden kann, kann es sein, dass die Minderheit immer noch "@" verwendet. Ich weiß es nicht.
――In der Erläuterung von "1.3.4 Berechnungsdiagramm" haben sich die zu Beginn erläuterten Arten von Basisknoten gegenüber dem vorherigen Band erhöht (ich habe mich mit dem vorherigen Band in der Firma in die Telearbeit beeilt und verlasse mich auf den Speicher, aber wiederhole Wurde die Erläuterung des Knotens, des Summenknotens und des MatMul-Knotens als Basisknoten angezeigt?). Dies erleichtert auch das Verständnis der Erklärung von "1.3.5.2 Affine Schicht".
...
) für die Zuweisung zu einem NumPy-Array zu einer tiefen Kopie führt. Es scheint, dass die Richtlinie darin besteht, die Effizienz und Geschwindigkeit der Speichernutzung und nicht das vorherige Volume zu betonen.
Die Erklärung, dass die Verwendung eines 3-Punkt-Lesegeräts als Substitutionsziel eine tiefe Kopie ergibt, kam mir jedoch nicht in den Sinn, weshalb ich ein wenig nachforschte. Um genau zu sein, wird durch die Verwendung von Slices in ndarray ein Ansichtsobjekt erstellt, das die Originaldaten überschreibt, und es gibt einen 3-Punkt-Leser als bequeme Abkürzung für Slices. ist.
Für Ansichtsobjekte wird DeepAges Erläuterung der Kopie und Ansicht von NumPy und für den 3-Punkt-Leser nkmk erläutert Geben Sie die Dimension des NumPy-Arrays ndarray an, indem Sie es mit Ellipsis (...) weglassen. war leicht zu verstehen.Die Implementierung, die zufällig Daten im Mini-Batch von "1.4.3 Quellcode zum Lernen" auswählt, ist numpy.random.permutation ()
in Epocheneinheiten. /random/generated/numpy.random.permutation.html#numpy-random-permutation) wurde geändert. Im ersten Band für jeden Stapel numpy.random.choice ()
, Es bestand also die Möglichkeit, dass die zwischen Stapeln verwendeten Daten dupliziert wurden, aber diese Implementierung eliminiert die Duplizierung.
Ähnlich wie in "1.4.3 Quellcode zum Lernen" wird beim Ausführen des Quellcodes des Buches die Entscheidungsgrenze visualisiert, es ist jedoch klar, dass die Grenze durch eine spezielle Methode erkannt und der Bereich gefüllt wird. Ich fragte mich, ob ich es tat Quellcode Ich habe nur die Koordinaten durch Runden abgeleitet und die Ergebnisse aufgezeichnet. Apropos natürlich, es ist natürlich, aber es ist irgendwie schlammig und interessant. Außerdem werden nützliche Funktionen wie numpy.meshgrid ()
bereitgestellt. Das Tolle an Python (NumPy? Matplotlib?) Ist, dass Sie solche Visualisierungen in nur wenigen Zeilen erstellen können.
――Ich denke, dass die Erklärung von "1.4.4 Trainerklasse" nicht im ersten Band (der erste Band ist noch in der Telearbeit), sondern im Quellcode des ersten Bandes enthalten war -japan / Deep-Learning-from-Scratch / Blob / Master / Common / Trainer.py) wurde bereits übernommen.
―― "1.5.1-Bit-Genauigkeit" wurde im letzten Kapitel des vorherigen Bandes kurz erläutert, aber die Verwendung von 16-Bit-Gleitkommazahlen hat konkret begonnen. Da es sich jedoch um eine Übergangszeit handelt, gilt die Richtlinie, sie nur beim Speichern von Gewichten anzuwenden, um die Kapazität zu verringern. ――Das Gleiche gilt für "1.5.2 GPU (CuPy)", und obwohl der vorherige Band nur eine leichte Erklärung lieferte, hat die Verwendung von CuPy begonnen. Da es jedoch grundsätzlich von der CPU implementiert wird, ist es ohne GPU in Ordnung.
Da der Schwerpunkt auf der Überprüfung des vorherigen Bandes lag, gab es keinen größeren Stolperstein. Es ist gut, dass der Quellcode auf verschiedene Weise verbessert wurde.
Das ist alles für dieses Kapitel. Wenn Sie Fehler haben, wäre ich Ihnen dankbar, wenn Sie darauf hinweisen könnten.
Recommended Posts