LearnBack(Var InputValues: Array; Var outputValues: Array);
LearnBack(Var InputValues: System.Array; Var outputValues: System.Array);
InputValues. Вещественный массив входных значений.
outputValues. Вещественный массив опорных выходных значений.
Метод LearnBack выполняет итерацию по обучению сети обратного распространения.
Одна итерация называется эпохой обучения. Краткий алгоритм:
используя текущие значения весов синапсов, рассчитываются выходные значения;
рассчитанные выходные значения сравниваются с опорными выходными значениями. Определяется значение ошибки;
используя значение ошибки, вычисляется значение delta, применяемое для коррекции весов синапсов. См. INeuralNetwork.DeltasMinimumReachedBP и INeuralNetwork.GetMaximumWeightDelta;
производится коррекция весов синапсов.
Итерации продолжаются заданное число раз или до достижения заданной точности сети, т.е. пока delta не станет достаточна мала.
В качестве примера приведена функция, выполняющая обучение сети. На вход функции подается сеть обратного распространения: параметр Net. Для выполнения примера добавьте ссылки на системные сборки «NN», «IO».
Function m_BPTrain(Net: NeuralNetwork): NeuralNetwork;
Var
epoch, sampleNumber, i: Integer;
NumberOfOut, NumberOfInp: Integer;
inputs, outputs: Array Of Double;
NetFile: File;
TextW: ITextWriter;
Begin
NetFile := New File.Create;
TextW := NetFile.OpenTextWriter("C:/BPTrain.txt", True);
NumberOfOut := Net.GetNumberOfOutputs;
outputs := New Double[NumberOfOut];
NumberOfInp := Net.GetNumberOfInputs;
inputs := New Double[NumberOfInp];
For epoch := 1 To 3000 Do
For sampleNumber := 1 To NumberOfOut Do
// устанавливаем входные значения
For i := 0 To NumberOfInp - 1 Do
inputs[i] := 0.5;
End For;
// устанавливаем выходные значения
For i := 0 To NumberOfOut - 1 Do
outputs[i] := 0.5;
End For;
// задаем параметры обучения
Net.SetNju(0.1);
Net.SetMju(0);
// обучаем сеть
Net.LearnBack(inputs, outputs);
TextW.WriteLnString("Эпоха обучения: '" + epoch.ToString + "'");
TextW.WriteLnString(" максимальное значение delta: " + net.GetMaximumWeightDelta.ToString);
TextW.WriteLnString(" выходные данные: ");
outputs := Net.GetOutputValues;
For i := 0 To NumberOfOut - 1 Do
TextW.WriteLnString(" " + outputs[i].ToString);
End For;
// проверяем, обучилась ли сеть
If Net.DeltasMinimumReachedBP(0.0001) Then
Return Net;
End If
End For;
End For;
Return Net;
End Function m_BPTrain;
После выполнения примера сеть будет обучена по заданным параметрам. Меняющиеся выходные данные и значение delta будут выведены в файл «C:/BPTrain.txt».
В качестве примера приведена функция, выполняющая обучение сети. На вход функции подается сеть обратного распространения: параметр Net.
Imports System.IO;
Imports Prognoz.Platform.Interop.NN;
…
Public Shared Function m_BPTrain(Net: NeuralNetwork): NeuralNetwork;
Var
epoch, sampleNumber, i: Integer;
NumberOfOut, NumberOfInp: Integer;
inputs, outputs: System.Array;
NetFile: StreamWriter;
Begin
NetFile := File.CreateText("C:/BPTrain.txt");
NumberOfOut := Net.GetNumberOfOutputs();
outputs := New Double[NumberOfOut];
NumberOfInp := Net.GetNumberOfInputs();
inputs := New Double[NumberOfInp];
For epoch := 1 To 3000 Do
For sampleNumber := 1 To NumberOfOut Do
// устанавливаем входные значения
For i := 0 To NumberOfInp - 1 Do
inputs[i] := 0.5;
End For;
// устанавливаем выходные значения
For i := 0 To NumberOfOut - 1 Do
outputs[i] := 0.5;
End For;
// задаем параметры обучения
Net.SetNju(0.1);
Net.SetMju(0);
// обучаем сеть
Net.LearnBack(Var inputs, Var outputs);
NetFile.WriteLine("Эпоха обучения: '" + epoch.ToString() + "'");
NetFile.WriteLine(" максимальное значение delta: " + net.GetMaximumWeightDelta().ToString());
NetFile.WriteLine(" выходные данные: ");
outputs := Net.GetOutputValues();
For i := 0 To NumberOfOut - 1 Do
NetFile.WriteLine(" " + outputs[i].ToString());
End For;
// проверяем, обучилась ли сеть
If Net.DeltasMinimumReachedBP(0.0001) Then
NetFile.Close();
Return Net;
End If
End For;
End For;
NetFile.Close();
Return Net;
End Function;
После выполнения примера сеть будет обучена по заданным параметрам. Меняющиеся выходные данные и значение delta будут выведены в файл «C:/BPTrain.txt».
См. также: