Как оптимизировать вычисления 3d-массива с помощью numpy? - PullRequest
2 голосов
/ 04 июля 2019

У меня проблема регрессии с данными трехмерного массива. Размер массива (350, 350, 50), и мне нужно сделать процесс регрессии для каждого пикселя; например, выполните регрессию к каждому (1, 1, 50) массиву, затем это повторяется в 350 x 350 раз.

Я сделал свой код с помощью Numpy, и он выполняется в каждой процедуре.

row, col, depth = image_sequence.shape 

for i in range(0, row):
    for j in range(0, col):
        Ytrain = image_sequence[i, j, :]
        new_stack[i,j,:] = regression_process(Ytrain)

"строка" - это 350
'col' составляет 350

По моему выводу, время вычисления каждой последовательности занимает 5 секунд. Это означает, что, поскольку он должен быть рассчитан на 350x350 последовательностей, он будет завершен примерно через 7 дней.

Я хочу знать, как оптимизировать этот процесс и завершить его раньше.

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

1 Ответ

0 голосов
/ 04 июля 2019

Единственный способ - кодировать regression_process так, чтобы он принимал в качестве входных данных массивы (n, 50), где n - любое число.Я приведу простой пример, который просто вычисляет среднее значение.

def regression_process(image): length = image.shape[1] new_stack = np.sum(image, axis=1) return new_stack / length

new_stack = regression_process(image_sequence.reshape(row*col, depth)) new_stack.reshape(row, col, depth)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...