4

ニューラル ネットワークをトレーニングする目的で、ある時点で、212,243 × 2500 の巨大な密行列phi、およびベクトルy(212243) とw(2500) があり、これらはnumpydouble の配列として格納されています。私が計算しようとしているのは

w = dot(pinv(phi), y)
# serialize w...
r = dot(w, transpose(phi))
# serialize r...

私のマシンには、Ubuntu x64 で 6 GB の RAM と 16 GB のスワップがあります。私は計算を2回開始し、約1時間の作業の後、システム(pythonではない)スワップエラーで2回終了しました。

この計算を自分のコンピューターで実行する方法はありますか? Pythonで行う必要はありません。

4

2 に答える 2

3

の計算以外に疑似逆数が必要ない場合は、wその行を次のように置き換えます。

w = np.linalg.lstsq(phi, y)[0]

私のシステムでは、約 2 倍高速に実行され、中間ストレージの約半分を使用します。

于 2013-05-09T22:43:05.450 に答える
0

どれどれ:

212,243 row values * 2500 col values * 8 bytes/value = 4,244,860,000 bytes = 4GB

これは、行列全体をメモリに保持するために必要なメモリの量です。

これが Java の場合は、JVM の最大ヒープを増やすことをお勧めします。Python の類推が何であるかはわかりません。

于 2013-05-09T20:09:12.177 に答える