random.multivariate_normal в массиве dask? - PullRequest
       9

random.multivariate_normal в массиве dask?

0 голосов
/ 14 сентября 2018

Я изо всех сил пытался найти способ получить этот калькулятор, который работает для рабочего процесса dask.

У меня есть код, который использует функцию np.random.mulivariate_normal, и хотя многие из этих типов доступны для нас в массиве dask, похоже, это не так. Оооо .... Я попытался создать свой собственный на основе примера, приведенного в документации DASK .

Вот моя попытка, которая дает ошибки, которые мне трудно понять. Я также предоставил случайные входные переменные, чтобы их было легко скопировать:

import numpy as np
from dask.distributed import Client
import dask.array as da

def mvn(mu, sigma, n, blocksize):
    chunks = ((blocksize,) * (n // blocksize),
              (blocksize,) * (n // blocksize))

    name = 'mvn'   # unique identifier

    dsk = {(name, i, j): (np.random.multivariate_normal(mu,sigma, blocksize))
                         if i == j else
                         (np.zeros, (blocksize, blocksize))
             for i in range(n // blocksize)
             for j in range(n // blocksize)}

    dtype = np.random.multivariate_normal(0).dtype  # take dtype default from numpy

    return da.Array(dsk, name, chunks, dtype)

n = 10000
A = da.random.normal(0, 1, size=(n,n), chunks=(1000, 1000))
sigma = da.dot(A,A.transpose())
mu = 4.0*da.ones(n, chunks = 1000)
R =  da.numpy.random.mvn(mu, sigma, n, chunks=(100))

Есть какие-нибудь предложения или я так далеко от цели, что мне следует отказаться от всякой надежды? Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

Этот ответ может быть конкретизирован, но я полагаю, вам было бы легче использовать dask's delayed, da.from_delayed и da.*stack.

Я вижу одну непосредственную проблему с тем, что у вас есть: с np.random.multivariate_normal(mu,sigma, blocksize) вы напрямую вызываете функцию, а не создаете спецификацию. Вы, вероятно, хотели (np.random.multivariate_normal, mu,sigma, blocksize). Это показывает, что работать с необработанными словарями может быть сложно!

...