Как мне оптимизировать эту операцию с массивами? - PullRequest
0 голосов
/ 08 мая 2019

Эта пустая операция выдает ошибку памяти.(Здесь X и Y - двумерные массивы с формой (5000, 3072) и (500, 3072))

dists[:,:] = np.sqrt(np.sum(np.square(np.subtract(X, Y[:,np.newaxis])), axis=2))

Я думаю, что широковещательное вещание массива занимает много памяти.Есть ли способ оптимизировать использование памяти для этих операций массива?

Редактировать:
(Это проблема в назначении 1 из cs231n).Я нашел другое решение, которое дает то же самое без ошибки памяти:

dists[:,:] = np.sqrt((Y**2).sum(axis=1)[:, np.newaxis] + (X**2).sum(axis=1) - 2 * Y.dot(X.T))

Можете ли вы помочь мне понять, почему мое решение неэффективно с точки зрения памяти?

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