Ich hatte keine Kenntnisse über Python oder maschinelles Lernen, aber es gibt viele Themen in den letzten Nachrichten, und als ich hoffte, dass ich nur durch Berühren von etwas lernen könnte, O'Reillys [Deep Learning von Grund auf] ](Https://www.oreilly.co.jp/books/9784873117584/) war leicht zu verstehen und ich kaufte es.
Der mathematische Teil wurde ebenfalls mäßig weggelassen, und es war sehr interessant, für eine leichte Person zu lesen, die einen strengen Beweis oder ein Bild wie mich kennen möchte. Es war auch sehr leicht zu verstehen, dass das Erklärte auf Quellenebene erklärt wurde.
Ich denke also, dass Leute, die normalerweise Python oder ähnliches schreiben, gut sind, aber wenn Sie es vorerst ausprobieren möchten, können Sie auch Python, Numpy und Matplotlib hinzufügen (Sie können es einmal machen). ) Es ist ein bisschen Stimmung, nicht wahr?
Dann dachte ich, ich würde es mit Docker schaffen, aber ich war ein wenig süchtig nach der Grafikzeichnung (GUI) mit Matplolib, die in diesem Buch erscheint, also werde ich es als Artikel belassen. (Später wurde mir jedoch klar, dass es etwas subtil sein kann, z. B. einige Bibliotheken auf die Mac-Seite zu stellen und zu arbeiten, bevor der Container gestartet wird.)
Zuerst dachte ich darüber nach, es einfach in ein Set zu packen, aber ich dachte über "Jupiter-Notizbuch" nach, aber es war nicht einfach, weil es ungefähr 4 G Docker-Image gab und dieses "Deep Learning from Scratch" selbst "mit der minimalen Bibliothek" ist Es scheint ein Konzept von "Lass es uns von Grund auf neu machen" zu sein, also dachte ich, ich wollte eine Umgebung, in der nur die notwendigen Bibliotheken abgelegt werden können, also habe ich es selbst gemacht.
Hinweis Da meine Umgebung jedoch Mac ist, ist der Hauptteil der GUI für Mac.
Scheint das zu sein, was Sie im Beispiel dieses Buches brauchen.
Von diesen kann dem in diesem Buch häufig vorkommenden Diagrammzeichnungsteil (matplotlib) eine GUI-Umgebung empfohlen werden. Wenn Sie dies jedoch in der Docker-Umgebung tun, können Sie das Diagramm aus der Docker-Umgebung zeichnen. wird notwendig.
Ich habe das noch nie gemacht, also war ich mir nicht sicher, ob ich es schaffen könnte, aber als ich es nachgeschlagen habe
Lassen Sie uns die GUI des Docker-Containers auf die Mac-Seite überspringen und anzeigen
Es gab einen schönen Artikel. Als ich es darauf basierend erstellt habe, habe ich eine Umgebung erstellt, in der ich dieses Buch kompakt empfehlen kann.
Da die Docker-Datei selbst nur die Bibliothek enthält, fügen Sie die erforderliche Bibliothek basierend auf dem offiziellen Python-Image von "Docker Hub" ein.
FROM python:3.5.2
WORKDIR /var/python
RUN pip install \
ipython \
numpy \
matplotlib
CMD ["ipython"]
In dem Docker-Container, der in dieser Umgebung erstellt wurde, z.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-3, 3, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()
Ich möchte ein Skript wie dieses ausführen und ein Diagramm auf der Mac-Seite zeichnen.
Der Inhalt ist der gleiche wie der obige Link, aber damit der Inhalt des Diagramms von der Docker-Containerseite basierend auf der IP-Adresse auf der Mac-Seite gesendet wird,
XQuartz
) auf der Mac-Seite.
--Stellen Sie einen Port ein, um den Zeichnungsinhalt von der Docker-Containerseite mit "socat" zu empfangen, und übergeben Sie ihn an den X-Server in MacDurch diese beiden Punkte konnte ich den Inhalt des Diagramms von Python, das auf Docker ausgeführt wird, auf die Mac-Seite zeichnen.
Setzen Sie "socat" und "XQuartz" in "brauen".
brew install socat
brew install caskroom/cask/brew-cask
brew cask install xquartz
Sie sind jetzt bereit.
Der Docker-Build selbst erfolgt wie gewohnt mit der obigen Docker-Datei. Hier lautet der Bildname "python-dl".
docker build -t python-dl .
Bereiten Sie zuerst "X" auf der Mac-Seite vor.
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
Im Referenzartikel habe ich "open -a XQuartz" explizit im Voraus ausgeführt, aber soweit ich es versuchte, schien es ohne Erlaubnis gestartet zu werden, auch wenn ich es nicht im Voraus ausgeführt habe. ..
Nachdem Sie fertig sind, starten Sie den Docker-Container.
Wenn Sie das zuvor erstellte Image starten, indem Sie die IP-Adresse der Mac-Seite als Adresse des X-Servers an die Containerseite übergeben, wird die GUI aus dem mit "socat" erstellten Mund auf die Mac-Seite gezogen.
Ich denke, dass viele Leute die IP-Adresse auf der Mac-Seite mit "ipconfig en0" erhalten können, um die IP-Adresse von diesem Inhalt zu erhalten
ifconfig en0 | grep -v inet6 | grep inet | awk '{print $2 ":0"}'`
(Tatsächlich wird die IP-Adresse von mac an den Container übergeben: 0
, das Skript ist also wie oben).
Um die Quellen verschiedener Beispiele bereitzustellen, starten Sie den Container mit dem folgenden Befehl, um das aktuelle Verzeichnis mit -v
zu mounten.
docker run --rm -it -e DISPLAY=$(ifconfig en0 | grep -v inet6 | grep inet | awk '{print $2 ":0"}') -v $(pwd):/var/python python-dl bash
Dies startet Bash auf der Containerseite, also als Probe in samples / sample01.py
,
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-3, 3, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()
Wenn da ist
python samples/sample01.py
Wenn also das folgende Diagramm auf der Mac-Seite gezeichnet wird, ist es erfolgreich.
Der Inhalt einschließlich der Umgebung (+ α) bisher
https://github.com/pocari/python-dl-docker
Im
Das Beispiel dieses Buches ist registriert auf "github", daher ist sein Repository "Buchmuster" Da es als Submodul von git unter dem Ordner `registriert ist
--Reposito-Klon dieses Artikels
git clone https://github.com/pocari/python-dl-docker
git submodule update -i
In diesem Fall können Sie auch Beispielbücher ausführen.
Beispiel) Nach Eingabe des Containers mit dem obigen Befehl "Docker Run"
cd samples/book-sample/ch07
python apply_filter.py
Das folgende Ergebnis wird dann auf der Mac-Seite angezeigt.
Recommended Posts