ちょっと仕事絡みで機械学習の基礎を身に付けねばならなくなった。
当然、機械学習を学ぶためには、自分でコードを書いて原理を覚えねばならない。
コードを書くには、パソコンもしくはそれに類するマシンが必要である。
自宅にはデスクトップのWindowsマシンもあるし、ラップトップならMacbook Proも自宅と職場の間を行き来している。
機械学習といえばPythonでコーディングするのが流行りで、WindowsでもMacでもPythonの開発環境を整えるのは簡単だ。
しかし、ちょっとした空き時間に勉強するならば、どこでも使える環境が大切だ。
どこでも使えるようにするならば、Macbook Proを使えばよさそうだが、Macbook Proはちょっと重い。
そんな私が、普段出先で使っているツールといえばiPhoneとiPadだ。
所詮スマートフォンとタブレットなのだが、iPhoneやiPadのようなiOSデバイスには、Pythonista3 という素晴らしいAppがある。
これはiOS上でPythonのコードを書いて実行できるAppで、なかなか便利な代物だ。
1,200円とちょっと躊躇してしまいそうな値段設定だが、これで機械学習の能力が身につくのなら安いものだ。
ちなみに、コードを書くときはソフトウェアキーボードよりは外付けキーボードのほうが圧倒的に作業効率が良い。
著者はiPadにLogicool製のキーボードケースを装着して使っており、作業しやすいうえに軽量でそこそこカッコよく、結構気に入っている。
Pythonista3をインストールしたら、軽くPythonで遊んでみよう。
一般的な環境でいうところのinteractive shellは、Pythonista3ではConsoleというものになっている。
Pythonista3のConsoleを出すには、適当なファイルを開いた画面から、右から左に一度スワイプしてやればよい。
早速、Pythonista3のConsole上に、
print("Hello, World!")
と打ってみよう。
これがPythonにおける『Hello, World!』だ。
さて、ここまで来たら、本格的にPythonista3を使った学習環境の構築だ。
まずは、Pythonista3上でpip等のコマンドを使えるようにするために、StaShをインストールする。
Pythonista3のConsoleに
import requests as r; exec(r.get('http://bit.ly/get-stash').text)
とタイプしてReturnキーを押せばよい。
機械学習の入門書として様々な書籍が刊行されているが、ここでは、O'Reilly Japanの名著『ゼロから作る Deep Learning』を教科書として、これを丁寧にトレースしてみることにしよう。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
基本的には、このテキストの流れに沿ってコードを打ち込み、実行してゆけばよい。
何故。そのような動作をするのか、数学的な概念を理解しながらコードを書いてゆこう。
とりあえず第1章は簡単だ……と思いきや、そうはいかない。
『1.6.3 画像の表示』では画像『lena.png』という画像を読み込むのだが、その画像をカレントディレクトリに放り込むところで少し苦労する。
この本を学習するにあたって必要なデータ類をアップしているリポジトリがある。
github.com単純にこのリポジトリから画像やら何やらをダウンロードして、iCloud Driveに放り込めばよさそうなものだが、そうはいかない。
iOSのシステム上の制約がいろいろとあるせいで、iCloud Driveなんかだと、必要なデータをiPad上のPythonista3ディレクトリに放り込めないのだ。
なんとか力尽くで放り込んだとしても、第3章のMNISTデータの読み込みでつまづく。
そこで、この問題を解決してくださったpoipoides様の記事を参考にして、
poipoides.hatenablog.com以下のようにStaSh上にタイプする。
wget -o samples.zip https://github.com/poipoi/deep-learning-from-scratch/archive/master.zip
unzip samples.zip
すると、iPad上にpoipoides様がモディファイしてくださったライブラリがダウンロードされ,展開されている筈だ。
今後はこれを有難く使わせていただこう。