Szukam szybkiego sposobu obliczania sumy n produktów zewnętrznych.Python - szybki sposób na zsumowanie produktów zewnętrznych?
Zasadniczo zacznę macierzach uzyskanych z rozkładu normalnego - jest n wektorów z przeciwko elementów:
A = np.random.normal(size = (n, v))
B = np.random.normal(size = (n, v))
Co I jak jest obliczenie zewnętrzne produkty każdego wektora wielkości vw i B i podsumować je razem.
Uwaga: A * B.T
nie działa - A ma rozmiar n x v, a B ma rozmiar v x n.
Najlepsze, co mogę zrobić, to stworzyć pętlę, w której konstruowane są produkty zewnętrzne, a następnie podsumowywane później. I mieć tak:
outers = np.array([A[i] * B[i].T])
Stwarza n X V X V tablicy (pętla jest na liście pojmowania, który jest następnie przekształcany w tablicy), które następnie można podsumować razem za pomocą np.sum(outers, axis = 0)
. Jest to jednak dość powolne i zastanawiałem się, czy istnieje wektoryzowana funkcja, której mogę użyć, aby przyspieszyć ten proces.
Jeśli ktokolwiek ma jakieś rady, byłbym bardzo wdzięczny!
einsum działa pięknie. Dzięki! – Adam