Domanda

Per il mio progetto universitario sto creando una rete neurale in grado di classificare la probabilità che una transazione con carta di credito è fraudolento o meno. Mi sto allenando con backpropagation. Sto scrivendo questo in Java. Vorrei applicare il multithreading, perché il mio computer è un i7 quad-core. Esso mi bug per trascorrere ore di formazione e vedere la maggior parte dei miei core inattivi.

Ma come potrei applicare il multithreading per backpropagation? Backprop funziona regolando gli errori a ritroso attraverso la rete. Uno strato deve essere fatto prima l'altro può continuare. C'è un modo che io possa modificare il mio programma per fare da sfondo multicore?

È stato utile?

Soluzione

Prima di tutto non utilizzare backpropagation. Ci sono molte altre opzioni là fuori. Vorrei suggerire RPROP cercando (propagazione resiliente). Non sarà così grande di modifica al vostro algoritmo backpropagation. Non è necessario specificare tasso di apprendimento o di moto. La sua davvero quasi come se si dispone di un individuo, variabile, tasso di apprendimento per ogni connessione della rete neurale.

Per quanto riguarda l'applicazione di multithreading per backpropagation. Ho appena scritto un articolo su questo argomento.

http://www.heatonresearch.com/encog/mprop/compare.html

Fondamentalmente creare un numero di fili e dividere i dati di addestramento in modo che ogni filo ha un numero uguale vicino. Sono calcolando i gradienti di ciascun filo e vengono sommati in un passo ridurre. Come i gradienti vengono applicate ai pesi dipende l'algoritmo di formazione di propagazione utilizzati, ma l'aggiornamento di peso è fatto in una sezione critica.

Quando si hanno molti più campioni di training di pesi il codice passa molto più tempo nel calcolo multi-threaded gradiente rispetto all'aggiornamento peso sezione critica.

fornisco alcuni dei risultati di performance al link qui sopra. E 'davvero accelerare le cose!

Altri suggerimenti

Per usare più core CPU con Java si può solo provare più opzioni per la JVM senza modificare il codice:

  • -server
  • -d64
  • -XX: -UseParallelGC

e altre opzioni a http://java.sun.com/javase /technologies/hotspot/vmoptions.jsp

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top