PerlとMXNetでディープ・ラーニング: 間に合わせのパッケージ

[ 更新]

というわけで、間に合わせのパッケージを作った。このtar ballには、perl package、サンプルスクリプト、お試し用の画像データが含まれている。
[2017年8月8日追記: ここで紹介する間に合わせのパッケージの次のバージョンが「PerlとMXNetで文章生成」で紹介されている]

このパッケージでは、2つの新しいメソッドを定義している。

save_current($prefix)
現在のエポック数で$prefixで始まるファイル群に保存する。save_checkpointで保存される情報以外に、エポック数とbindに必要な情報が、$prefix-info.jsonに保存される。

load_current($prefix)
save_currentで保存された情報を呼び出して、bindする。その結果は直ちに predictに使えるが、さらにfitしたいときは、bindしなおす必要があるかもしれない。

他の部分は、その2つをサポートするためのものである。場合によっては、エポック数が正確でないかもしれない。

使い方は、サンプルスクリプトを見れば明らかである。mnist_train.plでトレーニングして保存、mnist_predict.plで呼び出して予測している。

予測に使うデータは、GIMPで作った、28x28のGray scaleの画像である。中身は全て7である。標準的なもの欧米人が書きそうなもの日本人が書きそうなものなど、いくつか試した。

7 7 7 7 7 7

結果は、


./sample_01.png:
[2.15308e-21 4.76647e-05 1.27437e-11 1.27007e-09 3.00555e-16 6.23401e-11 1.35902e-28 0.999952 1.35225e-10 1.04274e-17]
Classified as 7 with probability 0.99995231628418
./sample_02.png:
[2.56645e-21 2.08804e-05 1.16173e-12 3.08457e-09 8.96311e-15 3.42639e-09 3.31946e-27 0.999979 9.19191e-10 2.07659e-17]
Classified as 7 with probability 0.999979138374329
./sample_03.png:
[7.81171e-19 1.74459e-07 1.93385e-11 4.15064e-10 1.01641e-12 1.38016e-08 3.60598e-23       1 1.51815e-07 1.04787e-13]
Classified as 7 with probability 0.999999642372131
./sample_04.png:
[2.10385e-17 6.46101e-08 1.79561e-11 8.11009e-11 5.62644e-16 5.15142e-12 3.05393e-27       1 1.79378e-11 2.55584e-18]
Classified as 7 with probability 0.99999988079071
./sample_05.png:
[2.93004e-06 1.76443e-05 2.26107e-05 0.0159356 1.34799e-09 6.90799e-05 4.15154e-17 0.982193 0.00160392 0.000154986]
Classified as 7 with probability 0.982193112373352
./sample_06.png:
[5.48189e-20 1.65538e-05 8.96858e-09 1.3317e-10 2.86068e-11 4.27451e-14 3.4179e-30 0.999983 5.17625e-12 5.39116e-15]
Classified as 7 with probability 0.999983429908752

といった感じである。ファイル名、0〜9に対する確率、最も確率の高い結果の順に表示している。

この中で、sample_05.pngの挙動がおかしかった。このデータでは、多少確率が低いという程度だが、トレーニングしなおすと、1や3といった別の数字を示すことがある。どうやら、細くて白黒はっきりしたデータが苦手なようだ。

ってのは、サテオキ、
とにもかくにも、動いた。

[「状況説明」に戻る] [「PerlとMXNetでディープ・ラーニング」に戻る] [「あえてのPerl」に戻る]