private static void Test_BPMIncremental( int nClass, int totalFeatures, double noisePrec, int maxItemsInBatch, int nChunks, string trainingFile, Vector[] testData) { Console.WriteLine("\n------- BPM Train Incremental -------"); VectorGaussian[] wInfer = new VectorGaussian[nClass]; BPM bpmIncremental = new BPM(nClass, totalFeatures, noisePrec); bpmIncremental.TrainingEngine.ShowProgress = false; bpmIncremental.TestEngine.ShowProgress = false; int LocToStart = 0; for (int c = 0; c < nChunks; c++) { List<Vector>[] dataChunks = DataFromFile.Read(trainingFile, nClass, maxItemsInBatch, ref LocToStart); wInfer = bpmIncremental.TrainIncremental(dataChunks); } #if ShowWeights for (int i = 0; i < wInfer.GetLength(0); i++) { Console.WriteLine(wInfer[i].ToString()); } #endif Console.WriteLine("\nPredictions:"); Discrete[] predictions = bpmIncremental.Test(testData); foreach (Discrete pred in predictions) Console.WriteLine(pred); Console.WriteLine(); }
private static void Test_BPM_Shared(int nClass, int totalFeatures, double noisePrec, int maxItemsInBatch, int nChunks, string trainingFile, Vector[] testData) { Console.WriteLine("\n------- BPM Shared -------"); VectorGaussian[] wInfer = new VectorGaussian[nClass]; BPM_Shared bpmShared = new BPM_Shared(nClass, totalFeatures, noisePrec, nChunks, 1); bpmShared.TrainingEngine.ShowProgress = false; bpmShared.TestEngine.ShowProgress = false; // Several passes to achieve convergence for (int pass = 0; pass < 15; pass++) { int LocToStart = 0; // Loop over chunks for (int c = 0; c < nChunks; c++) { List<Vector>[] dataChunks = DataFromFile.Read(trainingFile, nClass, maxItemsInBatch, ref LocToStart); wInfer = bpmShared.Train(dataChunks, c); } } #if ShowWeights for (int i = 0; i < wInfer.GetLength(0); i++) { Console.WriteLine(wInfer[i]); } #endif Console.WriteLine("\nPredictions:"); Discrete[] predictions = bpmShared.Test(testData, 0); foreach (Discrete pred in predictions) Console.WriteLine(pred); Console.WriteLine(); }