LoginSignup
11
13

More than 5 years have passed since last update.

「ゼロから作るDeep Learning ❷」の環境を、Docker+Jupyter Notebook+PyCharmでさくっとつくる

Posted at

はじめに

以下のことをやります。

  • 最低限動作するコンテナを作成
  • docker-composeでコンテナ内のボリュームをマウント
  • Jupyter Notebookで実行できるように
  • ブラウザで上記の環境が動作するように
  • PyCharmで上記の環境が動作するように

補足

Jupyter Notebookって?

http://jupyter.org/
ブラウザ経由で動作して、対話的にコマンドを実行できるツール。
実行したコマンドや実行結果を保存することができる。

PyCharmって?

https://www.jetbrains.com/pycharm/
JetBrains社が提供するPython用のIDE。

最強のPython開発環境 PyCharmのすゝめを見れば、何ができるかはだいたい理解できる。Emacs派だが、利用する言語が増えるにつれ設定が面倒になってきたので、試しに利用中。

なぜPyCharm上で操作したいのか

  • オートサジェストの機能が優秀
  • デバッガが優秀
  • Jupyter Notebookと連携できる

実行レポジトリ

2つのブランチの違いとしては、PyCharmは絶対パスで読み込むのに対し、ブラウザ利用は相対パスでimportします。そのため、PyCharmバージョンは↓のシェルスクリプトを利用して、各ファイルのimport部分を変えています。
https://github.com/tomoyamachi/deep-learning-from-scratch-2/blob/for_pycharm/sed_path_to_pycharm.sh

起動方法

すでにdocker, docker-composeの環境がある前提で話をすすめると、

$ docker build -t deeplearning .

で、deeplearningという名前のイメージをビルドして、そのイメージをdocker-compose内で呼んでます。あとはボリュームマウントした、りポートフォワードしたり程度。

PyCharmでの利用手順

Interpreterの設定

オートサジェストを賢く使うために、Interpreterを指定します。
ここで指定したいのは先程作成した、deeplearningというコンテナのruntimeです。

Preference > Project: python > Project Interpreterから設定できます。
スクリーンショット 2018-08-23 5.22.15.png
歯車のマーク > Add... > Docker と選んでいくと先程作成したdeeplearningというのが出ていると思いますので、それを選びましょう。

JupyterNotebookプロセスへの接続

$ docker-compose up
deeplearning_1  |     Copy/paste this URL into your browser when you connect for the first time,
deeplearning_1  |     to login with a token:
deeplearning_1  |         http://(コンテナID or 127.0.0.1):8888/?token=トークン

PyCharmで新しくJupyterNotebookファイルを作成して、処理を実行しようとするとJupyterNotebookのプロセスが表示されるので、localhost:8888?token=<トークン> と入力されればdocker内で走っているプロセスに繋がります。
スクリーンショット 2018-08-23 5.10.09.png

注意点

PyCharmでの注意点として、どのフォルダ内にいても実行元パスがルートディレクトリになります。 ※設定次第でどうにかできそうですが、設定方法がわかりませんでした。

そのため、importするときはルートディレクトリからの階層でimportします。/python/ch01/train.pyを利用したい場合は import ch01.train です。

読み込むと計算結果とグラフが出てくるのが分かります。
スクリーンショット 2018-08-23 5.26.42.png
https://github.com/tomoyamachi/deep-learning-from-scratch-2/blob/for_pycharm/python/ch01/sample.ipynb

最後に

2ヶ月ほど前からPythonを触り始めていて、Word2Vecの概念や、ライブラリの利用方法はわかっていたけど、内部で何をやっているかわかっていないというレベルでした。
そのレベルの自分にとっては、丁寧に、誤解が起こらないように書いてある本だと感じました。

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13