예제 #1
0
		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();
		}
예제 #2
0
		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();
		}