Я пытаюсь умножить субматрицу на субвектор.Кажется, что такое умножение должно быть быстрее, чем умножение всей матрицы на весь вектор, но измерения времени говорят об обратном:
B = np.random.randn(26200, 2000)
h = np.random.randn(2000)
%time z = B @ h
CPU times: user 56 ms, sys: 4 ms, total: 60 ms
Wall time: 29.4 ms
%time z = B[:, :256] @ h[:256]
CPU times: user 44 ms, sys: 28 ms, total: 72 ms
Wall time: 54.5 ms
Результаты с% timeit:
%timeit z = B @ h
100 loops, best of 3: 18.8 ms per loop
%timeit z = B[:, :256] @ h[:256]
10 loops, best of 3: 38.2 ms per loop
Запуск этогоеще раз:
%timeit z = B @ h
10 loops, best of 3: 18.7 ms per loop
%timeit z = B[:, :256] @ h[:256]
10 loops, best of 3: 36.8 ms per loop
Может быть, есть какой-нибудь эффективный способ сделать это с помощью numpy, или мне может понадобиться использовать, например, tenserflow, чтобы сделать это нарезание эффективным?