Я пытаюсь реализовать многослойные нейронные сети персептронов (MLP) с использованием EMGUCV 3.1 (точечная обертка для библиотеки OpenCV) в C#(форма Windows). Чтобы практиковаться с этой библиотекой, я решаю реализовать или операцию с использованием MLP. < /p>
Я создаю MLP, используя метод «Инициализировать» и изучать его, используя метод «поезда», как ниже: < /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);
}
где min_activation_function и max_activation_function равны -1,7159 и 1.7159 соответственно (в соответствии с документацией OpenCV). После 1000000 итераций (как вы видите в моем коде в условиях остановки) я проверяю свою сеть на предсказание, используя метод прогноза, как ниже: < /p>
private void Predict()
{
Matrix input = new Matrix(1, 2);
input[0, 0] = MIN_ACTIVATION_FUNCTION;
input[0, 1] = MIN_ACTIVATION_FUNCTION;
Matrix output = new Matrix(1, 1);
NETWORK.Predict(input, output);
MessageBox.Show(output[0, 0].ToString());
//////////////////////////////////////////////
input[0, 0] = MIN_ACTIVATION_FUNCTION;
input[0, 1] = MAX_ACTIVATION_FUNCTION;
NETWORK.Predict(input, output);
MessageBox.Show(output[0, 0].ToString());
//////////////////////////////////////////////
input[0, 0] = MAX_ACTIVATION_FUNCTION;
input[0, 1] = MIN_ACTIVATION_FUNCTION;
NETWORK.Predict(input, output);
MessageBox.Show(output[0, 0].ToString());
////////////////////////////////////////////////
input[0, 0] = MAX_ACTIVATION_FUNCTION;
input[0, 1] = MAX_ACTIVATION_FUNCTION;
NETWORK.Predict(input, output);
MessageBox.Show(output[0, 0].ToString());
}
< /code>
Вот образец того, что предсказывает сеть:
-0.00734469
-0.03184918
0.02080269
-0.006674092,020269
-0.006674092, /> Я ожидаю, что будет что-то вроде следующего:
-1.7
+1.7
+1.7
+1.7
Что не так среди моих кодов? Min_activation_function < /code> и max_activation_function < /code> Значения, но я все еще не получаю хороших результатов. < /P>
Обновление 1:
Я редактирую свои коды как первый ответ Me Refers Me (даже я тестирую свой код с идеей, ссылаемся в комментариях). Теперь я получаю NAN
Я пытаюсь реализовать многослойные нейронные сети персептронов (MLP) с использованием EMGUCV 3.1 (точечная обертка для библиотеки OpenCV) в C#(форма Windows). Чтобы практиковаться с этой библиотекой, я решаю реализовать или операцию с использованием MLP. < /p>
Я создаю MLP, используя метод «Инициализировать» и изучать его, используя метод «поезда», как ниже: < /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]
где min_activation_function и max_activation_function равны -1,7159 и 1.7159 соответственно (в соответствии с документацией OpenCV). После 1000000 итераций (как вы видите в моем коде в условиях остановки) я проверяю свою сеть на предсказание, используя метод прогноза, как ниже: < /p>
-0.006674092, /> Я ожидаю, что будет что-то вроде следующего:
-1.7
+1.7
+1.7
+1.7
Что не так среди моих кодов? Min_activation_function < /code> и max_activation_function < /code> Значения, но я все еще не получаю хороших результатов. < /P>
Обновление 1: Я редактирую свои коды как первый ответ Me Refers Me (даже я тестирую свой код с идеей, ссылаемся в комментариях). Теперь я получаю NAN [/code], когда вызов прогнозирует Метод.
У меня есть проблема с одним из моих просмотров таблиц в моем приложении, и удивляюсь, сталкивался ли кто -нибудь с чем -то подобным. У меня есть 2 метки в пользовательской TableViewCell - анкетл и answerlabel - которые имеют следующие ограничения:...
Поскольку фон был бы далеко, чтобы объяснить, я пишу Pseudocode,
меня заинтересован только в python-regex-pattern, я надеюсь, что один из вас может помочь мне
У меня есть текст ввода Folloing (множество строк с \ n , поскольку север-север, сжатый...
Я пытаюсь запустить проект, который нашел в руководстве (приложение Windows Forms , EmguCV). Я использую Microsoft Visual Studio 2022 и получил три зависимости от диспетчера пакетов NuGet: Emgu.CV, Emhu.CV.Bitmap, Emgu.CV.runtime.windows.cuda....