2016-03-25 33 views
1

Çok büyük 2 dask dizisi X (35000 x 7500) ve Y (7500 x 10) nokta ürünleri yapmaya çalışıyorum. nokta ürün aynı zamanda çok büyük olacak gibi ben hdf5Python: dask diziliminin nokta çarpımı

f = h5py.File('output.hdf5') 
f['output'] = X.dot(Y) 

saklayarak am Fakat ikinci komut hatta neredeyse 1 saat olsa herhangi bir çıktı vermiyor. Yanlış olan ne? Daha hızlı teknik var mı? X ve Y oluştururken "parça" sorunu var mı?

cevap

1

.to_hdf5 yöntemini veya da.store işlevini göz önünde bulundurun.

>>> X.dot(Y).to_hdf5('output.hdf5', 'output') 

veya

>>> output = f.create_dataset('/output', X.dot(Y).shape, X.dot(Y).dtype) 
>>> da.store(X.dot(Y), output) 

to_hdf5 yöntem muhtemelen sizin için daha kolaydır. da.store yöntemi, diğer biçimlere de geneldir. [Buradan]

NumPy diziler kullanmak üzere kodlanmış ne f['output'] = ... derken kullandığınız H5Py (içinde __setitem__ fonksiyonu.

Here is the appropriate section in the documentation.

+0

Sir gördüm cevabınız (http://stackoverflow.com/questions/34434217/neden-is-nokta-ürün-in-dask-daha yavaş-in-numpy) Peki, benim için en iyi ne tür bir yığınlama olduğunu nasıl bilebilirim? – Kavan

+0

to_hdf5 yöntemi, veri kümenizi benzer dask.array öğesinin nasıl parçalandığını biliyorum: – MRocklin

+0

My X, float32 ve Y float96. Bana "TypeError: Desteklenmeyen float boyutu" gösteriyor. Herhangi bir ipucu? – Kavan