Als Teil eines Projekts, an dem ich gerade arbeite, muss ich den mittleren quadratischen Fehler zwischen 2m
Vektoren berechnen.Speicherfehler bei der Matrixmultiplikation
Im Grunde habe ich zwei Matrizen x
und xhat
sind beide Größe m
von n
und die Vektoren mich interessiert sind die Reihen dieser Vektoren.
ich die MSE mit diesem Code
def cost(x, xhat): #mean squared error between x the data and xhat the output of the machine
return (1.0/(2 * m)) * np.trace(np.dot(x-xhat,(x-xhat).T))
Es funktioniert korrekt zu berechnen, ist diese Formel korrekt. Das Problem ist, dass in meinem speziellen Fall meine m
und n
sehr groß sind. speziell, m = 60000
und n = 785
. Wenn ich also meinen Code starte und diese Funktion eingibt, erhalte ich einen Speicherfehler.
Gibt es eine bessere Möglichkeit, den MSE zu berechnen? Ich würde lieber Schleifen vermeiden und mich stark auf die Matrixmultiplikation konzentrieren, aber Matrixmultiplikation scheint hier extrem verschwenderisch. Vielleicht etwas in der Anzahl, die mir nicht bewusst ist?
können Sie versuchen, die Möglichkeiten, hier vorgeschlagen: http: // Stackoverflow. com/questions/16774849/mean-squared-Fehler-in-numpy – jerry
dotting zwei Arrays und dann nur mit der Spur ist unmöglich verschwenderisch – Julius