47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

ディープラーニングを勉強してみる その1

大分寒くなってきました。耐えられないほど寒いわけではないですが、体調を考えて暖房を使い始めることにしました。

ディープラーニングへの興味は薄れてきたとは言ったものの、面白そうな講座を見つけたので、少し遊んでみようかという気になりました。
www.atmarkit.co.jp
Google Colaboratoryを使ってそのまま実行できるので、理解しやすいです。

講座がまだ途中なので、少し待たないといけないですが、次が楽しみです。

Colaboratoryについて

この講座にColaboratoryの使用方法の説明へのリンクが有るのですが、何故かGoogle Driveから登録して使えとかになっていて判りにくかった。
colab.research.google.com
普通にこの「Colaboratory へようこそ」のページの方を見たほうがいいと思います。

  • 「ファイル」→「python3の新しいノートブック」とすれば新しいものが作成できて、コードをコピペすれば実行できます
  • 「ファイル」→「保存」とすればGoogle Driveに保存されます
  • 「ファイル」→「開く」とすれば、Google Driveに保存したものを開けます

Windows Subsystem for Linuxに同じような環境を作ってみた

ローカルでも実行してみたいなと思って、WSLにも環境を構築してみました。といっても、大体ここに書いてある通りにしただけです。
qiita.com
違うのは以下の点。

  • バージョンは最新を使用(python 3.7.3, tensorflow 2.0.0)
  • venvは使わない
  • パッケージを幾つか追加

pyenvのインストール

pyenvはpythonの複数バージョンを切り替えて使う事ができるツールです。ubuntsuのpythonは2.7系で、tensorflowが3.5以上が必要らしいので、このツールで切り替えて使います。

$ curl https://pyenv.run | bash

以下の3行を ~/.bashrcに追加してから、有効に(source ~/.bashrc)する。

export PATH="/home/hironaga/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

pyenvでpython 3.7.3をインストール

まずは、不足しているパッケージをインストールします。不足するパッケージは環境によるでしょうが、私の場合、以下が足りませんでした。

$ sudo apt install libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libssl-dev libffi-dev

python 3.7.3をインストールします。

$ pyenv install 3.7.3

これだけで終わりです。これで、

$ pyenv global 3.7.3

とすると、3.7.3を使うようになりますし、

$ pyenv global system

とすると、システムのものに戻ります。

tensorflowをインストール

tensorflowをインストールします。

$ pip install --upgrade -I setuptools
$ pip install --upgrade tensorflow

setuptoolsは以下のような文句を言われたので、インストールしています。

ERROR: tensorboard 2.0.2 has requirement setuptools>=41.0.0, but you'll have setuptools 40.8.0 which is incompatible.

これで、とりあえずサンプルコードは動きました。

(おまけ)pandasのインストール

「Colaboratory へようこそ」のページに合ったpandasを動かそうとしたのですが、pandasのバージョンが0.25.xだと動かないようです。
qiita.com
ここに書いてあるように、0.24.1を使うと動くようになりました。

$ pip install pandas==0.24.1

ただ、以下のようにprintをかましてやらないと、うまく表示されません。この辺りColaboratoryは工夫されているようです。

import pandas as pd
print(pd.__version__)

california_housing_dataframe = pd.read_csv("https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv", sep=",")
print(california_housing_dataframe.describe())

(おまけ その2) WSLではGPUは使用できない

そもそもWSLでは、GPUのHWを認識していないので、GPUを使った高速化は使えません。なので、学習はColaboratoryで行って、結果だけ使うのがいいんでしょうね。

さて、講座の後編が来るまでに中編までを理解しておかないと…