7

因数分解する大きな (~25000 x 1000) 行列があります。numpy に基づいて独自のコードを作成しましたが、効率が悪く、メモリ エラーが発生し続けます。

nimfa ( http://nimfa.biolab.si/ ) をインストールして使用しようとしましたが、インストール プロセス (easy_install、pip、および git のダウンロードと実行を試行) でエラーが表示されません。しかし、それを使用して呼び出そうとするとimport nimfa、以下のエラーが発生します。nimfa の前提条件を確認しましたが、numpy と scipy 以外には何も言及されていません。

私は Windows 8 を使用しており、numpy と scipy がインストールされた Python 2.7.5 を使用しています。また、minGWをインストール(およびその後アンインストール)してこれを実行しようとしました。

何か案は?

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import nimfa
  File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\__init__.py", line 18, in    <module>
    from mf_run import *
  File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\mf_run.py", line 26, in <module>
    from utils import *
  File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\utils\__init__.py", line 8, in <module>
    import linalg
  File "C:\Python27\lib\site-packages\nimfa-1.0-py2.7.egg\nimfa\utils\linalg.py", line 15, in <module>
    import scipy.sparse.linalg as sla
  File "C:\Python27\lib\site-packages\scipy\sparse\linalg\__init__.py", line 100, in <module>
    from .isolve import *
  File "C:\Python27\lib\site-packages\scipy\sparse\linalg\isolve\__init__.py", line 6, in <module>
    from .iterative import *
  File "C:\Python27\lib\site-packages\scipy\sparse\linalg\isolve\iterative.py", line 7, in <module>
    from . import _iterative
ImportError: DLL load failed: The specified module could not be found.`
4

1 に答える 1

0

使用するのではなく、行列を因数分解することが目的である場合は、代わりにnimfa使用することをお勧めしdaskます。Dask は、ディスクには収まるがメモリには収まらないデータ オブジェクトに対する操作を、最小限のコード変更で完了できるように設計されています。実際の例:

import dask.array as da
import numpy as np
import dask

mtx = da.from_array(np.random.normal(size=(25000, 1000)), chunks=(250, 20))

q, r = np.linalg.qr(mtx)

chunksコンピューティング リソースに合わせてパラメーターを調整する必要がある場合があります (それに関するアドバイスについては、 FAQを参照してください)。

于 2017-05-31T23:02:06.403 に答える