J'essaie d'évaluer dask en convertissant une méthode de thunder (en utilisant Spark), à la version numpy équivalente, mais je ne suis pas sûr comment écrire cela en utilisant dask/distributed .Conversion d'une fonction de coefficient de corrélation de NumPy à Dask
le tonnerre, je peux prendre une pile d'images, le convertir en une série, et en corrélation contre certains signaux:
imgs = thunder.images.fromrandom((10, 900, 900))
series = imgs.toseries()
signal = series[5, 5, :]
correlated = series.correlate(signal)
La version numpy ressemble à ceci:
series = numpy.random.rand(900, 900, 10)
signal = series[5, 5, :]
reshaped = series.reshape(900 * 900, 10)
correlated = numpy.asarray(
map(lambda x: numpy.corrcoef(x, signal)[0, 1], reshaped))
)
final = correlated.reshape(900, 900)
Je Je cherche quelques conseils sur la façon de le convertir en quelque chose pour distribué en particulier.
Oui, merci, c'est plus facile de voir ça maintenant! Cependant, j'obtiens un 'MemoryError' quand j'appelle' result.compute() ', s'exécutant en mode threadé. Je vais essayer de reproduire cela sur une autre boîte juste pour être sûr. – Mark
Je ne serais pas surpris par une erreur de mémoire dans le cas 'da.corrcoef' (il est difficile de faire cette opération avec peu de mémoire). Je ne m'attendrais pas à une erreur de mémoire dans le second cas. Si vous voulez renverser sur le disque, vous pouvez essayer le planificateur distribué: http://dask.pydata.org/en/latest/scheduler-choice.html – MRocklin
Je pense que je reçois une erreur de mémoire parce que la seule façon pourrait trouver comment chunk il était de 900. Votre exemple a inversé les dimensions ... Je dois commencer avec un ensemble de 10 images qui sont 900x900 et ensuite basculer dans une série chronologique de taille (900, 900, 10). Pour ce faire, j'ai lancé 'imgs' avec' chunks = 900', donc mon 'remodelé' a fini par avoir' chunksize = (810000, 10) '. Je n'aurais besoin que de corréler avec le signal, le dernier bloc que vous avez ci-dessus, mais je ne peux pas déterminer la taille de bloc correcte. – Mark