INeuralNetwork.LearnBack

Синтаксис Fore

LearnBack(Var InputValues: Array; Var outputValues: Array);

Синтаксис Fore.NET

LearnBack(Var InputValues: System.Array; Var outputValues: System.Array);

Параметры

InputValues. Вещественный массив входных значений.

outputValues. Вещественный массив опорных выходных значений.

Описание

Метод LearnBack выполняет итерацию по обучению сети обратного распространения.

Комментарии

Одна итерация называется эпохой обучения. Краткий алгоритм:

Итерации продолжаются заданное число раз или до достижения заданной точности сети, т.е. пока delta не станет достаточна мала.

Пример Fore

В качестве примера приведена функция, выполняющая обучение сети. На вход функции подается сеть обратного распространения: параметр 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.0001Then
                Return Net;
            End If
        End For;
    End For;
    Return Net;
End Function m_BPTrain;

После выполнения примера сеть будет обучена по заданным параметрам. Меняющиеся выходные данные и значение delta будут выведены в файл «C:/BPTrain.txt».

Пример Fore.NET

В качестве примера приведена функция, выполняющая обучение сети. На вход функции подается сеть обратного распространения: параметр 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.0001Then
                NetFile.Close();
                Return Net;
            End If
        End For;
    End For;
    NetFile.Close();
    Return Net;
End Function;

После выполнения примера сеть будет обучена по заданным параметрам. Меняющиеся выходные данные и значение delta будут выведены в файл «C:/BPTrain.txt».

См. также:

INeuralNetwork