Ich erhalte einen Fehler mit Repmat. Meine Matlab Version ist 2017a. "Das angeforderte Array 3711450x2726 (75,4 GB) überschreitet die maximale Array-Größe ..." Zuerst ein Kontext.Netzwerkbildung und große Arrays in Matlab Optimierung
Ich habe eine Adjazenz-Matrix von sozialen Netzwerkdaten nennen es D. D ist 2725x2725 mit 1s bezeichnet eine Verbindung zwischen Agenten i und j und 0s sonst. Ich habe eine Funktion und Unterfunktionen für ein Netzwerkbildungsmodell bereitgestellt. Es gibt K Regressoren (x Variablen). Das Modell erfordert die Bildung einer dyadenspezifischen Regressormatrix W, die W = 0,5 N (N - 1) x K ist. In meinen Daten ist dies 3711450 x K. Zunächst wähle ich nur eine x Variable, also K = 1.
In der Hauptfunktion gibt es zwei Schritte. Der erste Schritt berechnet das gemeinsame MLE aus einem Logit. Ich habe ein Problem in der zweiten Schritt Berechnung der Varianz Kovarianz Matrix mit Array-Größe. Innerhalb dieses Schritts gibt es eine Berechnung, die eine 3711450 x n (2725) -Matrix unter Verwendung von repmat erzeugt.
INFO = ((repmat((exp_Xbeta ./ (1+exp_Xbeta).^2),1,K) .* X)'*X);
exp_Xbeta ist 3.711.450 x K und X eine sparse 3.711.450 x 2725 Matrix mit Bytes = 178.171.416 der Klasse Doppel. Der Fehler tritt bei INFO auf.
Ich habe versucht, X in eine hohe Matrix zu konvertieren, aber bisher keine Freude. Ich habe versucht, spärlich zur INFO-Zeile hinzuzufügen, aber wieder keine Freude. Hat jemand irgendwelche Ideen, kurz zu einem Cluster zu gehen oder mehr RAM zu bekommen? Könnte ich irgendwie X von einer dünn besetzten Matrix in eine vollständige Matrix innerhalb eines Datenspeichers konvertieren und dann den Datenspeicher aufrufen, indem ich groß benutze? Ich bin nicht in der Lage, herauszufinden, wie das geht, wenn es möglich ist.
Sobald INFO als Array aufgebaut ist, wird es später in einer der Unterfunktionen verwendet. Also muss es aufrufbar sein. Falls Sie neugierig sind, ist INFO die Matrix der zweiten Ableitung.