6

Gli oggetti NeuralDataSet che ho visto in azione non sono stati nient'altro che XOR che è solo due piccoli array di dati ... Non sono stato in grado di capire niente dalla documentazione su .Encog - Come caricare i dati di allenamento per la rete neurale

Sembra che tutto debba essere caricato in una volta. Tuttavia, vorrei passare attraverso i dati di allenamento fino a raggiungere EOF e poi contare che come 1 epoca .. Tuttavia, tutto ciò che ho visto tutti i dati devono essere caricati in 1 array 2D dall'inizio. Come posso aggirare questo?

I've read this question, and the answers didn't really help me. E oltre a questo, non ho trovato una domanda simile posta qui.

+0

Per curiosità: perché vuoi trasmettere i dati, è una domanda di memoria/volume? –

+1

@ElmarWeber perché i dati sono abbastanza grandi, e ancora più importante, ho già un'implementazione con un'altra rete neurale. L'implementazione backpropagates un singolo input alla volta e sto solo eseguendo il ciclo attraverso l'intero file di input e chiamando mlp.backprop (nextInput) per ogni elemento scansionato. – jonbon

risposta

2

Ciò è possibile, è possibile utilizzare un'implementazione esistente di un set di dati che supporta l'operazione di streaming o è possibile implementare la propria sopra qualsiasi altra fonte. Controlla the BasicMLDataSet interface e il codice SQLNeuralDataSet come esempio. Dovrai implementare un codec se hai un formato specifico. Per CSV c'è già un'implementazione, ma non ho controllato se è basata sulla memoria.

Ricordarsi di fare in modo che i dati vengano trasmessi in streaming per ogni epoca e dalla mia esperienza si tratti di un collo di bottiglia molto più alto rispetto al calcolo effettivo della rete.

+1

Fondamentalmente, i dati con cui sto formando la rete provengono dal Brown Corpus. Non è come gli esempi con un semplice XOR in cui posso codificarlo. Attualmente, ho i file di Brown Corpus in cui ogni parola e tag sono separati da spazi. La rete che stavo usando non stava caricando l'intero corpus in memoria, ma caricando la frase per frase e l'allenamento (backpropagating) una parola alla volta. Ha senso? Sto solo cercando di utilizzare un'altra rete perché penso che potrebbe esserci un bug nella rete che sto usando al momento. – jonbon

+0

Non sono sicuro se ho capito bene, ma il modo in cui lo descrivete, significherebbe che il modo in cui SQLNeuralDataSet è implementato funzionerebbe, giusto? Codifica i valori di input e output per parola, esegui il backprop, ottieni quello successivo, ecc. Se vuoi davvero andare riga per riga e non lavorare in batch come fa l'implementazione predefinita, basta impostare la dimensione del batch su uno. Alla fine si hanno due parti di codice: Dati Corpus su MLData per un singolo elemento di input e output e qualcosa che alimenta questa riga per riga. –

+1

Ok, il fatto che io stia usando un file di testo e non SQL non mi ha nemmeno preso in considerazione SQLNeuralDataSet, grazie, lo esaminerò! – jonbon

Problemi correlati