Эта пустая операция выдает ошибку памяти.(Здесь 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))
Можете ли вы помочь мне понять, почему мое решение неэффективно с точки зрения памяти?