¿Cómo calcular el producto externo de dos matrices A y B por filas más rápido en python (numpy)?

Digamos que tenemos dos matrices A y B.

A tiene la forma (r, k) y B tiene la forma (r, l).

Ahora quiero calcular el producto np.outer de estas dos matrices por filas. Después del producto externo, quiero sumar todos los valores en el eje 0. Entonces, mi matriz de resultados debe tener la forma (k, l).

Por ejemplo: la forma de A es (4, 2), de B es (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.]])

Me pregunto, ¿hay una solución mejor o más rápida? Porque cuando tengo p. dos matrices con más de 10.000 filas esto lleva algo de tiempo.

Solo usar la función np.outer no es la solución, porque np.outer (A, B) me dará una matriz con forma (8, 12) (esto no es lo que quiero).

Necesito esto para las redes neuronales de retropropagación.

Respuestas a la pregunta(1)

Su respuesta a la pregunta