public static BasicNetwork loadNetwork(byte[] networkBytes) { FilePersistence location = new FilePersistence(); location.AddStreamData(networkBytes); EncogPersistedCollection collection = new EncogPersistedCollection(location, FileMode.Open); BasicNetwork returnNetwork = (BasicNetwork)collection.Find("neuralNet"); //Make sure we have the flattended network cached. returnNetwork.Structure.FinalizeStructure(); return(returnNetwork); }
public static void saveNetwork(BasicNetwork network, string filename, string filePath) { if (filename.Substring(filename.Length - 4, 4) != ".eNN") { throw new Exception("Incorrect extension in filename"); } EncogPersistedCollection collection = new EncogPersistedCollection(Path.Combine(filePath, filename), FileMode.Create); if (filename.Contains("\\")) { int indexOfSlash = filename.IndexOf('\\'); collection.Add("neuralNet", network); } else { collection.Add("neuralNet", network); } }
public static void Go() { var encog = new EncogPersistedCollection("market-network.dat", FileMode.Open); Console.WriteLine(@"Loading network"); var network = (BasicNetwork)encog.Find("market-network"); Console.WriteLine(@"Reading current data from db"); var market = new StockMarket(); market.Init(false); var data = market.GetCurrentData(); Console.WriteLine(@"Running network on data"); var madness = new ModelMadness(); foreach (StockMarket.WorkableStockInfo info in data) { var input = InputOutputMadness.CreateInputs(info); var neuralInput = new BasicMLData(input); var output = network.Compute(neuralInput); Console.WriteLine(@"Stock " + info.ViewToday.stock + @" will change " + output[0] + @"% in the next 20 trading days"); var future = new prediction { day = DateTime.Now.Date, C20_Days_Close = 100 * (decimal)output[0], stock = info.ViewToday.stock }; madness.AddTopredictions(future); } madness.SaveChanges(); Console.WriteLine(@"Done - begin making $millions"); }
public static BasicNetwork loadNetwork(string filename, string filePath) { if (filename.Substring(filename.Length - 4, 4) != ".eNN") { throw new Exception("Unexpected network extension in filename"); } string fullPath = Path.Combine(filePath, filename); if (!File.Exists(fullPath)) { throw new ArgumentException("Requested file does not exist - " + fullPath); } EncogPersistedCollection collection = new EncogPersistedCollection(fullPath, FileMode.Open); BasicNetwork returnNetwork = (BasicNetwork)collection.Find("neuralNet"); //Make sure we have the flattended network cached. returnNetwork.Structure.FinalizeStructure(); return(returnNetwork); }
public static void Create() { var market = new StockMarket(); market.Init(true); Console.WriteLine(@"Fetching training data from db"); var trainingData = market.GetTrainingData(); Console.WriteLine(@"Creating training set"); var inputs = new ArrayList(); var outputs = new ArrayList(); var cur = 1; foreach (var info in trainingData) { Console.WriteLine(@"Adding record " + (cur++) + @" of " + trainingData.Count); var input = InputOutputMadness.CreateInputs(info); var output = new[] { InputOutputMadness.CreateOutput(info) }; inputs.Add(input); outputs.Add(output); } Console.WriteLine(@"Created training set - saving"); var trainingSet = new BasicMLDataSet((double[][])inputs.ToArray(typeof(double[])), (double[][])outputs.ToArray(typeof(double[]))); var encog = new EncogPersistedCollection("market-training.dat", FileMode.Create); encog.Add("market-training", trainingSet); Console.WriteLine(@"saved"); }
public static void Run(bool useBPN, double?learnRate, double?momentum) { Log("Using " + (useBPN ? "Back-Propagation training with learnRate = " + learnRate + ", momentum = " + momentum : "Resilient training")); Log("Loading training data"); var encog = new EncogPersistedCollection("market-training.dat", FileMode.Open); var trainingSet = (BasicMLDataSet)encog.Find("market-training"); BasicNetwork network; if (File.Exists("market-network.dat")) { Log("Loading network"); encog = new EncogPersistedCollection("market-network.dat", FileMode.Open); network = (BasicNetwork)encog.Find("market-network"); } else { Log("Creating new network"); network = new BasicNetwork(); // input & hiddens foreach (var num in InputOutputMadness.InputAndHiddenLayerInfo) { network.AddLayer(new BasicLayer(num)); } // output network.AddLayer(new BasicLayer(1)); network.Structure.FinalizeStructure(); network.Reset(); } BasicTraining train; if (useBPN) { train = new Backpropagation(network, trainingSet, (double)learnRate, (double)momentum); } else { train = new ResilientPropagation(network, trainingSet); } //train = new NeuralGeneticAlgorithm(network, new FanInRandomizer(), new TrainingSetScore(trainingSet), 500, 0.1, 0.25); Log("Beginning Training"); int epoch = 1; do { train.Iteration(); Log("Epoch #" + epoch + " Error:" + train.Error); epoch++; if (epoch % 100 == 0) { Log("Saving current data"); encog = new EncogPersistedCollection("market-network.dat", FileMode.Create); encog.Create(); encog.Add("market-network", network); } }while (true); }