DockerでJupyterLabを起動してグラフを表示する

DockerでJupyterLabを起動してグラフを表示する

久々に機械学習、ディープラーニングの勉強を再開しようと思い、環境を構築したのでメモ。自分はローカルの環境を汚したくなかったので、Docker上でanaconda & JupyterLabを動かせるようにしました。

JupyterLabを起動

docker run --rm --name jupyter -d -p 8888:8888 \
-v /Users/hisamitsuryouhei/PycharmProjects/deep-learning:/deep-learning \
-w /deep-learning continuumio/anaconda3 \
jupyter-lab --no-browser --port=8888 --ip=0.0.0.0 --allow-root --NotebookApp.token=''

anaconda3のイメージがDockerHub上にあるので、それを使います。”/Users/hisamitsuryouhei/PycharmProjects/deep-learning”の箇所は、各自自分のワーキングディレクトリを記述してください。

これで、http://localhost:8888にアクセスするとJupyterLabの画面が表示されます。
Docker起動時に、–NotebookApp.token=”をつけなかった場合、起動時に発行されたトークンをhttp://localhost:8888?token=’トークン’のように指定する必要があります。が、今回はローカル環境なのでトークン不要の設定にしました。

グラフを表示する

以下のコードを書いて、ニューラルネットワークの活性化関数としてよく使われるシグモイド関数のグラフをプロットしようとしました。

□エントリーポイント

import numpy as np
import matplotlib.pylab as plt
import functions                # 外部ファイル読み込み
x = np.arange(-5.0, 5.0, 0.1)
y = functions.sigmoid(x)        # 外部ファイルの関数使用
plt.plot(x,y)
plt.ylim(-0.1, 1.1)
plt.show()

□functions.py

import numpy as np
# シグモイド関数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

が、上記のコードを記述して実行すると、
<Figure size 640×480 with 1 Axes>
と出るだけで、グラフは表示されません。調べてみると、以下の記事が見つかりました。

https://stackoverflow.com/questions/52862234/jupyter-notebook-plot-inside-a-function-figure-is-not-plotted/52862586

Jupyterでmatplotlibを使う場合は、

%matplotlib inline

の記述が必要とのこと。エントリーポイントのimport文の下に追記すると、下記の通りグラフが表示されました。