#numpy #broadcast
Вопрос:
Какова форма результата, равного 10 для этого уравнения numpy: np.random.randn(10,5) @ np.random.randn(5). Спасибо вам, ребята.
Ответ №1:
Согласно странице документации для numpy.matmul
:
Если второй аргумент равен 1-D, он преобразуется в матрицу путем добавления 1 к ее измерениям. После умножения матрицы добавленный 1 удаляется.
Это означает, что после добавления дополнительного измерения ко второму операнду операция выполняется между двумя 2D массивами (10, 5)
и (5, 1)
. Матричное умножение выполняется (i, j) @ (j, k) = (i, k)
в соответствии с правилом, поэтому вывод формируется (10, 1)
, а затем удаляется дополнительное добавленное измерение: (10,)
.
Комментарии:
1. широковещательная передача не применяется к последним 2 измерениям этих массивов. Это (10,5) с (5,1), дающим (10,1) сжатие до (10,)