Je n'avais aucune connaissance de python ou de l'apprentissage automatique, mais il y a beaucoup de sujets dans l'actualité récente, et quand j'espérais pouvoir étudier simplement en touchant quelque chose, O'Reilly's [Deep Learning from scratch] ](Https://www.oreilly.co.jp/books/9784873117584/) était facile à comprendre et je l'ai acheté.
La partie mathématique a également été omise modérément, et c'était très intéressant à lire pour une personne légère qui veut connaître une preuve stricte ou une image plus comme moi. De plus, il était très facile de comprendre que ce qui était expliqué était expliqué au niveau de la source.
Donc, je pense que les gens qui écrivent habituellement du python ou quelque chose comme ça sont bons, mais si vous voulez l'essayer pour le moment, vous pouvez également ajouter python, numpy et matplotlib (vous pouvez le faire une fois) ) C'est un peu d'humeur, n'est-ce pas?
Ensuite, j'ai pensé que je le ferais avec Docker, mais j'étais un peu accro au dessin graphique (GUI) avec matplolib qui apparaît dans ce livre, donc je vais le laisser comme un article. (Cependant, j'ai réalisé plus tard que cela pourrait être un peu subtil, comme mettre certaines bibliothèques du côté mac et travailler avant de démarrer le conteneur.)
Au début, j'ai pensé à le mettre dans un ensemble facilement, mais j'ai pensé à Jupiter notebook
, mais ce n'était pas facile car il y avait environ 4G d'image Docker, et ce" Deep Learning from scratch "lui-même est" avec une bibliothèque minimale Cela semble être un concept de «faisons-le à partir de zéro», alors j'ai pensé que je voulais un environnement où seules les bibliothèques nécessaires pourraient être installées, alors je l'ai fait moi-même.
Mise en garde Cependant, comme mon environnement est mac, la partie principale de l'interface graphique est pour mac.
Semble être ce dont vous avez besoin dans l'exemple de ce livre.
Parmi ceux-ci, la partie de dessin de graphique (matplotlib) qui apparaît souvent dans ce livre peut être recommandée pour avoir un environnement GUI, mais si vous faites cela dans l'environnement Docker, vous pouvez dessiner le graphique à partir de l'environnement Docker. deviendra nécessaire.
Je n'ai jamais fait ça avant, donc je n'étais pas sûr de pouvoir le faire, mais quand j'ai cherché
Sautons l'interface graphique du conteneur Docker côté Mac et affichons-la
Il y avait un bel article. Quand je l'ai fait sur cette base, j'ai créé un environnement où je peux recommander ce livre de manière compacte.
Étant donné que le fichier Docker lui-même ne contient que la bibliothèque, insérez la bibliothèque requise basée sur l'image python officielle de Docker hub
.
FROM python:3.5.2
WORKDIR /var/python
RUN pip install \
ipython \
numpy \
matplotlib
CMD ["ipython"]
Ainsi, dans le conteneur Docker créé dans cet environnement, par exemple,
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()
Je veux exécuter un script comme celui-ci et dessiner un graphique côté mac.
Le contenu est le même que le lien ci-dessus, mais pour que le contenu du graphique soit envoyé du côté du conteneur Docker en fonction de l'adresse IP du côté mac,
--Installez le serveur X (XQuartz
) côté mac.
--Définissez un port pour recevoir le contenu du dessin du côté du conteneur Docker avec socat
et passez-le au serveur X sous mac
En faisant ces deux points, j'ai pu dessiner le contenu du graphique de python fonctionnant sur Docker vers le côté mac.
Mettez socat
et XQuartz
dans brew
.
brew install socat
brew install caskroom/cask/brew-cask
brew cask install xquartz
Vous êtes maintenant prêt.
La construction de Docker elle-même se fait avec le fichier Docker
ci-dessus, comme d'habitude.
Ici, le nom de l'image est python-dl
.
docker build -t python-dl .
Tout d'abord, préparez "X" côté mac.
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
Dans l'article de référence, ʻopen -a XQuartz` a été explicitement exécuté à l'avance, mais d'après ce que j'ai essayé, il semblait être lancé sans permission même s'il n'était pas exécuté à l'avance. ..
Maintenant que vous êtes prêt, démarrez le conteneur Docker.
Lors du démarrage de l'image construite précédemment, en passant l'adresse IP du côté mac comme adresse du serveur X au côté conteneur, l'interface graphique est dessinée de la bouche créée avec socat
au côté mac.
Je pense que beaucoup de gens peuvent obtenir l'adresse IP du côté mac avec ʻipconfig en0`, donc afin d'obtenir l'adresse IP de ce contenu
ifconfig en0 | grep -v inet6 | grep inet | awk '{print $2 ":0"}'`
(En fait, l'adresse IP de mac est passée au conteneur: 0
, donc le script est comme ci-dessus).
De plus, pour monter les sources de divers échantillons, démarrez le conteneur avec la commande suivante en tenant compte du montage du répertoire courant avec -v
.
docker run --rm -it -e DISPLAY=$(ifconfig en0 | grep -v inet6 | grep inet | awk '{print $2 ":0"}') -v $(pwd):/var/python python-dl bash
Cela démarrera bash du côté du conteneur, donc en tant qu'échantillon, dans 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()
S'il y a
python samples/sample01.py
Donc, si le graphique suivant est dessiné côté mac, il réussit.
Le contenu, y compris l'environnement (+ α) jusqu'à présent
https://github.com/pocari/python-dl-docker
Dans
L'exemple de ce livre est enregistré sur github
, donc le référentiel de celui-ci estbook-sample Puisqu'il est enregistré comme sous-module de git sous le dossier appelé
--Reposito clone de cet article
git clone https://github.com/pocari/python-dl-docker
--Cloner le code dans le répertoire de code d'exemple du livre
git submodule update -i
Si vous le faites, vous pouvez également exécuter des exemples de livres.
Exemple) Après être entré dans le conteneur avec la commande docker run
ci-dessus
cd samples/book-sample/ch07
python apply_filter.py
Ensuite, le résultat suivant sera affiché côté mac.