Wie kann ich sicherstellen, dass Konvergenz in diesem neuronalen Netzwerk immer auftritt?C++

Programme in C++. Entwicklerforum
Guest
 Wie kann ich sicherstellen, dass Konvergenz in diesem neuronalen Netzwerk immer auftritt?

Post by Guest »

Ich habe ein Netzwerk mit zwei Eingängen, zwei versteckten Knoten in einer einzelnen Schicht und einem Ausgangsknoten. https://i.sstatic.net/lvefs.png " /> < /p>

Ich versuche XOR -Problem zu lösen: < /p>

Code: Select all

| i0 | i1 | desired output |
----------------------------
| 0  | 0  |        0       |
| 1  | 0  |        1       |
| 0  | 1  |        1       |
| 1  | 1  |        0       |
< /code>

Mit meinem aktuellen Code leite ich alle 4 oben genannten Datensätze in einer einzelnen Epoche aus. Ich wiederhole dann die Epoche 20.000 Mal. Ich berechnet den Fehler nach jedem Datensatz, nicht nach jeder Epoche und streife den Fehler gleichzeitig zurück. Verstehe, ich möchte ein Ergebnis zwischen 0 
und 1 . In anderen Fällen nicht. >
Ich habe versucht, zwischen 0 und 1 sowie zwischen -1 und 1 mit einer einheitlichen Verteilung nach dem Zufallsprinzip zu generieren. Ich habe versucht, die Xavier -Initialisierung als einheitliche und normale Verteilung zu verwenden. Keines davon scheint zu verhindern, dass das Netzwerk nicht konvergiert. Ich habe verschiedene Kombinationen der Aktivierungsfunktion und Gewichtserzeugung ausprobiert.#include
#include
#include
#include
#include
#include
#include
#include

typedef float DataType;
typedef DataType (*ActivationFuncPtr)(const DataType&);

const DataType learningRate = std::sqrt(2.f);
const DataType momentum = 0.25f;
const std::size_t numberEpochs = 20000;

DataType sigmoid(const DataType& x)
{
return DataType(1) / (DataType(1) + std::exp(-x));
}

DataType sigmoid_derivative(const DataType& x)
{
return x * (DataType(1) - x);
}

DataType relu(const DataType& x)
{
return x

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post