INeuralNetwork.SetLearnRateEx

Синтаксис Fore

SetLearnRateEx(newLearnRate: Double; layerIndex: Integer): Double;

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

SetLearnRateEx(newLearnRate: double; layerIndex: integer): double;

Параметры

newLearnRate. Значение коэффициента обучения.

layerIndex. Индекс слоя.

Описание

Метод SetLearnRateEx устанавливает коэффициент обучения для указанного слоя.

Комментарии

SetLearnRateEx возвращает значение предыдущего коэффициента обучения и применяется только для самоорганизующихся карт Кохонена.

Коэффициент обучения определяет: насколько быстро нейроны обучаются. Обычно, к концу обучения данный коэффициент стремится к нулю.

Индексация слоев сквозная и начинается с нуля.

Пример Fore

В качестве примера приведена функция, на вход которой подается самоорганизующаяся карта Кохонена (параметр Net). Для выполнения примера добавьте ссылки на системные сборки «NN», «IO».

Function m_LearnEx(Net: NeuralNetwork): NeuralNetwork;
Var
    epoch, learnRadius, layerCount, i: Integer;
    learnRate: Double;
    NetFile: File;
    TextW: ITextWriter;
Begin
    TextW := NetFile.OpenTextWriter("C:/LearnRes.txt"True);
    layerCount := Net.GetNumberOfLayers;
    For epoch := 1 To 100 Do
        TextW.WriteLnString("Эпоха обучения '" + epoch.ToString + "'");
        learnRate := 0.6 * ((300 - epoch) / 300);
        learnRadius := (3 * ((300 - epoch) / 350)) As Integer;
        For i := 0 To layerCount - 1 Do
            TextW.WriteLnString("  Слой '" + i.ToString + "'");
            TextW.WriteLnString("    текущий шаг обучения '" + Net.GetLearnRadius(i).ToString + "'");
            TextW.WriteLnString("    новый шаг обучения '" + learnRadius.ToString + "'");
            Net.SetLearnRadiusEx(learnRadius, i);
            TextW.WriteLnString("    текущий коэффициент обучения '" + Net.GetLearnRate(i).ToString + "'");
            TextW.WriteLnString("    новый коэффициент обучения '" + learnRate.ToString + "'");
            Net.SetLearnRateEx(learnRate, i);
            If Not Net.GetUseVectorScalar(i) Then
                Net.SetUseVectorScalarEx(True, i);
            End If;
        End For;
        Net.PropagateSOFM;
        Net.LearnSOFM;
        TextW.WriteLnString("  Код ошибки: " + Net.GetError.ToString);
    End For;
    Return Net;
End Function m_LearnEx;

После выполнения примера будет выполнено обучение сети. Для вычисления дистанции между нейронами будет использоваться алгоритм скалярного умножения векторов. Подробности и результаты обучения будут выведены в файл «C:/LearnRes.txt».

Пример Fore.NET

В качестве примера приведена функция, на вход которой подается нейронная сеть (параметр Net).

Imports System.IO;
Imports Prognoz.Platform.Interop.NN;

Public Shared Function m_LearnEx(Net: NeuralNetwork): NeuralNetwork;
Var
    epoch, learnRadius, layerCount, i: Integer;
    learnRate: Double;
    NetFile: StreamWriter;
Begin
    NetFile := File.CreateText("C:/LearnRes.txt");
    layerCount := Net.GetNumberOfLayers();
    For epoch := 1 To 100 Do
        NetFile.WriteLine("Эпоха обучения '" + epoch.ToString() + "'");
        learnRate := 0.6 * ((300 - epoch) / 300);
        learnRadius := (3 * ((300 - epoch) / 350)) As Integer;
        For i := 0 To layerCount - 1 Do
            NetFile.WriteLine("  Слой '" + i.ToString() + "'");
            NetFile.WriteLine("    текущий шаг обучения '" + Net.GetLearnRadius(i).ToString() + "'");
            NetFile.WriteLine("    новый шаг обучения '" + learnRadius.ToString() + "'");
            Net.SetLearnRadiusEx(learnRadius, i);
            NetFile.WriteLine("    текущий коэффициент обучения '" + Net.GetLearnRate(i).ToString() + "'");
            NetFile.WriteLine("    новый коэффициент обучения '" + learnRate.ToString() + "'");
            Net.SetLearnRateEx(learnRate, i);
            If Not Net.GetUseVectorScalar(i) Then
                Net.SetUseVectorScalarEx(True, i);
            End If;
        End For;
        Net.PropagateSOFM();
        Net.LearnSOFM();
        NetFile.WriteLine("  Код ошибки: " + Net.GetError().ToString());
    End For;
    NetFile.Close();
    Return Net;
End Function;

После выполнения примера будет выполнено обучение сети. Для вычисления дистанции между нейронами будет использоваться алгоритм скалярного умножения векторов. Подробности и результаты обучения будут выведены в файл «C:/LearnRes.txt».

См. также:

INeuralNetwork