プログラミング
ここ2日ぐらい調べたパフォーマンス解析に関する調査をまとめる. 推測も含まれているので注意. まず, 当初の目的は「Boost.Pythonを用いて作った共有ライブラリをPythonから呼び出した際のボトルネック(hot spot)を発見したい」だった. パフォーマンス解析…
Boost.PythonでNumPyのarrayを受け取る手段として, NumPyが提供するCのAPIを使うという手がある. 使いづらいが機能的には完全であることと, CとPythonを協調して使う際の知見となるため, 記録を残しておく.基本的な使い方はこちらのページを見ればわかる. Bo…
scipyで書いたプログラムでも一部が遅くてそこをC++で実装したいというシナリオはよくある. それには色々な手段があるというのは以前の日記でも紹介した通り. 今回はBoost.Pythonでscipy/numpyのarray(ndarray)を取り扱う方法を説明する. 基本的な使い方はbo…
C++プログラムのパフォーマンス解析をgoogle-perftoolsを使ってやった.公式ドキュメントによると, LD_PRELOADを使う方法は非推奨らしいんだけど, 動的リンクする方法ではなぜかうまくいかなかった.まず, 関連パッケージをaptでインストール. そしてCPUPROFIL…
うおー, このページ曰く, libSVMがSWIGを使って提供しているPythonインターフェイスはscikits-learnが提供しているインターフェイスより遅いらしい. そもそも実装が同じだったらscikits-learn使うし, これはlibsvmを直接使わない方がいいっぽいなぁ.
Pythonを使っていると, Python遅い・・・ -> C++で一部のメソッドだけ実装したいというシナリオはかなりの人が通る道だと思う. だが, その手段がありえぬ程多い・・・. pythonとc++のインターフェイスの比較という記事を参考にした結果, とりあえずBoost.Pyt…
なぜかマイクからの読み取りとリアルタイムグラフ描画を混ぜる. マイクからの読み取り ライブラリとしてpyaudioを使用した. aptで入る. 以下のプログラムはほとんど公式のサンプル通りだけど, 2秒マイクから音を受け取って, グラフに描画する. import pyaudi…
ghmmで特徴ベクトルの次元数を大きくすると, BaumWelchアルゴリズムの結果がnanでいっぱいになってしまう. これは, 過学習が起こった際の数値的不安定さが原因と考えられる. (違うかも)そこで, 出力分布の共分散行列を対角行列に制限することで, パラメータ…
まだ, 編集中Pythonから呼ぶときにエラーメッセージが出るため, その原因を解明するためちょっとだけghmmのソースコードを読むことにした. 下はあいまいに読んだものなので間違っていても許してください.なお, ソースコードを読む際にBaumWelchの更新式が手…
ghmmで観測系列の次元数を25次元にしたら, 話にならない程遅くなった. これは公式メーリングリストで言及されている問題で, 簡単に解決できる. 遅くなるのは, ghmm.HMMFromMatrices(values,ghmm.MultivariateGaussianDistribution(values),A,B,pi) この初期…
Twitterのホームに, The Interviewsへのリンクを追加するGreasemonkeyを作成(http://userscripts.org/scripts/show/114020). Twitterのscreen_nameとThe InterviewsのIDが同じ場合, 名前の下にリンクが出現する.初めてGreasemonkeyを書いたけど, 結構楽しい.…
PythonからHMM(隠れマルコフモデル)ライブラリであるghmmを利用する方法の紹介です. インストール方法は公式ページhttp://ghmm.org/を参照.次のサンプルコードは, いかさま師をモチーフにしたHMMを生成しています. HMMの出力はいかさま師のサイコロの目に相…