"New Neural" è un progetto di motore di rete neurale Open Source per la piattaforma MetaTrader 5. - pagina 73

 
yu-sha:

Il preprocessore serve proprio a questo scopo

Che tu abbia 2 o 100 neuroni, il file ha lo stesso aspetto.

Beh, nessuno ti impedisce di farlo graficamente - basta scrivere una GUI e usarla.

Beh, non tagliamo la spalla, mettiamola in chiaro. Non è detto che sia lo stesso per gli altri, ma per me il modo di caricare che ho esposto sopra è ovvio in termini di algoritmo di caricamento:

leggere una stringa, inizializzare 3 oggetti di tipo layer,

leggiamo la prima riga, poi chiamiamo l'oggetto primo strato, costruiamo lo strato tipo input, inizializziamo l'array di 2 neuroni.

leggere la seconda linea, poi chiamare il secondo oggetto di strato, costruire lo strato di tipo mlp, inizializzare l'array di 2 neuroni.

leggere la terza linea, poi chiamare l'oggetto secondo strato, costruire il tipo di strato mlp, inizializzare l'array di neuroni di 1.

Poiché il numero di strati è 3, finiamo la costruzione sulla terza linea e assegniamo le connessioni.

per farlo, passiamo attraverso la tabella e chiamiamo i neuroni richiesti, dicendo loro i collegamenti se la tabella contiene 1.

E come funzionerebbe l'algoritmo in xml?

ZS e il vantaggio principale è che, poiché la tabella delle connessioni è binaria, è perfettamente collegabile. La tabella per 8 neuroni sta in un ulong. È vero, più ci si addentra nel bosco e più i partigiani sono spessi in generale, la dimensione con un gran numero di neuroni è calcolata come

X=N*N/8

dove N è il numero di neuroni,

X è il numero di byte.

 

Svantaggi

  • La sintassi XML è ridondante.[8]
  • La dimensione di un documento XML è significativamente più grande di una rappresentazione binaria degli stessi dati. In stime approssimative il valore di questo fattore è preso come 1 ordine di grandezza (di un fattore 10).
  • La dimensione del documento XML è significativamente più grande di un documento in formati alternativi di trasferimento dati basati sul testo (ad esempioJSON[4],YAML,Protocol Buffers) e specialmente in formati di dati ottimizzati per un particolare caso d'uso.
  • La ridondanza di XML può influenzare l'efficienza di un'applicazione. Il costo di memorizzazione, elaborazione e trasferimento dei dati aumenta.
  • XML contiene metadati (sui nomi dei campi, sui nomi delle classi, sull'annidamento della struttura), e allo stesso tempo XML è posizionato come un linguaggio di comunicazione per sistemi aperti. Quando si trasferisce un gran numero di oggetti dello stesso tipo (la stessa struttura) tra sistemi, non ha senso trasferire ripetutamente i metadati, anche se sono contenuti in ogni istanza della descrizione XML.
  • Per un gran numero di compiti non avete bisogno di tutta la potenza della sintassi XML e potete usare soluzioni molto più semplici ed efficienti.

Mi scuso per il plagio.
 

Propongo XML come standard per memorizzare configurazioni, reti, impostazioni, ...

Ed è necessario solo nelle fasi di inizializzazione/stoccaggio

Nel processo del flusso di lavoro, e ancora di più nel processo di apprendimento, non si parla di XML

lei.umana:
Mi scuso per il plagio.

Sì, ma per qualche motivo mostri come Oracle, Microsoft, ... stringono i denti per spingere via i loro standard "binari" (di solito commerciali) e si rivolgono agli standard aperti

Sottrarre 10 MByte di XML non è un problema per i computer moderni

Un documento MS Word .docx di 100 MByte non è intimidatorio?

Se il problema è scaricare una rete da un file XML, allora addestrarlo su tale hardware è semplicemente irrealistico - i compiti sono incomparabili in complessità

 
yu-sha:

Propongo XML come standard per memorizzare configurazioni, reti, impostazioni, ...

Ed è necessario solo nelle fasi di inizializzazione/stoccaggio

Nel processo del flusso di lavoro e ancora di più nella fase di apprendimento, non si tratta di XML

Considerate questo: il vostro file in xml è di 916 byte e in rappresentazione binaria, 64 byte anche se non cliccate sull'intestazione.

7 variabili d'intestazione + 1 per tabella = 8 ulong * 8 byte = 64

 
Urain:

Guarda, il tuo file xml è di 916 byte, mentre la rappresentazione binaria è di 64 byte anche se non clicchi l'intestazione.

7 variabili d'intestazione + 1 per tabella = 8 ulong * 8 byte = 64


Per aprire questa pagina del forum, sto pompando attraverso Internet almeno cento kilobyte.

Siamo nel 2012 e non uso l'unità di misura come il byte da molto tempo ))

P.S.

Ho solo suggerito il mio modo - spetta al pubblico decidere

 
Yu-sha:

Propongo XML come standard per memorizzare configurazioni, reti, impostazioni, ...

Ed è necessario solo nelle fasi di inizializzazione/stoccaggio

Nel processo del flusso di lavoro, e ancora di più nel processo di formazione, non si tratta di XML.

Per ottimizzare la struttura della rete, è necessario (al volo) cambiare il numero di neuroni e di connessioni.

È possibile farlo?

Se non vi dispiace, per favore commentate i vostri codici, potrebbe volerci troppo tempo per capire il codice di qualcun altro senza commenti. Grazie.

 
her.human:

Per ottimizzare la struttura della rete è necessario (al volo) cambiare il numero di neuroni e di connessioni.

È possibile farlo?

Se non è difficile, per favore commentate i vostri codici, sapete, ci vuole troppo tempo per capire i codici degli altri senza commenti. Grazie.

Questo è un problema di formazione. Potenzialmente, è possibile, ma non l'ho usato in pratica.

Di solito, nel processo di apprendimento, la struttura della rete non cambia - solo i parametri adattivi vengono cambiati.

La tua definizione del problema è già un meta-livello, per addestrare un architetto a cambiare la struttura della rete, in modo che la rete risultante avrebbe più successo nell'apprendimento rispetto ad altri

Codici postati "così come sono" - fatti per me e, come al solito, in fretta, quindi scusatemi

In un buon modo, tutto ciò che c'è dovrebbe essere ricostruito dalle ossa dopo che l'intero progetto sarà elaborato

 
yu-sha:

Scarico almeno un centinaio di kilobyte per aprire questa pagina del forum.

Siamo nel 2012 e non uso l'unità di misura come il byte da molto tempo ))

P.S.

Ho solo offerto la mia versione - sta al pubblico decidere.

Facciamo un esperimento, create un caricatore xml per 1000 neuroni con 100 link per neurone, e postate la dimensione del file, la struttura che volete.

Posso calcolare in ginocchio quanto spazio ha la mia variante 1000*1000/8=~125KB, e la tua no, quindi non posso fare un confronto...

Se la vostra versione avrà dimensioni accettabili, perché no.

 
Urain:

Non il punto, la memoria, e sulla GPU sarà difficile implementare le torsioni della logica dell'oggetto, ho un'idea abbastanza buona di come implementare il NS, come una complessa interazione di oggetti all'interno dei quali ci sono funzioni di calcoli GPU (questo è circa il livello micro), ma non riesco a immaginare come questo complesso codice oggetto quei NS intero a scivolare la GPU come diversi FF con diversi set di pesi (livello macro) ??

La domanda è retorica, anche se se qualcuno la presenta, non mi dispiacerebbe sentirne parlare.

Ecco perché la scelta è stata fatta per CUDA piuttosto che per il più comune OpenCL

Il codice CUDA è orientato agli oggetti e si può passare bitwise un oggetto generato sulla CPU

Ci sono alcune sottigliezze ma possono essere tutte risolte

 
yu-sha:

Ecco perché CUDA è stato scelto rispetto al più comune OpenCL

Il codice in CUDA è orientato agli oggetti e si può passare bitwise l'oggetto formato sulla CPU

Ci sono sottigliezze, ma tutte possono essere risolte

Non sono un esperto in questo, ti credo, sarebbe bello.