読者です 読者をやめる 読者になる 読者になる

pip install deeplearning

こちらもどうぞ。http://monthly-hack.com

chainerのエラー

OS X El Captain上でChainer(ver1.5.1)のMnistサンプルを動かしたら、
学習が進まないエラーを見つけた話

numpyが裏で使っている計算ライブラリを変更することで解決できました.
ついでに計算速度も良くなるので是非, Intel MKLを導入しましょう. (追記: 1/30)
pip-install-deeplearning.hatenadiary.jp

学習が進まない

新年あけましておめでとうございます。
今年1年間このブログを続けるようにがんばります。

前回、Macを新調した話をしましたが、
あのあとChainerの動作チェックしたら
おそらくMac環境依存のエラーに出くわしました。

GithubにあるChainerのソースコードには様々なサンプルコードがあって
examples/mnist/train_mnist.py でmnistをニューラルネットワークで解けます。
github.com


通常だとこのように学習が進むのですが、
(こちらから拝借しました)
Python - 【機械学習】ディープラーニング フレームワークChainerを試しながら解説してみる。 - Qiita

epoch 1
train mean loss=0.278375425202, accuracy=0.914966667456
test  mean loss=0.11533634907, accuracy=0.964300005436
epoch 2
train mean loss=0.137060894324, accuracy=0.958216670454
test  mean loss=0.0765812527167, accuracy=0.976100009084
epoch 3
train mean loss=0.107826075749, accuracy=0.966816672881
test  mean loss=0.0749603212342, accuracy=0.97770000577
epoch 4
train mean loss=0.0939164237926, accuracy=0.970616674324
test  mean loss=0.0672153823725, accuracy=0.980000005364
epoch 5
train mean loss=0.0831089563683, accuracy=0.973950009048
test  mean loss=0.0705943618687, accuracy=0.980100004673


僕のやったところ...
学習エラーが大きすぎるし、学習が進んでいない?事態に。

epoch 1
graph generated
train mean loss=103.601352873, accuracy=0.455199998431
test  mean loss=248.828919678, accuracy=0.364100000262
epoch 2
train mean loss=477.577273048, accuracy=0.449366665569
test  mean loss=570.153792725, accuracy=0.587700000107
epoch 3
train mean loss=910.396587283, accuracy=0.505549998085
test  mean loss=735.400798035, accuracy=0.496799997687
epoch 4
train mean loss=1791.45682208, accuracy=0.513516665933
test  mean loss=1289.56998779, accuracy=0.512299997807
epoch 5
train mean loss=2166.74419698, accuracy=0.55141666539
test  mean loss=2102.33599121, accuracy=0.617300002873

詳しく調査

何がおかしいのかいろいろ調べると中間層の値(n_units)が
1000付近だと異常を起こすことを特定。(簡単のため、epoch=1)
n_units = 900, 910, ... , 1090にしたときのtrain loss(青)
f:id:mutomasahiro1111:20160105140722p:plain

n_units = 990, 991, ... , 1009にしたときのtrain loss(青)
f:id:mutomasahiro1111:20160105140727p:plain

環境

一応、僕の環境はこんな感じ。

OS X El Captian v10.11.2
MacBook Pro (Retina 13-inch、Early 2015)
プロセッサ 3.1 GHz Intel Core i7
メモリ 16 GB 1867 MHz DDR3

Chainer公式に報告

自分では原因を特定できないので、Chainer公式に報告しました。
Chainer (@ChainerOfficial) | Twitter
にリプライを送ると、こちらに似たような問題を抱えた人を発見。
groups.google.com
予想通り、Mac環境に依存したエラーのようですね。

このままだと研究してる時にこのPCから出た数値を信用できなくなるので
次のアップデートぐらいで改善されてると嬉しいです。