rete neurale Hopfield
-
06-09-2019 - |
Domanda
fai a sapere tutte le applicazioni accanto modello RICONOSC. worthe al fine di implementare Hopfield modello di rete neurale?
Soluzione
reti neurali ricorrenti (di cui Hopfield reti sono un tipo speciale) sono utilizzati per diverse attività di apprendimento sequenza:
- Previsione Sequenza (Mappa una storia di valori di borsa al valore atteso nel prossimo passo temporale)
- classificazione Sequence (Map ogni frammento di audio completo a un altoparlante)
- etichettatura Sequence (Visualizza la mappa di un frammento di audio alla frase pronunciata)
- rinforzo non markoviano di apprendimento (ad esempio le attività che richiedono una memoria profonda, come il punto di riferimento T-Maze)
Non sono sicuro di cosa si intende per "pattern recognition" esattamente, dal momento che in fondo è un tutto campo in cui ogni attività per le quali le reti neurali può essere utilizzato si adatta.
Altri suggerimenti
È possibile utilizzare la rete Hopfield per problemi di ottimizzazione pure.
È possibile checkout questo repository -> Hopfield Network
Ci si dispone di un esempio per il test un modello dopo addestrare la rete off-line. Questo è il test
@Test
public void HopfieldTest(){
double[] p1 = new double[]{1.0, -1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0};
double[] p2 = new double[]{1.0, 1.0,1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0};
double[] p3 = new double[]{1.0, 1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0};
ArrayList<double[]> patterns = new ArrayList<>();
patterns.add(p1);
patterns.add(p2);
Hopfield h = new Hopfield(9, new StepFunction());
h.train(patterns); //train and load the Weight matrix
double[] result = h.test(p3); //Test a pattern
System.out.println("\nConnections of Network: " + h.connections() + "\n"); //show Neural connections
System.out.println("Good recuperation capacity of samples: " + Hopfield.goodRecuperation(h.getWeights().length) + "\n");
System.out.println("Perfect recuperation capacity of samples: " + Hopfield.perfectRacuperation(h.getWeights().length) + "\n");
System.out.println("Energy: " + h.energy(result));
System.out.println("Weight Matrix");
Matrix.showMatrix(h.getWeights());
System.out.println("\nPattern result of test");
Matrix.showVector(result);
h.showAuxVector();
}
E dopo eseguire il test si può vedere
Running HopfieldTest
Connections of Network: 72
Good recuperation capacity of samples: 1
Perfect recuperation capacity of samples: 1
Energy: -32.0
Weight Matrix
0.0 0.0 2.0 -2.0 2.0 -2.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 -2.0 2.0 -2.0
2.0 0.0 0.0 -2.0 2.0 -2.0 0.0 0.0 0.0
-2.0 0.0 -2.0 0.0 -2.0 2.0 0.0 0.0 0.0
2.0 0.0 2.0 -2.0 0.0 -2.0 0.0 0.0 0.0
-2.0 0.0 -2.0 2.0 -2.0 0.0 0.0 0.0 0.0
0.0 -2.0 0.0 0.0 0.0 0.0 0.0 -2.0 2.0
0.0 2.0 0.0 0.0 0.0 0.0 -2.0 0.0 -2.0
0.0 -2.0 0.0 0.0 0.0 0.0 2.0 -2.0 0.0
Pattern result of test
1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0
-------------------------
The auxiliar vector is empty
Spero che questo può aiutare a