本文整理汇总了C#中Encog.Neural.Networks.Training.Propagation.Resilient.ResilientPropagation.FinishTraining方法的典型用法代码示例。如果您正苦于以下问题:C# ResilientPropagation.FinishTraining方法的具体用法?C# ResilientPropagation.FinishTraining怎么用?C# ResilientPropagation.FinishTraining使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Encog.Neural.Networks.Training.Propagation.Resilient.ResilientPropagation
的用法示例。
在下文中一共展示了ResilientPropagation.FinishTraining方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
static void Main(string[] args)
{
var network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 2));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 3));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
network.Structure.FinalizeStructure();
network.Reset();
var trainingSet = new BasicMLDataSet(XORInput, XORIdeal);
var train = new ResilientPropagation(network, trainingSet);
var epoch = 1;
do
{
train.Iteration();
} while (train.Error > 0.01);
train.FinishTraining();
foreach (var pair in trainingSet)
{
var output = network.Compute(pair.Input);
Console.WriteLine(pair.Input[0] + @", " + pair.Input[1] + @" , actual=" + output[0] + @", ideal=" + pair.Ideal[0]);
}
EncogFramework.Instance.Shutdown();
Console.ReadLine();
}
示例2: Main
static void Main(string[] args)
{
//create a neural network withtout using a factory
var network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 2));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 2));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
network.Structure.FinalizeStructure();
network.Reset();
IMLDataSet trainingSet = new BasicMLDataSet(XORInput, XORIdeal);
IMLTrain train = new ResilientPropagation(network, trainingSet);
int epoch = 1;
do
{
train.Iteration();
Console.WriteLine($"Epoch #{epoch} Error: {train.Error}");
epoch++;
} while (train.Error > 0.01);
train.FinishTraining();
Console.WriteLine("Neural Network Results:");
foreach (IMLDataPair iPair in trainingSet)
{
IMLData output = network.Compute(iPair.Input);
Console.WriteLine($"{iPair.Input[0]}, {iPair.Input[0]}, actual={output[0]}, ideal={iPair.Ideal[0]}");
}
EncogFramework.Instance.Shutdown();
Console.ReadKey();
}
示例3: Main
private static void Main(string[] args)
{
// create a neural network, without using a factory
var network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 2));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 3));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
network.Structure.FinalizeStructure();
network.Reset();
// create training data
IMLDataSet trainingSet = new BasicMLDataSet(XORInput, XORIdeal);
// train the neural network
IMLTrain train = new ResilientPropagation(network, trainingSet);
int epoch = 1;
do
{
train.Iteration();
Console.WriteLine(@"Epoch #" + epoch + @" Error:" + train.Error);
epoch++;
} while (train.Error > 0.01);
train.FinishTraining();
// test the neural network
Console.WriteLine(@"Neural Network Results:");
foreach (IMLDataPair pair in trainingSet)
{
IMLData output = network.Compute(pair.Input);
Console.WriteLine(pair.Input[0] + @"," + pair.Input[1]
+ @", actual=" + output[0] + @",ideal=" + pair.Ideal[0]);
}
EncogFramework.Instance.Shutdown();
}
示例4: Train
void Train()
{
if (Memory.Count>0)
{
network.Reset();
double[][] InputData = new double[Memory.Count][]; //подготовка данных для обучения сети
double[][] SenseData = new double[Memory.Count][];
for (int i = 0; i < Memory.Count; i++)
{
InputData[i] = Memory[i];
SenseData[i] = MemorySense[i];
}
IMLDataSet trainingSet = new BasicMLDataSet(InputData, SenseData);
IMLTrain train = new ResilientPropagation(network, trainingSet);
int epoch = 1;
double old = 9999;
double d = 999;
do
{
train.Iteration();
//Console.SetCursorPosition(0, 0); //вывод информации о текущем состоянии обучения
//Console.Write(@"Epoch #" + epoch + @" Error:" + train.Error);
epoch++;
d = Math.Abs(old - train.Error);
old = train.Error;
} while (train.Error > 0.0001 && epoch < 3000 && d > 0.00001);
train.FinishTraining();
//double sumd=0.0; //подсчет суммарной ошибки после обучения
//foreach (IMLDataPair pair in trainingSet)
//{
// IMLData output = network.Compute(pair.Input);
// sumd = sumd + Math.Abs(pair.Ideal[0] - output[0]);
// sumd = sumd / trainingSet.InputSize;
//}
}
}
示例5: Train
public int Train(DataSet dataSet)
{
Network = new BasicNetwork();
Network.AddLayer(new BasicLayer(null, true, 8 * 21));
var first = ((8 * 21 + 4) * FirstLayerParameter);
Network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, (int)first));
var second = ((8 * 21 + 4) * SecondLayerParameter);
Network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, (int)second));
Network.AddLayer(new BasicLayer(null, false, 1));
// Network.AddLayer(new );
Network.Structure.FinalizeStructure();
Network.Reset();
//IMLData x = new BasicNeuralData();
var set = new double[dataSet.Signatures.Count + dataSet.Forgeries.Count][];
var ideal = new double[dataSet.Signatures.Count + dataSet.Forgeries.Count][];
for (int i = 0; i < dataSet.Signatures.Count; i++)
{
set[i] = dataSet.Signatures[i].Data.Cast<double>().ToArray();
ideal[i] = new double[] {1};
}
for (int i = dataSet.Signatures.Count; i < dataSet.Signatures.Count + dataSet.Forgeries.Count; i++)
{
set[i] = dataSet.Forgeries[i- dataSet.Signatures.Count].Data.Cast<double>().ToArray();
ideal[i] = new double[] { 0 };
}
IMLDataSet trainingSet = new BasicMLDataSet(set, ideal);
IMLTrain train = new ResilientPropagation(Network, trainingSet);
int epoch = 1;
var errors = new List<double>();
do
{
train.Iteration();
// Console.WriteLine(@"Epoch #" + epoch + @" Error:" + train.Error);
epoch++;
errors.Add(train.Error);
} while ( epoch < 10000);
train.FinishTraining();
return 1;
}
示例6: Learn
public List<double[]> Learn(double[][] data, double[][] ideal)
{
double[][] origData = (double[][])data.Clone();
int n = data.Length;
int m = data[0].Length;
double[][] output = new double[n][];
double[][] sgmNeighbours = new double[n][];
for (var i = 0; i < n; i++)
{
double[] sgmN = new double[SegmentationData.SEGMENT_NEIGHBOURS];
Array.Copy(data[i], m - SegmentationData.SEGMENT_NEIGHBOURS, sgmN, 0, SegmentationData.SEGMENT_NEIGHBOURS);
sgmNeighbours[i] = sgmN;
data[i] = data[i].Take(m - SegmentationData.SEGMENT_NEIGHBOURS).ToArray();
output[i] = new double[m - SegmentationData.SEGMENT_NEIGHBOURS];
data[i].CopyTo(output[i], 0);
}
IMLDataSet trainingSet = new BasicMLDataSet(data, output);
int inputLayerSize = layersConfiguration[0] - SegmentationData.SEGMENT_NEIGHBOURS;
int trainingLayerSize = layersConfiguration[1];
BasicNetwork oneLayerAutoencoder = new BasicNetwork();
oneLayerAutoencoder.AddLayer(new BasicLayer(null, BIAS, inputLayerSize));
oneLayerAutoencoder.AddLayer(new BasicLayer(CurrentActivationFunction(), BIAS, trainingLayerSize));
oneLayerAutoencoder.AddLayer(new BasicLayer(CurrentActivationFunction(), false, inputLayerSize));
oneLayerAutoencoder.Structure.FinalizeStructure();
oneLayerAutoencoder.Reset();
IMLTrain train = new ResilientPropagation(oneLayerAutoencoder, trainingSet);
//IMLTrain train = new Backpropagation(oneLayerAutoencoder, trainingSet, LEARNING_RATE, MOMENTUM);
int epoch = 1;
List<double[]> errors = new List<double[]>();
double[] trainError = new double[AUTOENCODER_MAX_ITER];
do
{
train.Iteration();
ActiveForm.Text = @"Epoch #" + epoch + @" Error:" + train.Error;
Console.WriteLine(@"Epoch #" + epoch + @" Error:" + train.Error);
trainError[epoch - 1] = train.Error;
epoch++;
//errors.Add(train.Error);
} while (train.Error > EPS && epoch < AUTOENCODER_MAX_ITER);
errors.Add(trainError);
train.FinishTraining();
BasicNetwork encoder = new BasicNetwork();
encoder.AddLayer(new BasicLayer(null, BIAS, oneLayerAutoencoder.GetLayerNeuronCount(0)));
encoder.AddLayer(new BasicLayer(CurrentActivationFunction(), false, oneLayerAutoencoder.GetLayerNeuronCount(1)));
encoder.Structure.FinalizeStructure();
encoder.Reset();
//przypisanie wag do encodera
for (int i = 0; i < encoder.LayerCount - 1; i++)
for (int f = 0; f < encoder.GetLayerNeuronCount(i); f++)
for (int t = 0; t < encoder.GetLayerNeuronCount(i + 1); t++)
encoder.SetWeight(i, f, t, oneLayerAutoencoder.GetWeight(i, f, t));
//Compare2Networks(oneLayerAutoencoder, encoder);
for(int l=1; l<layersConfiguration.Count -2; l++)
{
inputLayerSize = layersConfiguration[l];
trainingLayerSize = layersConfiguration[l+1];
oneLayerAutoencoder = new BasicNetwork();
oneLayerAutoencoder.AddLayer(new BasicLayer(null, BIAS, inputLayerSize));
oneLayerAutoencoder.AddLayer(new BasicLayer(CurrentActivationFunction(), BIAS, trainingLayerSize));
oneLayerAutoencoder.AddLayer(new BasicLayer(CurrentActivationFunction(), false, inputLayerSize));
oneLayerAutoencoder.Structure.FinalizeStructure();
oneLayerAutoencoder.Reset();
//liczenie outputu z dotychczasowego encodera
double[][] input = new double[n][];
double[][] newOutput = new double[n][];
for(int ni = 0; ni <n; ni++)
{
IMLData res = encoder.Compute(new BasicMLData(data[ni]));
double[] resD = new double[res.Count];
for(int i=0; i<res.Count; i++)
resD[i] = res[i];
input[ni] = resD;
newOutput[ni] = new double[res.Count];
input[ni].CopyTo(newOutput[ni], 0);
}
BasicMLDataSet newTrainingSet = new BasicMLDataSet(input, newOutput);
train = new ResilientPropagation(oneLayerAutoencoder, newTrainingSet);
//train = new Backpropagation(oneLayerAutoencoder, newTrainingSet, LEARNING_RATE, MOMENTUM);
epoch = 1;
trainError = new double[AUTOENCODER_MAX_ITER];
do
{
train.Iteration();
ActiveForm.Text = @"Epoch #" + epoch + @" Error:" + train.Error;
Console.WriteLine(@"Epoch #" + epoch + @" Error:" + train.Error);
trainError[epoch - 1] = train.Error;
epoch++;
} while (train.Error > EPS && epoch < AUTOENCODER_MAX_ITER);
//.........这里部分代码省略.........
示例7: Main
static void Main(string[] args)
{
double[][] input = CsvReader.ConvertCsvToTwoDimDoubleArrary(@"X.csv");
double[][] idealTemp = CsvReader.ConvertCsvToTwoDimDoubleArrary(@"Y.csv");
double[][] ideal = convertIdealArrary(idealTemp, 10);
var network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 400));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 25));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 10));
network.Structure.FinalizeStructure();
network.Reset();
IMLDataSet trainingSet = new BasicMLDataSet(input, ideal);
//IMLTrain train = new Backpropagation(network, trainingSet);
IMLTrain train = new ResilientPropagation(network, trainingSet);
/*
int epoch = 1;
do
{
train.Iteration();
if (epoch % 10 == 0)
{
Console.WriteLine(@"Epoch# " + epoch + @" Error: " + train.Error);
}
epoch++;
}
while (train.Error > 0.01);
*/
for (int epoch = 1; epoch < 1000; epoch++)
{
train.Iteration();
if (epoch % 10 == 0)
{
Console.WriteLine(@"Epoch# " + epoch + @" Error: " + train.Error);
}
}
train.FinishTraining();
Console.WriteLine("Training Completed");
Console.WriteLine(@"Neural network results:");
double successCount = 0;
double totalCount = 0;
foreach (IMLDataPair pair in trainingSet)
{
totalCount++;
IMLData output = network.Compute(pair.Input);
double max1 = -99;
int index1 = -1;
for (int i = 0; i < output.Count; i++)
{
if (output[i] > max1)
{
max1 = output[i];
index1 = i;
}
}
double max2 = -99;
int index2 = -2;
for (int i = 0; i < pair.Ideal.Count; i++)
{
if (pair.Ideal[i] > max2)
{
max2 = pair.Ideal[i];
index2 = i;
}
}
if (index1 == index2)
{
successCount++;
}
}
double rate = successCount / totalCount;
Console.WriteLine(rate);
EncogFramework.Instance.Shutdown();
Console.ReadLine();
}
示例8: TrainNet
public static void TrainNet()
{
var tmp = new np4load(@"..\..\..\NeuralNetworks\Cardiology\инфаркт_миокарда.np4");
TrainLogger tLog = TrainLogger.GetTrainLogger();
Dictionary<string, object> dLog = new Dictionary<string, object>();
var stopParam = tmp.GetTrainingStopParams();
int iterCount = 2500;//13943;
dLog.Add("event", "init");
dLog.Add("NeuralNetName", "инфаркт_миокарда.np4");
dLog.Add("Path", @"..\..\..\NeuralNetworks\Cardiology\инфаркт_миокарда.np4");
dLog.Add("Анкета", "Кардиология");
dLog.Add("IterationCount", iterCount);
dLog.Add("Time", DateTime.Now);
BasicMLDataSet tData = (BasicMLDataSet) tmp.GetTrainingData();
dLog.Add("TrainDataSize", tData.Count);
//записать входные данные и проскалированные
tLog.WriteEvent(dLog);
BasicNetwork neuralNet = tmp.GetNeuralNetwork();
MediatorNsimLinearScale scale = new MediatorNsimLinearScale();
DataProcessorConf dp = tmp.GetDataProcessor();
scale.DataProcessorM(dp);
//SearchHashForm search = new SearchHashForm();
//Guid[] gidForm = search.GetGIDForm(tData);
BasicMLDataSet tDataScale = scale.ProcessDataSet(tData);
IMLTrain trainMetod;
switch (tmp.GetNameTrainMetod())
{
case "ResilientPropagation":
{
trainMetod = new ResilientPropagation(neuralNet, tDataScale);
break;
}
default:
{
trainMetod = new ResilientPropagation(neuralNet, tDataScale);
break;
}
}
//trainMetod.Iteration(stopParam.Iterations);
trainMetod.Iteration(iterCount);
//var arrWeight = neuralNet.DumpWeights().Split(',');
//using (FileLogger fl = FileLogger.GetLogger())
//{
// fl.WriteString(neuralNet.DumpWeights());
// for (int i = 0; i < tDataScale.Data.Count; i++)//var item in tDataScale.Data)
// {
// fl.WriteString("Входной вектор: " + GetString(tData.Data[i].InputArray));
// var res = neuralNet.Compute(tDataScale.Data[i].Input);
// fl.WriteString("Результат: " + GetString(res.Data));
// var sRes = scale.RestoreIdealVector(res);
// fl.WriteString("Результат востановленный: " + GetString(sRes.Data));
// fl.WriteString("\n");
// }
//}
trainMetod.FinishTraining();
//int countW = neuralNet.EncodedArrayLength();
//double[] w = new double[countW];
//neuralNet.EncodeToArray(w);
Console.WriteLine("!!!");
//for (int i = 0; i < stopParam.Iterations; i++)
//{
// trainMetod.Iteration(
//}
}
示例9: TrainNetwork2
private static EncogTrainingResponse TrainNetwork2(BasicNetwork network, TrainingData training, double maxError, CancellationToken cancelToken, double? maxSeconds = null)
{
//TODO: When the final layer is softmax, the error seems to be higher. Probably because the training outputs need to be run through softmax
const int MAXITERATIONS = 5000;
INeuralDataSet trainingSet = new BasicNeuralDataSet(training.Input, training.Output);
ITrain train = new ResilientPropagation(network, trainingSet);
DateTime startTime = DateTime.UtcNow;
TimeSpan? maxTime = maxSeconds != null ? TimeSpan.FromSeconds(maxSeconds.Value) : (TimeSpan?)null;
bool success = false;
//List<double> log = new List<double>();
int iteration = 1;
double error = double.MaxValue;
while (true)
{
if (cancelToken.IsCancellationRequested)
{
break;
}
train.Iteration();
error = train.Error;
//log.Add(error);
iteration++;
if (double.IsNaN(error))
{
break;
}
else if (error < maxError)
{
success = true;
break;
}
else if (iteration >= MAXITERATIONS)
{
break;
}
else if (maxTime != null && DateTime.UtcNow - startTime > maxTime)
{
break;
}
}
//string logExcel = string.Join("\r\n", log); // paste this into excel and chart it to see the error trend
train.FinishTraining();
return new EncogTrainingResponse(network, success, error, iteration, (DateTime.UtcNow - startTime).TotalSeconds);
}