Como calcular o produto externo de duas matrizes A e B por linhas mais rapidamente em python (numpy)?

Digamos que temos duas matrizes A e B.

A tem a forma (r, k) e B tem a forma (r, l).

Agora, quero calcular o produto np.outer dessas duas matrizes por linha. Depois do produto externo, quero somar todos os valores no eixo 0. Portanto, minha matriz de resultados deve ter a forma (k, l).

Por exemplo: A forma de A é (4, 2), de B é (4, 3).

import numpy as np

A = np.array([[0, 7], [4, 1], [0, 2], [0, 5]])
B = np.array([[9, 7, 7], [6, 7, 5], [2, 7, 9], [6, 9, 7]])

# This is the first outer product for the first values of A and B
print(np.outer(A[0], B[0])) # This will give me 

# First possibility is to use list comprehension and then
sum1 = np.sum((np.outer(x, y) for x, y in zip(A, B)), axis=0)

# Second possibility would be to use the reduce function
sum2 = reduce(lambda sum, (x, y): sum+np.outer(x, y), zip(A, B), np.zeros((A.shape[1], B.shape[1])))

# result for sum1 or sum2 looks like this:
# array([[ 175.,  156.,  133.], [ 133.,  131.,  137.]])

Estou me perguntando, existe uma solução melhor ou mais rápida? Porque quando eu tenho ex. duas matrizes com mais de 10.000 linhas, isso leva algum tempo.

Somente o uso da função np.outer não é a solução, porque np.outer (A, B) fornecerá uma matriz com a forma (8, 12) (não é isso que eu quero).

Precisa disso para retropropagação de redes neurais.

questionAnswers(1)

yourAnswerToTheQuestion