INeuralNetwork.LearnSOFM

Синтаксис Fore

LearnSOFM;

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

LearnSOFM();

Описание

Метод LearnSOFM выполняет обучение самоорганизующейся карты Кохонена.

Комментарии

В процессе обучения корректируются значения весов синапсов.

Краткий алгоритм обучения:

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

Пример Fore

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

Function m_Learn(Net: NeuralNetwork): NeuralNetwork;
Var
    epoch, learnRadius: Integer;
    learnRate: Double;
    NetFile: File;
    TextW: ITextWriter;
Begin
    TextW := NetFile.OpenTextWriter("C:/LearnRes.txt"True);
    For epoch := 1 To 300 Do
        learnRate := 0.6 * ((300 - epoch) / 300);
        learnRadius := (3 * ((300 - epoch) / 350)) As Integer;
        Net.SetLearnRadius(learnRadius);
        Net.SetLearnRate(learnRate);
        Net.SetUseVectorScalar(True);
        Net.PropagateSOFM;
        Net.LearnSOFM;
        TextW.WriteLnString("Эпоха обучения '" + epoch.ToString + "'. Код ошибки: " + Net.GetError.ToString);
    End For;
    Return Net;
End Function m_Learn;

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

Пример Fore.NET

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

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

Public Shared Function m_Learn(Net: NeuralNetwork): NeuralNetwork;
Var
    epoch, learnRadius: Integer;
    learnRate: Double;
    NetFile: StreamWriter;
Begin
    NetFile := File.CreateText("C:/LearnRes.txt");
    For epoch := 1 To 300 Do
        learnRate := 0.6 * ((300 - epoch) / 300);
        learnRadius := (3 * ((300 - epoch) / 350)) As Integer;
        Net.SetLearnRadius(learnRadius);
        Net.SetLearnRate(learnRate);
        Net.SetUseVectorScalar(True);
        Net.PropagateSOFM();
        Net.LearnSOFM();
        NetFile.WriteLine("Эпоха обучения '" + epoch.ToString() + "'. Код ошибки: " + Net.GetError().ToString());
    End For;
    NetFile.Close();
    Return Net;
End Function;

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

См. также:

INeuralNetwork