SetInputValuesConvex(Var InputValues: Array; alfa: Double);
SetInputValuesConvex(Var InputValues: System.Array; alfa: double);
InputValues. Вещественный массив входных значений сети.
alfa. Коэффициент преобразования. Значение в диапазоне [0.0; 1.0].
Метод SetInputValuesConvex устанавливает входные значения сети с использованием выпуклого комбинаторного преобразования.
Выпуклое комбинаторное преобразование выполняется по формуле:
Vi = alfa(t) * Vi + (1-alfa(t)) * (1/sqrt(число_входов_сети))
Данный метод позволяет сделать процесс обучения самоорганизующихся карт Кохонена более точным. В начале обучения коэффициент alfa приблизительно равен нулю и все входные значения приблизительно равны. В дальнейшем значение коэффициента alfa стремится к единице и входные значения становятся более различными.
Последовательное выполнение методов NeuralNetwork.SetInputValues и INeuralNetwork.ApplyConvexCombinationFactor аналогично выполнению SetInputValuesConvex.
В качестве примера приведена функция, на вход которой подается нейронная сеть (параметр Net). Для выполнения примера добавьте ссылки на системные сборки «NN» и «MathFin».
Function m_SetInputValuesConvex(Net: NeuralNetwork): NeuralNetwork;
Var
InputCount, i: Integer;
InputVal: Array Of Double;
Begin
InputCount := Net.GetNumberOfInputs;
InputVal := New Double[InputCount];
For i := 0 To InputVal.Length - 1 Do
InputVal[i] := math.RandBetween(0.1, 1.0);
End For;
Net.SetInputValuesConvex(InputVal, 0.2);
Return Net;
End Function m_SetInputValuesConvex;
После выполнения примера входные значения сети будут заданы с использованием выпуклого комбинаторного преобразования.
В качестве примера приведена функция, на вход которой подается нейронная сеть (параметр Net).
Imports Prognoz.Platform.Interop.NN;
Imports Prognoz.Platform.Interop.MathFin;
…
Public Shared Function m_SetInputValuesConvex(Net: NeuralNetwork): NeuralNetwork;
Var
InputCount, i: Integer;
InputVal: System.Array;
ValGen: Prognoz.Platform.Interop.MathFin.Math;
Begin
InputCount := Net.GetNumberOfInputs();
InputVal := New Double[InputCount];
ValGen := New Prognoz.Platform.Interop.MathFin.Math.Create();
For i := 0 To InputVal.Length - 1 Do
InputVal[i] := ValGen.RandBetween(0.1, 1.0);
End For;
Net.SetInputValuesConvex(Var InputVal, 0.2);
Return Net;
End Function m_SetInputValuesConvex;
После выполнения примера входные значения сети будут заданы с использованием выпуклого комбинаторного преобразования.
См. также: