Copiare molte formule di grandi dimensioni (reti neurali) tra le tabelle dei dati è molto, molto lentoHo un set di dati di 10000 righe x 100+ colonne utilizzate per la modellazione di reti neurali. Ho realizzato 75 diversi modelli di 20 nodi x 100 input / nodo e ho salvato le formule usando formule veloci. Ho 10 tabelle diverse (stesso set di dati, diversa modellazione), ognuna con 75 modelli e desidero unire tutti i modelli (formule) in una tabella principale, poiché desidero applicare tutti i modelli a tutti i nuovi dati raccolti.
Ogni metodo che provo richiede un'eternità. Ho usato il componente aggiuntivo Copia formule per copiare le formule di ogni tabella in una singola tabella e ci vogliono circa 2 giorni in totale per completare tutte le fusioni di tabelle e senza alcuna indicazione di progresso, è difficile sapere se funziona ancora o ha congelato.
Ho usato Join abbinando le righe con sopprimere la valutazione della formula per metterle tutte in una tabella e questo è veloce. Tuttavia, quando riattivo la valutazione della formula selezionando manualmente le colonne formula e usando Colonne> Standardizza attributi> Proprietà colonna> Formula> Sopprimi Eval, il ricalcolo delle 750 formule richiede un'eternità. Funziona da 30 ore (massimo al 12% di utilizzo del processore) e non ho idea di quali siano i progressi.
Ho provato a scorrere le colonne una alla volta per attivare la valutazione della formula, ma anche farlo per 1 colonna ha richiesto oltre 5 minuti, il che sembra incredibilmente lungo.
C'è un modo per accelerare questo? So che ci sono soluzioni alternative, ma sembra che dovrebbe essere molto più semplice e veloce di così.
Ri: Copiare molte formule di grandi dimensioni (reti neurali) tra tabelle di dati è molto, molto lentoCon problemi "più grandi" è difficile offrire consigli generali sull'efficienza senza conoscere alcuni o tutti i dettagli. Se non lo hai già fatto, puoi esaminare l'impatto dei messaggi della tabella "Begin Data Update ()" e "End Data Update ()" e / o controllare il modo in cui le formule vengono valutate (o meno). FWIW, il mio istinto mi dice che potresti fare di meglio usando il Deposito di formula come intermediario. Ho iniziato a scrivere del codice per verificarlo, ma per problemi di queste dimensioni la modellazione stessa richiede del tempo, quindi non ho continuato su questo percorso:
NamesDefaultToHere(1);
// Define the data volume
nr = 100;
nc = 10;
// Make some random data
dt = AsTable(J(nr, nc, RandomNormal(0, 1)));
dt << setName("Random Data");
// Fit neural and publish prediction formula
cols = dt << getColumnNames("String");
yCol = cols[NItems(cols)];
RemoveFrom(cols, NItems(cols));
nn = dt << Neural(Y(Eval(yCol)), X(Eval(cols)), Fit( NTanH( 3 ) ), Invisible);
nn(Fit(1)) << publishPredictionFormula;
Report(nn) << closeWindow;
Ri: Copiare molte formule di grandi dimensioni (reti neurali) tra tabelle di dati è molto, molto lentoCiao Ian
Grazie per la rapida risposta. Ho appena provato il metodo Formula Depot con Aggiungi formula da colonna con tutte le formule e la creazione dello script è stata rapida. Quando ho testato Run Scripts (eseguendo 6 script) su una tabella duplicata con le colonne formula rimosse, è stato molto veloce. Fin qui tutto bene. Quando ho quindi provato a eseguire tutti gli script sulla stessa tabella, è iniziato rapidamente ma poi è stato progressivamente rallentato quando sono state create più colonne (ho potuto vedere le colonne create nel riquadro Colonne). Alla fine sembrò congelarsi (nessuna nuova colonna creata in 5 minuti). Hmmmm. Ora proverò a farlo in piccoli lotti per vedere se questo aiuta.
Ri: Copiare molte formule di grandi dimensioni (reti neurali) tra tabelle di dati è molto, molto lentoMi chiedo se le formule vengano tutte ricalcolate simultaneamente e siano in competizione per il tempo del processore.
Ri: Copiare molte formule di grandi dimensioni (reti neurali) tra tabelle di dati è molto, molto lentoHo provato a eseguire Run Script dal deposito di formule su 100 formule alla volta. I primi 100 sono andati abbastanza velocemente. Il secondo 100 rallentò fino a gattonare e sembrò fermarsi.
Ho provato a copiare gli script per tutte le formule da Formula Depot, includendo << Inizia l'aggiornamento dei dati ... << Fine aggiornamento dati.
Ho provato a eseguire Suppress Eval (0) su colonne di formule che sono state copiate con Suppress Eval (1). Ho ripetuto ciclicamente le colonne racchiuse in << Inizia aggiornamento dati .... Col (i) Sopprimi Eval (0) ...... Attendi (0) << Termina aggiornamento dati. Ho provato su 10 colonne. Non ha funzionato
Finora, nulla di ciò che ho provato ha funzionato più velocemente di unire manualmente le tabelle per riga con la valutazione della formula attivata e ci sono voluti giorni .....
PS C'è un modo per rompere uno script in esecuzione?