Dask Diziler ile çalışan, bu dask.array
sağlanan işlevleri kullanmak normalde en iyisidir. NumPy işlevlerini doğrudan kullanmayla ilgili sorun, Dask Array öğesindeki verileri belleğe çekecek ve bu da yaşadığınız kabuğun donmasına neden olabilir. dask.array
'da verilen işlevler, bunları değerlendirmek istediğiniz sürece, hesaplamaları hızlı bir şekilde zincirleme ile önleyecek şekilde tasarlanmıştır. Bu durumda, np.exp
yerine da.exp
kullanmak daha iyi olurdu. Bunun bir örneği aşağıda verilmiştir. Bunun nasıl yapılacağını göstermek için kodunuzun değiştirilmiş bir sürümünü sağladınız. Örnekte .compute()
'u aradım, bu da tam sonucu belleğe çekiyor. Verileriniz çok büyükse bunun sizin için sorunlara yol açması olasıdır. Bu nedenle, sonucu küçük ve bellek dostu tutmak için bilgi çağırmadan önce verilerin küçük bir bölümünü aldığımı gösterdim. Verileriniz büyükse ve tam sonucu tutmak istiyorsanız, bunun yerine diske kaydetmenizi öneririz.
Bu yardımcı olur umarım.
In [1]: import dask.array as da
In [2]: def sigmoid(z):
...: return 1/(1 + da.exp(-z))
...:
In [3]: d = da.random.uniform(-6, 6, (100, 110), chunks=(10, 11))
In [4]: ds = sigmoid(d)
In [5]: ds[:5, :6].compute()
Out[5]:
array([[ 0.0067856 , 0.31701817, 0.43301395, 0.23188129, 0.01530903,
0.34420555],
[ 0.24473798, 0.99594466, 0.9942868 , 0.9947099 , 0.98266004,
0.99717379],
[ 0.92617922, 0.17548207, 0.98363658, 0.01764361, 0.74843615,
0.04628735],
[ 0.99155315, 0.99447542, 0.99483032, 0.00380505, 0.0435369 ,
0.01208241],
[ 0.99640952, 0.99703901, 0.69332886, 0.97541982, 0.05356214,
0.1869447 ]])