/// <summary> /// Save currently loaded model. /// </summary> public override void Save() { Directory.CreateDirectory(Path("layers")); int count = 0; foreach (var layer in layers) { var state = Matrix <double> .Build.Dense(layer.Size, layer.InputCount + 1, (row, column) => { if (column == 0) { // First column is neuron bias. return(layer.Neurons[row].Bias); } else { // Everything else is weights. return(layer.Neurons[row].Weights.At(column - 1)); } }); DelimitedWriter.Write(Path(String.Format("layers/{0}", count)), state); count++; } }
public void Save(string folderPath) { string layerPath = folderPath + "\\" + Name; Directory.CreateDirectory(layerPath); if (Activations != null) { Matrix <double> a = DenseMatrix.Build.DenseOfRowVectors(Activations); var activationsFilePath = String.Format("{0}\\Activations.csv", layerPath); DelimitedWriter.Write(activationsFilePath, a, ","); } if (Biases != null) { Matrix <double> bm = DenseMatrix.Build.DenseOfRowVectors(Biases); var biasesFilePath = String.Format("{0}\\Biases.csv", layerPath); DelimitedWriter.Write(biasesFilePath, bm, ","); } if (Weights != null) { var weightsFilePath = String.Format("{0}\\Weights.csv", layerPath); DelimitedWriter.Write(weightsFilePath, Weights, ","); } }
public void Write(StreamWriter str) { str.WriteLine(BlockSize); str.WriteLine(Scale); DelimitedWriter.Write <double>(str, v.ToColumnMatrix()); str.Flush(); }
static void Main(string[] args) { var data = Matrix <double> .Build.Random(2, 2); DelimitedWriter.Write("123", data); MatlabWriter.Write("123", Matrix <double> .Build.Random(2, 2), "a"); }
static void SaveModel(NetworkModel model, OxyPlot.Series.LineSeries series = null) { Console.WriteLine("\nSaving model..."); if (series != null) { try { var graphPoints = new List <Vector <double> >(); foreach (var point in series.Points) { graphPoints.Add(Vector <double> .Build.Dense(new double[] { point.Y })); } DelimitedWriter.Write(model.Path("graph"), Matrix <double> .Build.DenseOfRowVectors(graphPoints)); Console.WriteLine("Saved graph data"); } catch { Console.WriteLine("Unable to save graph data"); } } model.Save(); Console.WriteLine("Model has been saved."); }
private void OnShipFinished(float score, int index) { finishedShips++; finishedBatchShips++; scores[index] = score; if (finishedBatchShips >= shipsPerBatch) { EndBatch(); currentBatch++; if (currentBatch >= batches) { currentGeneration++; chart.AddGenerationData(currentGeneration, GetMaxScore(), GetAvgScore()); if (currentGeneration < generations) { NewGeneration(); } else { DelimitedWriter.Write(Application.dataPath + "/trained.csv", Evolution.GetFittestChromosome(chromosomes, scores).ToColumnMatrix(), ",", null, null, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); SceneManager.LoadScene("Playing"); } } else { StartBatch(); } } }
public void Writer_ExistingFile() { using (var writer = new DelimitedWriter(TestExistingOutputFile, true)) { writer.Write("testing 1-1", "testing 1-2"); writer.Write("testing 2-1", "testing 2-2", "testing 2-3"); } var expected = "Testing\tcontent\r\ntesting 1-1\ttesting 1-2\r\ntesting 2-1\ttesting 2-2\ttesting 2-3\r\n"; string output; using (var outFile = File.OpenText(TestExistingOutputFile)) { output = outFile.ReadToEnd(); } Assert.That(expected, Is.EqualTo(output)); }
public void Writer_CustomSeparator() { using (var writer = new DelimitedWriter(TestOutputFile, false, ',')) { writer.Write("testing 1-1", "testing 1-2"); writer.Write("testing 2-1", "testing 2-2", "testing 2-3"); } var expected = "testing 1-1,testing 1-2\r\ntesting 2-1,testing 2-2,testing 2-3\r\n"; string output; using (var outFile = File.OpenText(TestOutputFile)) { output = outFile.ReadToEnd(); } Assert.That(expected, Is.EqualTo(output)); }
void TrainingFinished() { Time.timeScale = 1.0f; Debug.Log(Y); nn.train(X, Y); DelimitedWriter.Write <double>("X.csv", X, ","); DelimitedWriter.Write <double>("Y.csv", Y, ","); DelimitedWriter.Write <double>("predict.csv", nn.predict(X), ","); training = false; Debug.Log("TrainingFinished"); state = State.Idle; }
public void savematrix(ref Matrix <float> stored, int casenum) { switch (casenum) { case 0: DelimitedWriter.Write("Kmatrix.csv", stored, ","); break; case 1: DelimitedWriter.Write("Mmatrix.csv", stored, ","); break; case 2: DelimitedWriter.Write("Gmatrix.csv", stored, ","); break; case 3: DelimitedWriter.Write("Dmatrix.csv", stored, ","); break; } }
static void Main(string[] args) { Utils.SetNumberDecimalSeparatorToDotInCultureSettings(); var x_data = DelimitedReader.Read <double>(Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\x_data.txt")); var y_data = DelimitedReader.Read <double>(Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\y_data.txt")); NeuralNetwork.CostFunctionWithThetaParameter backProp = tt => { var backPropagationResult = NeuralNetwork.BackPropagation(x_data, y_data, tt, new List <int>() { 25 }, 10, 0); return(backPropagationResult); }; var thetas = NeuralNetwork.RandomInitialiseWeights(400, 10, new List <int>() { 25 }); var theta = NeuralNetwork.PackThetas(thetas); var resultGradientDescent = NeuralNetwork.GradientDescent(backProp, theta, 1, 300); DelimitedWriter.Write("..\\..\\TestData\\ThetaGradient.txt", resultGradientDescent.Item1, "thetaGradient"); DelimitedWriter.Write("..\\..\\TestData\\JHistory.txt", resultGradientDescent.Item2, "JHistory"); var resultTheta = resultGradientDescent.Item1; //var resultComputeNumericalGradient = NeuralNetwork.ComputeNumericalGradient(backProp, resultTheta); //resultComputeNumericalGradient.Save("D:/test/numericalGradients.txt"); var result5 = NeuralNetwork.BackPropagation(x_data, y_data, resultTheta, new List <int>(25), 10, 0); var JJ = result5.Item1; DelimitedWriter.Write("..\\..\\TestData\\GradientForBackPropagation.txt", result5.Item2, "gradBackPropagation"); var resultThetaLoadedFromFile = (DenseMatrix)DelimitedReader.Read <double>("..\\..\\TestData\\thetaGradient.txt"); var thetasList = NeuralNetwork.UnpackThetas(resultThetaLoadedFromFile, 400, new List <int>() { 25 }, 10); var result = NeuralNetwork.GetPredictions(x_data, y_data, thetasList); Console.WriteLine(result.Item1); DelimitedWriter.Write("..\\..\\TestData\\Predictions.txt", result.Item2, ""); }
/// <summary> /// Save currently loaded model. /// </summary> override public void Save() { var state = Vector <double> .Build.Dense(perceptron.Weights.Count + 1, (index) => { if (index == 0) { return(perceptron.Bias); } else { return(perceptron.Weights.At(index - 1)); } }); DelimitedWriter.Write <double>(Path(Config.State), state.ToRowMatrix()); }
public void CanWriteCommaDelimitedDoubleData() { var matrix = DenseMatrix.OfArray(new[, ] { { 1.1, 2.2, 3.3 }, { 4.4, 5.5, 6.6 }, { 7.7, 8.8, 9.9 } }); var stream = new MemoryStream(); DelimitedWriter.Write(stream, matrix, ",", formatProvider: CultureInfo.InvariantCulture); var data = stream.ToArray(); var reader = new StreamReader(new MemoryStream(data)); var text = reader.ReadToEnd(); var expected = @"1.1,2.2,3.3" + Environment.NewLine + "4.4,5.5,6.6" + Environment.NewLine + "7.7,8.8,9.9"; Assert.AreEqual(expected, text); }
public void CanWriteTabDelimitedDataWithMissingValues() { var matrix = DenseMatrix.OfArray(new[, ] { { 1.1, double.NaN, 0 }, { 0, 5.5, 0 }, { double.NaN, double.NaN, 9.9 } }); var stream = new MemoryStream(); DelimitedWriter.Write(stream, matrix, "\t", missingValue: double.NaN); var data = stream.ToArray(); var reader = new StreamReader(new MemoryStream(data)); var text = reader.ReadToEnd(); var expected = "1.1\t\t0" + Environment.NewLine + "0\t5.5\t0" + Environment.NewLine + "\t\t9.9"; Assert.AreEqual(expected, text); }
public void CanWriteSpaceDelimitedData() { var matrix = SparseMatrix.OfArray(new[, ] { { 1.1, 0, 0 }, { 0, 5.5, 0 }, { 0, 0, 9.9 } }); var stream = new MemoryStream(); DelimitedWriter.Write(stream, matrix, " "); var data = stream.ToArray(); var reader = new StreamReader(new MemoryStream(data)); var text = reader.ReadToEnd(); var expected = @"1.1 0 0" + Environment.NewLine + "0 5.5 0" + Environment.NewLine + "0 0 9.9"; Assert.AreEqual(expected, text); }
public void CanWritePeriodDelimitedData() { var matrix = DenseMatrix.OfArray(new[, ] { { 1.1, 2.2, 3.3 }, { 4.4, 5.5, 6.6 }, { 7.7, 8.8, 9.9 } }); var stream = new MemoryStream(); DelimitedWriter.Write(stream, matrix, delimiter: ".", formatProvider: new CultureInfo("tr-TR")); var data = stream.ToArray(); var reader = new StreamReader(new MemoryStream(data)); var text = reader.ReadToEnd(); var expected = @"1,1.2,2.3,3" + Environment.NewLine + "4,4.5,5.6,6" + Environment.NewLine + "7,7.8,8.9,9"; Assert.AreEqual(expected, text); }
public void CanWriteCommaDelimitedDataWithMissingValues() { var matrix = SparseMatrix.OfArray(new[, ] { { 1.1, 0, 0 }, { 0, 5.5, 0 }, { 0, 0, 9.9 } }); var stream = new MemoryStream(); DelimitedWriter.Write(stream, matrix, ",", missingValue: 0); var data = stream.ToArray(); var reader = new StreamReader(new MemoryStream(data)); var text = reader.ReadToEnd(); var expected = @"1.1,," + Environment.NewLine + ",5.5," + Environment.NewLine + ",,9.9"; Assert.AreEqual(expected, text); }
public void Save(string file) { if (file.EndsWith(".mat")) { MatlabWriter.Write <Complex>(file, matrix, "A"); } else if (file.EndsWith(".mtx")) { MatrixMarketWriter.WriteMatrix <Complex>(file, matrix); } else if (file.EndsWith(".csv")) { DelimitedWriter.Write <Complex>(file, matrix, ";"); } else { throw new NotImplementedException(); } }
public void CanWriteCommaDelimitedComplexData() { var matrix = LinearAlgebra.Complex.DenseMatrix.OfArray(new[, ] { { new Complex(1.1, 1.1), new Complex(2.2, 2.2), new Complex(3.3, 3.3) }, { new Complex(4.4, 4.4), new Complex(5.5, 5.5), new Complex(6.6, 6.6) }, { new Complex(7.7, 7.7), new Complex(8.8, 8.8), new Complex(9.9, 9.9) } }); var stream = new MemoryStream(); DelimitedWriter.Write(stream, matrix, ",", formatProvider: CultureInfo.InvariantCulture); var data = stream.ToArray(); var reader = new StreamReader(new MemoryStream(data)); var text = reader.ReadToEnd(); var expected = "(1.1, 1.1),(2.2, 2.2),(3.3, 3.3)" + Environment.NewLine + "(4.4, 4.4),(5.5, 5.5),(6.6, 6.6)" + Environment.NewLine + "(7.7, 7.7),(8.8, 8.8),(9.9, 9.9)"; Assert.AreEqual(expected, text); }
public void SaveToFile() { Console.WriteLine(typeof(Matrix <double>).IsSerializable); DelimitedWriter.Write("data.csv", _weights.First(), ","); }
public void Write(StreamWriter str) { str.WriteLine(Scale); DelimitedWriter.Write <double>(str, m); str.WriteLine(BlockSize); }
static void Main(string[] args) { // Initializations double alpha = .01; // Alpha values to try .001, .003, .01, .03, .1, .3, 1 double Lambda = 10; int iterations = 1500; string ThetaFile = "Thetasave.csv"; if (args.Length < 2) { Console.WriteLine(mystrings.usage); System.Environment.Exit(-1); } if (!File.Exists(args[0])) { Console.WriteLine("Training file {0} not found!", args[0]); System.Environment.Exit(-1); } if (!File.Exists(args[1])) { Console.WriteLine("Label file {0} not found!", args[1]); System.Environment.Exit(-1); } if (args.Length > 2 && File.Exists(args[2])) { alpha = Convert.ToDouble(args[2]);; } else { Console.WriteLine("Using default alpha {0}", alpha); } string trainingfile = args[0]; string labelfile = args[1]; // maybe add check for csv format?? /* * Delimited Reader Param description * Delimited Reader (only Single, Double, Complex and COmplex32) * second param Sparse (True) or dense matrix (false) * THird Param = delimeter * Fourth has headers (T|F) */ Matrix <double> input = DelimitedReader.Read <double>(trainingfile, false, ",", false); Matrix <double> labels = DelimitedReader.Read <double>(labelfile, false, "'", false); if ((labels.RowCount != input.RowCount)) { Console.WriteLine(mystrings.SamplesDontMatch, labels.RowCount, input.RowCount); } int rows = input.RowCount; int cols = input.ColumnCount; Console.WriteLine("Training Set rows = {0}, Columns = {1}", rows, cols); Console.WriteLine("Lable set rows = {0}, Columns = {1}", labels.RowCount, labels.ColumnCount); // Initial guess for Theta is all zeros and n x 1 vector of zeros, where n is the number of features (columns) Matrix <double> init_theta = Matrix <double> .Build.Dense(cols, 1); Matrix <double> ones_theta = Matrix <double> .Build.Dense(cols, 1, 1); Console.WriteLine(mystrings.running, iterations); /* Investigate using ILNumerics unconstrained optimizaiton code, otherwise will need * to write a gradient descent routine. https://ilnumerics.net/unconstrained-optimization.html * */ Matrix <double> theta = Functions.utilityfunctions.GradientDescent(input, labels, init_theta, alpha, iterations, Lambda); /* StreamWriter checkthis; * try * { * checkthis = new StreamWriter("LearnedTheta.csv"); * checkthis.Close(); * } * catch (IOException) * { * Console.WriteLine("Oopsie"); * } */ if (!utilityfunctions.FileOpen(ThetaFile)) { Console.WriteLine(mystrings.File_in_use, ThetaFile); System.Environment.Exit(-1); } else { DelimitedWriter.Write(ThetaFile, theta, ","); } }
/// <summary> /// Write a matrix (sparse or dense) to a comma separated file. /// </summary> /// <param name="matrix">The matrix to be written.</param> /// <param name="path">Path of output file.</param> public static void WriteMatrix(Matrix <double> matrix, string path) { DelimitedWriter.Write(path, matrix, ","); }