Как вычислить скалярное произведение n тензоров на n векторов с помощью numpy

Я хочу вычислить произведение N тензоров с N векторами. Я уверен, что есть простой способ сделать это, но мне не удалось придумать его. по сути, у меня есть тензоры ndarray формы (N, k, k) и векторы ndarray формы (N, K), и я хочу вычислить массив A формы (N, k) s.t A[i] = tensors[i].dot(vecotrs[i].reshape(-1, 1))

В моем конкретном случае k = 3, но я не думаю, что это имеет значение.

Есть ли простой способ сделать это с помощью numpy?


person Yohai Magan    schedule 27.01.2020    source источник
comment
Предполагается ли, что выход k соответствует первому или второму k первого входа?   -  person norok2    schedule 27.01.2020


Ответы (1)


Как насчет использования np.einsum():

np.einsum('ijk,il->ij', a, b)

or:

np.einsum('ijk,il->ik', a, b)

в зависимости от того, какой индекс вы на самом деле имели в виду, чтобы вычислить сумму (сейчас это неоднозначно).

person norok2    schedule 27.01.2020