SetLearnRateEx(newLearnRate: Double; layerIndex: Integer): Double;
SetLearnRateEx(newLearnRate: double; layerIndex: integer): double;
newLearnRate. Значение коэффициента обучения.
layerIndex. Индекс слоя.
Метод SetLearnRateEx устанавливает коэффициент обучения для указанного слоя.
SetLearnRateEx возвращает значение предыдущего коэффициента обучения и применяется только для самоорганизующихся карт Кохонена.
Коэффициент обучения определяет: насколько быстро нейроны обучаются. Обычно, к концу обучения данный коэффициент стремится к нулю.
Индексация слоев сквозная и начинается с нуля.
В качестве примера приведена функция, на вход которой подается самоорганизующаяся карта Кохонена (параметр 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».
В качестве примера приведена функция, на вход которой подается нейронная сеть (параметр 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».
См. также: