[PYTHON] Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"

Deep Learning von Grund auf neu

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.)

Umgebung

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.

Obligatorisches Umfeld

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.

Aufbau der Docker-Umgebung

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,

Durch diese beiden Punkte konnte ich den Inhalt des Diagramms von Python, das auf Docker ausgeführt wird, auf die Mac-Seite zeichnen.

Installation der erforderlichen Bibliotheken

Setzen Sie "socat" und "XQuartz" in "brauen".

brew install socat
brew install caskroom/cask/brew-cask
brew cask install xquartz

Sie sind jetzt bereit.

Erstellen Sie Docker

Der Docker-Build selbst erfolgt wie gewohnt mit der obigen Docker-Datei. Hier lautet der Bildname "python-dl".

docker build -t python-dl .

Lauf!

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.

スクリーンショット 2016-12-10 13.56.37.png

Andere

Der Inhalt einschließlich der Umgebung (+ α) bisher

https://github.com/pocari/python-dl-docker

Im

Holen Sie sich den Beispielcode des Buches zusammen

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. スクリーンショット 2016-12-11 0.46.41.png

Recommended Posts

Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Realisieren Sie mit Docker und Vagrant die Umgebungskonstruktion für "Deep Learning von Grund auf neu"
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
Bereiten Sie die Umgebung für das O'Reilly-Buch "Deep Learning from Grund neu" mit apt-get vor (Debian 8).
[Windows 10] Aufbau einer "Deep Learning from Scratch" -Umgebung
Deep Learning von Grund auf neu
Erstellen Sie mit GCP + Docker + Jupyter Lab eine beliebige Umgebung für maschinelles Lernen
Deep Learning von Grund auf 1-3 Kapitel
Erstellen Sie eine Umgebung mit virtualenv
Erstellen Sie mit AirtestIDE eine Umgebung für die Testautomatisierung (Tipps)
Neuerstellung der Umgebung für maschinelles Lernen mit Miniconda (Windows-Version)
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 1
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 5
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 2
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 3
Vom Umgebungsaufbau bis zum Einsatz für Kolben + Heroku mit Docker
Ein Amateur stolperte in Deep Learning von Grund auf neu. Hinweis: Kapitel 7
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 5
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 1
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 4
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 4
Deep Learning Memo von Grund auf neu gemacht
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 2
Deep Learning Tutorial aus dem Umgebungsbau
Aufbau einer Umgebung für maschinelles Lernen von Grund auf neu (Windows 10 + Anaconda + VSCode + Tensorflow + GPU-Version)
[Deep Learning von Grund auf neu] Methoden zur Aktualisierung der wichtigsten Parameter für neuronale Netze
Maschinelles Lernen mit Docker (42) Programmieren von PyTorch für Deep Learning Von Ian Pointer
Erstellen Sie mit Vagrant (Ubuntu 16.04) eine Umgebung für Django x Apache x mod_wsgi.
Schreiben Sie Ihre Eindrücke von der Deep Learning 3 Framework Edition, die von Grund auf neu erstellt wurde
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 7]
Tiefes Lernen von Grund auf neu (Vorwärtsausbreitung)
Tiefes Lernen / Tiefes Lernen von Grund auf 2-Versuchen Sie, GRU zu bewegen
Deep Learning / Deep Learning von Grund auf neu Kapitel 6 Memo
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 5]
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 6]
"Deep Learning von Grund auf neu" mit Haskell (unvollendet)
Deep Learning / Deep Learning von Grund auf neu Kapitel 7 Memo
Lernbericht über das Lesen von "Deep Learning von Grund auf neu"
[Deep Learning von Grund auf neu] Über die Optimierung von Hyperparametern
"Deep Learning from Grund" Memo zum Selbststudium (Teil 12) Deep Learning
[Lernnotiz] Deep Learning von Grund auf neu gemacht [~ Kapitel 4]
Erstellen Sie mit Cloud9 (jupyter miniconda python3) eine Lernumgebung für "Deep Learning von Grund auf neu".
Selbststudien-Memo "Deep Learning from Grund" (unlesbares Glossar)
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 9) MultiLayerNet-Klasse
Erstellen Sie mit boot2docker eine Ausführungsumgebung für jede Sprache
GitHub des guten Buches "Deep Learning von Grund auf neu"
Erstellen einer Anaconda-Umgebung für Python mit pyenv
Deep Learning von Grund auf neu Kapitel 2 Perceptron (Memo lesen)
[Lernnotiz] Deep Learning von Grund auf ~ Implementierung von Dropout ~
Verschiedene Befehle zum Erstellen einer Umgebung mit Apache
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Maschinelles Lernen von Grund auf neu (maschinelles Lernen mit Kaggle)
Python vs Ruby "Deep Learning von Grund auf neu" Zusammenfassung
Versuchen Sie, mit VisualStudioCode eine Umgebung für MayaPython zu erstellen
"Deep Learning from Grund" Memo zum Selbststudium (10) MultiLayerNet-Klasse