Wenn mit Dask Arrays arbeiten, ist es normalerweise am besten Funktionen in dask.array
zu nutzen. Das Problem bei der direkten Verwendung von NumPy-Funktionen besteht darin, dass sie die Daten aus dem Dask Array in den Speicher ziehen, was die Ursache für das Einfrieren der Shell sein könnte. Die Funktionen, die in dask.array
zur Verfügung gestellt werden, sollen dies vermeiden, indem Sie Berechnungen so lange verketten, bis Sie sie auswerten möchten. In diesem Fall wäre es besser, da.exp
anstelle von np.exp
zu verwenden. Hier ein Beispiel dafür.
Haben Sie eine modifizierte Version Ihres Codes bereitgestellt, um zu demonstrieren, wie dies geschehen würde. Im Beispiel habe ich .compute()
aufgerufen, die auch das volle Ergebnis in den Speicher zieht. Es ist möglich, dass dies auch Probleme für Sie verursachen kann, wenn Ihre Daten sehr groß sind. Daher habe ich demonstriert, dass ich vor dem Aufruf von compute ein kleines Stück der Daten nehme, um das Ergebnis klein und speicherfreundlich zu halten. Wenn Ihre Daten groß sind und Sie das volle Ergebnis behalten möchten, empfehlen wir stattdessen, sie auf der Festplatte zu speichern.
Hoffe, das hilft.
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 ]])