2013-07-24 30 views
7

Faktörlenecek büyük (~ 25000 x 1000) bir matrisim var. Kendi kodumu numpy'ye göre yazdım, ancak verimsiz ve bir bellek hatası oluşturmaya devam ediyor.Nimfa yükleme sorunları (Python Matrix Factorization library)

Nimfa'yı (http://nimfa.biolab.si/) yüklemeye ve kullanmaya çalışıyorum ve yükleme işlemi (easy_install, pip denedim ve indirip çalıştırarak çalıştı) herhangi bir hata göstermiyor. Ama ben import nimfa kullanarak aramaya çalıştığımda aşağıdaki hatayı alıyorum. Nimfa'nın önkoşullarını kontrol ettim ve numpy ve scipy dışında bir şeyden bahsetmiyor.

Windows 8'de yaşıyorum ve Python 2.7.5'i numpy ve scipy yüklü olarak kullanıyorum. Ayrıca minGW'yi yüklemeyi (ve daha sonra kaldırmayı) ve bunu yapmayı denedim.

Herhangi bir fikrin var mı?

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.` 
+2

Python yorumlayıcısındaki "import scipy.sparse.linalg" ifadesinin aynı hatayı verdiğini kontrol ettiniz mi? – silvado

cevap

0

amacınız matris çarpanlarına ziyade bunu yapmak için nimfa kullanmaktır, bunun yerine dask kullanarak öneririm. Dask, diske sığmayan, ancak kodda en az değişiklikle bellekte olmayan veri nesneleri üzerindeki işlemleri tamamlamayı mümkün kılmak için tasarlanmıştır. Bir çalışma örneği:

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) 

Bilgi işlem kaynaklarını (bu konuda tavsiye için FAQs bakınız) uyacak şekilde ayarlamak için chunks parametreyi gerekebilir.