Ich versuche, neuronale Netzwerke (Multi-Layer Perceptrons) mithilfe von EMGUCV 3.1 (einem DOT-Net-Wrapper für die OpenCV-Bibliothek) in C#(Windows-Formular) implementieren. Um mit dieser Bibliothek zu üben, beschließe ich, mit MLP zu implementieren oder zu operieren. < /p>
Ich erstelle MLP mit "Initialize" -Methode und lerne sie mit der "Zug" -Methode wie unten: < /p>
private void Initialize()
{
NETWORK.SetActivationFunction(
ANN_MLP.AnnMlpActivationFunction.SigmoidSym);
NETWORK.SetTrainMethod(ANN_MLP.AnnMlpTrainMethod.Backprop);
Matrix layers = new Matrix(new Size(4, 1));
layers[0, 0] = 2;
layers[0, 1] = 2;
layers[0, 2] = 2;
layers[0, 3] = 1;
NETWORK.SetLayerSizes(layers);
}
private void Train()
{
// providing data for input
Matrix input = new Matrix(4, 2);
input[0, 0] = MIN_ACTIVATION_FUNCTION; input[0, 1] = MIN_ACTIVATION_FUNCTION;
input[1, 0] = MIN_ACTIVATION_FUNCTION; input[1, 1] = MAX_ACTIVATION_FUNCTION;
input[2, 0] = MAX_ACTIVATION_FUNCTION; input[2, 1] = MIN_ACTIVATION_FUNCTION;
input[3, 0] = MAX_ACTIVATION_FUNCTION; input[3, 1] = MAX_ACTIVATION_FUNCTION;
//providing data for output
Matrix output = new Matrix(4, 1);
output[0, 0] = MIN_ACTIVATION_FUNCTION;
output[1, 0] = MAX_ACTIVATION_FUNCTION;
output[2, 0] = MAX_ACTIVATION_FUNCTION;
output[3, 0] = MAX_ACTIVATION_FUNCTION;
// mixing input and output for training
TrainData mixedData = new TrainData(
input,
Emgu.CV.ML.MlEnum.DataLayoutType.RowSample,
output);
// stop condition = 1 million iterations
NETWORK.TermCriteria = new MCvTermCriteria(1000000);
// training
NETWORK.Train(mixedData);
}
wobei min_activation_function und max_activation_function gleich -1.7159 bzw. 1.7159 sind (gemäß OpenCV -Dokumentation). Nach 1000000 Iterationen von (wie Sie in meinem Code in Stoppbedingung sehen) teste ich mein Netzwerk auf die Vorhersage mithilfe der Vorhersagemethode wie unten: < /p>
Ich versuche, neuronale Netzwerke (Multi-Layer Perceptrons) mithilfe von EMGUCV 3.1 (einem DOT-Net-Wrapper für die OpenCV-Bibliothek) in C#(Windows-Formular) implementieren. Um mit dieser Bibliothek zu üben, beschließe ich, mit MLP zu implementieren oder zu operieren. < /p>
Ich erstelle MLP mit "Initialize" -Methode und lerne sie mit der "Zug" -Methode wie unten: < /p>
//providing data for output Matrix output = new Matrix(4, 1); output[0, 0] = MIN_ACTIVATION_FUNCTION; output[1, 0] = MAX_ACTIVATION_FUNCTION; output[2, 0] = MAX_ACTIVATION_FUNCTION; output[3, 0] = MAX_ACTIVATION_FUNCTION;
// mixing input and output for training TrainData mixedData = new TrainData( input, Emgu.CV.ML.MlEnum.DataLayoutType.RowSample, output);
// stop condition = 1 million iterations NETWORK.TermCriteria = new MCvTermCriteria(1000000);
// training NETWORK.Train(mixedData); } [/code]
wobei min_activation_function und max_activation_function gleich -1.7159 bzw. 1.7159 sind (gemäß OpenCV -Dokumentation). Nach 1000000 Iterationen von (wie Sie in meinem Code in Stoppbedingung sehen) teste ich mein Netzwerk auf die Vorhersage mithilfe der Vorhersagemethode wie unten: < /p>
Hier ist ein Beispiel dessen, was das Netzwerk vorhersagt:
-0.00734469
-0.03184918
0.02080269
Ich erwarte so etwas wie folgt:
-1.7
+1.7
+1.7
1.7
Was ist falsch unter meinen Codes? Min_activation_function < /code> und max_activation_function < /code> Werte, aber ich mache immer noch keine guten Ergebnisse. Jetzt erhalte ich Nan [/code], wenn Anruf Methode vorhersagt.
Ich möchte Kamera -Frames mit EMGU.cv in .NET MAUI erfassen, und ich habe die Runtime für Maui Android. Ich kann auf die Kamera zugreifen, aber ich konnte das Feed nicht auf MAT -Objekt übertragen....