2017-10-01から1ヶ月間の記事一覧

Pythonでループを使わない計算にする(高速化)

ループを使わないようにすると、大分まともに実験ができるようになるようだ。以下の関数を組みわせるとforループを使わずに済む。Matlabかよ。 #A: 行列 (MxN) #b: 列ベクトル (Mx1) C=A*A #行列の要素同士の積(アダマール積)→C D=A*b #行列の各列の要素と…

結局の実装

結局scikit-learnの関数,アダマール積,numpy.sum(),内包表記を組み合わせ、小さなPythonモジュールを別スクリプトにまとめてimportする場合の計算が速かった。やっと現実的な計算時間で処理できるようになって一つ目の山は越えたが、もう一つ計算重そうな箇…

PythonモジュールをC++で作ってみたが(Windows)

カーネルトリックを使ってグラム行列を計算してみた。Pythonのforループ(2重)を使って書いたところ500秒くらいかかっていたが、べた書きのC++3重ループで110秒くらいだった。約5倍速くなった。VisualStudioの最適化オプションをいじってみたが、Releaseで特…

C/C++でモジュール作成を行わない場合のPython高速化

参考にしてやってはみたものの、ターゲットとなる今回の計算には有用ではなかった・・・。 http://technicaldiscovery.blogspot.jp/2011/06/speeding-up-python-numpy-cython-and.html

PythonモジュールをC++で作る(Mac)

$ brew install boost-python --with-python3 で以下のディレクトリにインストールされる。 /usr/local/Cellar/boost/1.65.1/include/ #header /usr/local/Cellar/boost-python/1.65.1/lib/ #.a, dylib 中身を確認したけど、*.a が静的ライブラリで、*.dylib…

PythonモジュールをC++(Boost.Numpy)で作ってみる(Windows版)

ひとまず何か書いてコンパイルしてみる。プロジェクト名やソースコード名は適当でいい。ここ(http://tadaoyamaoka.hatenablog.com/entry/2017/05/25/234934)のコードを参考にして以下。ひとつのモジュールに複数の関数を定義することも可能。 #define BOOS…

PythonモジュールをC++(Boost.Numpy)で作るための準備(Windows環境)

ひとまずWindows上で動かせるようにする。なぜなら、数値計算用のマシンがWindowsだから・・・。インストール済みのminicondaがPython2.xだったのでアンインストールの上、Anacondaをインストール。AnacondaでインストールしたPythonは3.6ということで、今ま…