protected List <PredictionOfCurrencyLearnResult> FitSimpleNeuralNetwork(bool saveLearnResult = false) { InitData(); InitSimpleNeuralNetwork(); var result = new List <PredictionOfCurrencyLearnResult>(); for (var i = 0; i < DataManager.LearnData.Data.Count - 1; i++) { var input = DataManager.LearnData[i].Vector; var ideal = (Vector) new double[] { DataManager.LearnData[i + 1].Vector.Values.Last() }; var ideal1 = (Vector) new double[] { DataManager.LearnData[i + 1].Vector.Values.Last() }; var(output, error) = SimpleNeuralNetwork.Learn(input, ideal); result.Add(new PredictionOfCurrencyLearnResult { Date = DataManager.LearnData.Data[i].Date, Error = error, Output = DataManager.ConvertOutput(SimpleNeuralNetwork.ConvertOutput(output)), Ideal = DataManager.ConvertOutput(ideal1), Input = DataManager.ConvertInput(input), }); } SimpleNeuralNetwork.Save(NeuralNetworkName); if (saveLearnResult) { SaveLearnProgress(result); } return(result); }
public override void Save(BinaryWriter w) { base.Save(w); w.Write(charsPerImage); w.Write(charsSet.Aggregate((c, n) => c + n)); w.Write(learnRate); sann.Save(w); }
static void Train_predict_and_save(string filepath) { // train & testing data var training_data = new Dictionary <int, Tuple <float[], float[]> > { // ys xs [0] = new Tuple <float[], float[]>(new float[] { 0, 1 }, new float[] { 1 }), [1] = new Tuple <float[], float[]>(new float[] { 1, 0 }, new float[] { 1 }), [2] = new Tuple <float[], float[]>(new float[] { 0, 0 }, new float[] { 0 }), [3] = new Tuple <float[], float[]>(new float[] { 1, 1 }, new float[] { 0 }) }; var snn = new SimpleNeuralNetwork(2, 0.4f, Activation.FunctionsEnum.Sigmoid); snn.Add(4); snn.Add(1); // train Console.WriteLine("Entrenamiento:\n"); Random random = new Random(); int j = 0; Console.WriteLine("Training ..."); for (int i = 0; i < 100000; i++) { j = random.Next(4); snn.Train(training_data[j].Item1, training_data[j].Item2); } // predict Console.WriteLine("\nPredicciones:\n"); for (int i = 0; i < 4; i++) { var res = snn.Predict(training_data[i].Item1); Console.WriteLine(string.Format("xs [ {0}, {1} ] = {2}", training_data[i].Item1[0], training_data[i].Item1[1], res[0])); } SimpleNeuralNetwork.Save(snn, filepath); Console.WriteLine("\nRed Neuronal guardada !!.\n"); }