Я пытаюсь оценить dask, преобразовывая метод из thunder (используя Spark) в эквивалентную версию numpy, но я не уверен, как писать это с использованием dask/distribution ,Преобразование функции корреляционного коэффициента из NumPy в Dask
В громом, я могу взять пачку изображений, конвертировать его в серию, и коррелируют с некоторым сигналом:
imgs = thunder.images.fromrandom((10, 900, 900))
series = imgs.toseries()
signal = series[5, 5, :]
correlated = series.correlate(signal)
NumPy версия выглядит следующим образом:
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)
Я m ищет некоторые советы о том, как преобразовать это во что-то для распространения в частности.
Да, спасибо, сейчас это легче увидеть! Тем не менее, я получаю 'MemoryError', когда я вызываю' result.compute() ', работающий в поточном режиме. Я попытаюсь воспроизвести это в другой коробке, чтобы убедиться. – Mark
Я бы не удивился ошибкам памяти в случае 'da.corrcoef' (трудно выполнить эту операцию с малой памятью). Я бы не ожидал ошибки памяти во втором случае. Если вы хотите пролистывать диск, вы можете попробовать распределенный планировщик: http://dask.pydata.org/en/latest/scheduler-choice.html – MRocklin
Я думаю, что у меня ошибка из памяти, потому что единственный способ, которым я мог бы понять, как это сделать на 900. Ваш пример изменил размеры ... Мне нужно начать с набора из 10 изображений, которые являются 900x900, а затем перевернуться в временные ряды размера (900, 900, 10). Для этого я начал «imgs» с 'chunks = 900', поэтому моя' reshaped' закончила с 'chunksize = (810000, 10)'. Мне нужно будет только коррелировать с сигналом, последним блоком, который у вас есть выше, но я не могу определить правильный размер блока. – Mark