verilog書く人

自称ASIC設計者です。どなたかkaggle一緒に出ましょう。

chainerで作ったDeep Learningモデルのハイパーパラメータチューニングを自動化してみる

ディープラーニングは各層の種類、活性化層の種類、オプティマイザの種類、オプティマイザのハイパーパラメータ、などなどたくさんあり、
手で最適化していくのは大変です。

そんなとき、

1. グリッドサーチ:パラメーターの候補の組み合わせパターンを全て調べる。
2. ランダマイズドサーチ:パラメーターの候補の組み合わせパターンを全て調べる。
3. その他賢いアルゴリズム系のサーチ:ベイジアン最適化、Tree-structured Parzen Estimator Approach(hyperopt)

といった、ものが使えます。

グリッドサーチはハイパーパラメータが少ない機械学習アルゴリズムでは有効ですが、ディープラーニングではあまりおすすめしません。実際には2.か3.を選ぶことになります。

賢い系のアルゴリズムはより有望そうなパラメータを試そうとしてくれます。

 

今回はhyperoptを使った例を書いてみます。

エッセンスはGpyopt(ベイジアン最適化)などほかのライブラリでも変わりません。

 

続きを読む

エイプリルフールなので、chainerのGUIクライアントを作った。

GitHub - fukatani/ChainerWing: GUI deep learning IDE based on chainer.

※一応動きます。

 

f:id:segafreder:20170401224342p:plainこんな感じ。

ぽちぽちやってるとニューラルネットが組みあがります。chainerベースです。

 

めちゃ機能が少ないですが、今後充実する予定。たぶん。

続きを読む

【PFIセミナーまとめ】chainerMNはなぜ速いのか、今後の提供は?

f:id:segafreder:20170203235939p:plain

 

先日このグラフで世界を驚かせたchainerMNの中身の話をchainerMNによる分散学習 - YouTubeでやっています。

chainerは分散ディープラーニングフレームワークとして現在世界最速だそうです。

視聴したのでメモ。おもしろかったです。

語り手はchainerMNの作者秋葉さん(iwiwi)
Top coderで四位、数々のプログラミングコンテストで受賞歴を持つすごい人。

 

動画を見る限り今までchainerで作っていたモデルをchainerMNに移し替えるのも簡単そうです。

続きを読む

numpyやchainerでのベクトル、行列、テンソルの積関連演算まとめ

年末年始にテンソル積と格闘しわけがわからなくなったのでメモ。

 

numpyのいわゆる積と呼ばれるAPIには、

numpy.multiply, numpy.dotnumpy.vdotnumpy.innernumpy.crossnumpy.outernumpy.matmulnumpy.tensordotnumpy.einsumとまあ結構たくさんあります

特にnumpyについてまとめますが、chainerやtensorflowで同名のAPIが存在する場合、numpyと同じインターフェイスで設計されていますのでほぼ同じ計算をします(はずです)。

 

続きを読む

C++からPythonを叩きつつ、boost.numpyを使ってC++とPython間でndarrayをやりとりする

C++メインで作られているシステムからchainerだったり、scikit-learnだったりを使って機械学習をしているPythonモジュールを呼び出しとデータをやりとりさせたいとします。

 

すると、C++の入力データ(n次元array)をnumpyに変換してPythonに渡し、Pythonからnumpyで返ってくるデータを解釈する必要があります。

 

続きを読む

物体検出用の画像アノテーション正解データ生成に便利なツール

RCNN (Regional Convolutional newral networks)などの機械学習モデルを使って画像から物体検出するには、"どこ"に"なにが"あるのか、すなわちバウンディングボックスの四角の座標(x, y)および正解ラベルが画像とセットで必要となります。

10000枚単位の画像が欲しい場合、自力で集めるのは大変なので、Pascal VOCのようなコンペで公開されている過去のトレーニング用データセットを流用しますが、それだけでは足りなかったり、自分が検出したい物体がなかったりします。 

続きを読む

scikit-learn 0.20からクロスバリデーションの使い方が変更される模様

機械学習をやるときに結構良く使うところだなと思っていた、クロスバリデーションのスプリッター系モジュールのインターフェースが変わることに気づいたのでメモ。

 

scikit-learnの従来のクロスバリデーション関係のモジュール(sklearn.cross_vlidation)は、scikit-learn 0.18で既にDeprecationWarningが表示されるようになっており、ver0.20で完全に廃止されると宣言されています。

 

詳しくはこちら↓

Release history — scikit-learn 0.18 documentation

 

続きを読む