iPadで「ゼロから作るDeep Learning」を勉強するために必要なこと
わりとニッチな話。
iPad Pro を買ってからというもの、Pythonista3 という iPad 用開発環境で python を書いてます。
で、最近話題のこちらの書籍を iPad を使って勉強しようと思ったのですが、見事にハマったので備忘録。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る
問題点
本書の学習につかうサンプルソース群がこちらに公開されているのですが
GitHub - oreilly-japan/deep-learning-from-scratch: 『ゼロから作る Deep Learning』のリポジトリ
Pythonista3 からだと MNIST データの読み込みの際にエラーを起こしてしまって使用できません。
なので、ソース群を Pythonista3 用に改造してあげる必要がありました。
先に結論
こちらに改造済みサンプルソース群をアップしてあります。
使用方法としては、Pythonista3 から StaSh を使って、
wget -o samples.zip https://github.com/poipoi/deep-learning-from-scratch/archive/master.zip unzip samples.zip
すればOKです!
細かい話
そもそもなんでエラーが起きていたかというと、内部で使用している pickle が NumPy 配列に対応していないバージョンだったからっぽいです。
なので、NumPy 配列から一旦標準のリストに変換してあげて pickle.dump, pickle.load するように変更しました。
dataset = _load_img(key_file[key]).tolist()
with open(get_save_file_path(key), 'rb') as f: dataset[key] = np.array(pickle.load(f))
また全データを一気に読み込むとメモリ不足で Pythonista3 が落ちてしまったので
各サンプルデータ毎に生成する pickle データを分けてあげることで落ちないようにすることができました。 (ここら辺は環境によるかも。。。)
dataset = {} for key in key_file.keys(): if not os.path.exists(get_save_file_path(key)): init_mnist(key) with open(get_save_file_path(key), 'rb') as f: dataset[key] = np.array(pickle.load(f))
おわり。
参考サイト
「ゼロから作るDeep Learning」をiPhoneのPythonistaだけで学ぶ(2) - blog.tmp.online