Wie kann man die Effizienz meiner Python -Funktion mit spärlichen Matrizen verbessern?Python

Python-Programme
Guest
 Wie kann man die Effizienz meiner Python -Funktion mit spärlichen Matrizen verbessern?

Post by Guest »

Ich möchte eine bestimmte Funktion in Python mit spärlichen Matrizen implementieren und sie so schnell wie möglich machen. Ich beschreibe ausführlich, was das Problem ist und wie ich es bisher implementiert habe. (durchschnittliche Sparsität, d. H. Anzahl der Einträge ohne Null über alle Einträge, beträgt 0,0001 ). Für gegebene Vektoren a und b (von Größe 1000 ) möchte ich c [j] = a^t b [j] b für jedes j = 0 berechnen. .., 999 und die Ausgabe sollte der numpy array c .
Meine Implementierung bisher: i Kann alle Matrizen vorkomputieren und ich habe beschlossen, sie als scipy.sparse Matrizen im CSR_MATRIX -Format (ich habe gelesen, dass dies das beste Format ist, wenn ich nur Matrixvektorprodukte berechnen möchte) in einem Tupel < /Code>. Um meine gewünschte Funktion zu berechnen, mache ich < /p>

Code: Select all

def func(a: np.ndarray, b: np.ndarray, sparse_matrices: Tuple[csr_matrix]) -> np.ndarray:
"""
a and b are np.arrays of length N
sparse_matrices is precomputed tuple of csr_matrices
"""
return np.array([a.dot(sparse_matrices[k].dot(b.transpose())) for k in range(len(sparse_matrices))])
Frage: Ist dies das effizienteste, was es erhalten kann, oder sehen Sie den Raum für Verbesserungen in Bezug auf Geschwindigkeit, z. Ändern Sie die Struktur, wie ich die Matrizen sichere oder wie ich alle Vektor-Matrix-Vektor-Produkte berechne? Sehen Sie auch das Potenzial für eine Parallelisierung dieser Berechnung? Wenn ja, haben Sie einen Vorschlag, welche Bibliotheken/Funktionen ich mir ansehen sollte?
Danke im Voraus!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post