Что означает «сумма продукта», как указано в документации Numpy? - PullRequest
0 голосов
/ 11 октября 2018

В Справочном руководстве по NumPy v1.15 документация для numpy.dot использует концепцию "sum product".

А именно, мы читаем следующее:

  • Если a является массивом ND, а b является массивом 1-D, это сумма произведений по последней оси a и b.
  • Если a является массивом ND иb - это массив MD (где M> = 2), это сумма произведений по последней оси a и от второй к последней оси b:
    dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])

Каково определение для этого понятия "сумма продукта"?
(Например, не удалось найти такое определение в Википедии.)

1 Ответ

0 голосов
/ 11 октября 2018

https://en.wikipedia.org/wiki/Matrix_multiplication

That is, the entry c[i,j] of the product is obtained by multiplying 
term-by-term the entries of the ith row of A and the jth column of B, 
and summing these m products. In other words, c[i,j] is the dot product 
of the ith row of A and the jth column of B.

https://en.wikipedia.org/wiki/Dot_product

Algebraically, the dot product is the sum of the products of the 
corresponding entries of the two sequences of numbers.

На ранних уроках математики вы научились брать матричный продукт, проводя одним пальцем по строкам A и вниз по столбцам B, умножая пары чисел и суммируя их?Это движение является частью моей интуиции о том, как этот продукт берется.


В случае 1-го второго аргумента np.dot и np.matmul производят одно и то же, но описывают действие по-разному:

  • Если a является массивом ND, а b является массивом 1-D, это сумма произведений по последней оси a и b.

  • Если вторым аргументом является 1-D, он преобразуется в матрицу, добавляя 1 к его измерениям.После умножения матрицы добавленная 1 удаляется.

    В [103]: np.dot ([[1,2], [3,4]], [1,2]) Out [103]: массив([5, 11]) В [104]: np.matmul ([[1,2], [3,4]], [1,2]) Out [104]: массив ([5, 11])

Добавление размера к B, делает:

In [105]: np.matmul([[1,2],[3,4]], [[1],[2]])
Out[105]: 
array([[ 5],
       [11]])

Это последний (2,2) с (2,1) => (2,1)

Иногда яснее выразить действие в einsum терминах:

In [107]: np.einsum('ij,j->i', [[1,2],[3,4]], [1,2])
Out[107]: array([ 5, 11])

j, последняя ось обоих массивов - это сумма, которая суммируется.

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