オンラインで約4000円のプリンターを売ったら裁判で300万円以上を支払うように命じられた男性
http://gigazine.net/news/20160607-30k-printer-judgment/
GIGAZINEの記事を見てひどい話だと思ったので調査。
http://www.courierpress.com/news/state/Indiana-man-sued-for-30K-over-40-printer-382004321.html
http://www.indystar.com/story/news/2014/10/01/enoughs-enough-indiana-supreme-court-tells-prolific-filer-lawsuits/16529893/
http://www.dailymail.co.uk/news/article-3627706/Man-sold-40-used-printer-Craigslist-spends-six-half-YEARS-court-spends-12-000-legal-fees.html
tiny-cnn
昨日に引き続きtiny-cnn。
https://github.com/nyanp/tiny-cnn
作者は多分日本人っぽい。2013/01頃に作り始めたみたいだ。
http://nyanp.hatenablog.com/entry/20130108/p1
tiny-cnnのレポジトリのdataフォルダには、mnistの訓練データは入っているけれど、cifarの訓練データは含まれていない。
http://www.cs.toronto.edu/~kriz/cifar.html
から cifar-10-binary.tar.gz をダウンロードして得たデータを指定して example_cifar_train プロジェクトを実行してみると、1回のepochの実行に 620秒程掛かる。(Core i5-4670 @ 3.40GHz)これが30回分なので学習が完了するのに5時間以上必要だ。
tiny-cnnはC++11で書かれているけれど、もっと単純にC言語で書かれた実装も見てみたいな。
トレーニングに結構時間が掛かるのでNeuralNetwork構築の試行錯誤が時間が掛かって大変そう。
まぁ何もしないで何も生まれる事は無いのだから何かするしかない。
tiny_cnn
http://d.hatena.ne.jp/shi3z/20160603
で紹介されているライブラリをビルドして動かしてみた。
OpenCVに依存しているのでそこで躓く。。OpenCVのWindows用のインストーラーを落としたら以前入れていたのがあって、cmakeも済んでいた。少し古いのだったけど問題はなかった。3系でなくても問題無かった。
そして、tiny-cnn自体のビルドでさらに躓く…。cmakeでVisualStudio用のプロジェクトファイルを生成させてるけど、OpenCVの場所が分からないというので、
で指定(静的Linkにしているのは、OpenCVのDLLのPathを環境変数に指定する必要が省けるので)
set CMAKE_PREFIX_PATH=D:\libs\opencv\build\x86\vc12\staticlib
その後に
(間違った場合は CMakeCache.txt を消してから実行したほうが良いかな。。)
cmake .
ビルドすると opencvのincludeファイルが見つからないとのエラー。
を VC++ DirectoriesのInclude Directoriesに入れる。プロパティファイルとか自動指定してくれたら楽なのに。。
D:\libs\opencv\build\include
その後ビルドのエラーを解消するために、C/C++ => Code Generation => Runtime Library を Multi-threaded Debug に変更。
そして example_mnist_train を動かそうとするとデータフォルダを指定する必要があるとの事なので相対パスで指定して起動したら例外が発生(間違って ../data と指定していた。正しくは ./)。しかもデバッグビルドなのにコードデバッグが出来ない。
原因は、プロジェクトのプロパティの C/C++ General の Debug Information Format が空指定になっていたから。ララ…cmakeよ…。
とりあえずデータフォルダ(D:\projects\tiny-cnn\data)を絶対パス指定して起動したらうまくいった。多分相対パス指定が間違えていただけかな。。main関数で try catchしてエラー内容をcoutしてくれたら良いな。。
tiny-cnn/examples/mnist/train.cpp の train_lenet 関数内のラムダ式 on_enumerate_epoch が呼ばれる周期が、Debugビルドだと約257秒程度、Releaseでも約49秒の時間が掛かる。
tinyなライブラリだけど依存しているライブラリがあったりcmake使ってたりすると色々と躓くな。。まぁ便利なものはbeneficialでもあるので時には我慢して受け入れたほうが良いな。。
エンジニアという種族は局所最適化を求めがち
http://doda.jp/engineer/it/guide/001/02a.html
これは確かに…。まぁゆくゆくは自動化される部分が増えるだろうけれど。
技術的負債
http://doda.jp/engineer/it/guide/001/19b.html
名字から別の人を想像してしまった。祭りの的屋的な人種ではなくて正反対そうな社会人だ。。こういう人が実直に下支えしてるんだなぁ。。
Googleが人工知能
https://sites.google.com/site/steveyegge2/google-at-delphi
結構昔から研究はやってたのか。それにしてもC++じゃ身軽には作れないってことかな。。