iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

2016-01-01から1年間の記事一覧

CNN による画像分類で使われる前処理・テスト時処理まとめ

とりあえず ImageNet 系の論文で、目に入ったものから順々にまとめていきます。情報・ツッコミ歓迎。 前処理・Data Augmentation Mean Subtraction 入力画像から平均を引く。[103.939, 116.779, 123.68] を各ピクセルから引く。VGG はこれ。 Per-pixel Mean …

スヌープモードを設定して QPI を爆速で超える

スヌープモードの影響 マルチ CPU のマシンでメモリ帯域を測ると、別ソケット側のメモリとの帯域が死ぬほど遅いという現象がある。これは、CPU のスヌープモードがデフォルトの「Early Snoop」になっているからである。BIOS からこれを「Home Snoop」に変更…

数列の和を計算するアルゴリズム

数列の和の計算にアルゴリズムなんて考える余地はあるのか?と思ったが、誤差についても考える場合、単純な方法以外にも複数のアルゴリズムが存在し使われているということを教えてもらった。 Kahan summation algorithm - Wikipedia Pairwise summation - W…

Cython の落とし穴

ポインタを使ってあれこれしたいときの落とし穴を会社で教えてもらった。 numpy の ndarray.data の挙動が型を指定するかによって変わる tutorials NumpyPointerToC · cython/cython Wiki · GitHubここに書かれた方法2でポインタを取り出したい時、引数の型…

Regularized Greedy Forest (RGF) のロス関数をカスタマイズする

Regularized greedy forest (RGF) in C++RGF の公式実装のロス関数をカスタマイズするには、C++ のコードを直接書き換えることになる。とはいえそんなに難しくない。以下の方法がお手軽。 src/comm/AzLoss.cpp を開く AzLoss::getLosses 関数に loss_type ==…

malloc にわざと失敗させる

#define _GNU_SOURCE #include <dlfcn.h> #include <stddef.h> #include <stdlib.h> #include <stdio.h> #include <assert.h> typedef void* (*malloc_t)(size_t); static malloc_t libc_malloc = NULL; static unsigned long malloc_max_called = 1000 * 1000; void initialize() { libc_malloc = (malloc_t)</assert.h></stdio.h></stdlib.h></stddef.h></dlfcn.h>…

機械学習アルゴリズムの直感を養えるデモ・記事

発見次第更新予定 デモ Neural Network A Neural Network Playground Classification with NEAT Gradient Boosting Gradient Boosting explained [demonstration] Gradient Boosting Interactive Playground t-SNE How to Use t-SNE Effectively — Distill …

NIPS のヤバいプロモーションビデオ

www.youtube.com音を出して観るべき。

Python の処理系

Pysco Pyjion Nuitka Skulpt

Chainerを明示的にCUDA無しを指定してインストールする

python setup.py --cupy-no-cuda install https://github.com/pfnet/cupy/blob/master/cupy_setup_build.py#L211github.comnvvp とか使いたさに中途半端に手元のマシンに CUDA を入れているとこういう指定が必要になる。

Deep Learning のデバッグ

ミニバッチ化時にミスることが多いので、以下のようなことをすると良いらしい。 データごとの計算を書いてみて、1 つずつ計算したものと照合する ミニバッチサイズを 1 にして計算したものの和or平均とミニバッチで計算したものを比較する

numpy の行列乗算:matmul, dot, @

stackoverflow.com dot と matmul 2 次元では完全に同一。3 次元以上では異なる挙動をする。 dot は a の最後の軸と b の最後から 2 番目の軸を掛け合わせる matmul は行列の配列だとみなして行列積を計算する @ 演算子 Python 3.5 以降では @ 演算子や @= …

t-SNE の実装はどれを使うべきなのか?

scikit-learn の問題点 scikit-learn 信者としてはとりあえず scikit-learn の実装を使いたくなるが、scikit-learn の実装はおすすめできないらしい。 -https://www.red dit.com/r/MachineLearning/comments/47kf7w/scikitlearn_tsne_implementation/ (はて…

バイナリ探偵をする時に使うコマンド

共有ライブラリ編 env | grep LD md5sum 一致してるものを調べる ls -l シンボリックリンクを調べる readelf -a hogehoge.so readelf -a hogehoge.so | grep SONAME SONAME を調べる find build/ -name '*so' | xargs ldd | less 依存関係を調べる ldd `whic…

Python のデータ並列な処理を早くするやつ

numexpr github.com numba Numba — Numba

CPU でいい感じと噂の NN フレームワーク

autograd(微分可能 numpy) github.com pyCNN github.comCNN とは convolutional neural network ではなく C++ neural network

NN フレームワークのベンチマーク

convnet benchmarks github.comconvnet (CNN) の実行速度のベンチマーク比較表。これを見ると意外と chainer はかなり良い位置につけている。cuDNN が速い。 DeepMark github.com

iperfでネットワークの速度を測る

サーバ起動$ iperf -sクライアント$ iperf -c

PyCharmを使いこなしたい

shift 2回押し:search everywhere alt+enter:警告が出ているところで修復(自動import、initでself.hogeにコピー) command+shift+A:ランチャー的なモノ起動 F1:quick documentation Shift+F1:external documentation(ブラウザ) Command+B:定義に飛…

MSR Initialization

wscaleに√2を与える

Python でのデータ処理パイプライン

統計的処理、特徴量抽出、機械学習の訓練・予測のパイプラインを上手く扱いたい。 scikit-learn:パイプラインがあるが、キャッシュしたりできない。 joblib:scikit learn と仲良し(バンドル)。キャッシュしたりする機能がある。 maf:求めているものに近…

Batch normalization でゼロ割りが出て NaN になる

batch_normalization.py:65: RuntimeWarning: divide by zero encountered in true_divide self.x_hat = x_mu / self.std[expander] train/test のフラグを間違えて設定しているとなってしまう。

リバーストンネル + autossh で ssh 開通

状況 マシン A に ssh したい でも,マシン A はネットワークの内側にあって,外から ssh できない マシン B は外から ssh できる マシン B からマシン A に ssh できない マシン A からマシン B に ssh できる 解決法 マシン A の crontab に以下を書いてお…