Example #1
0
        public void CanParseTabDelimtedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\"\t\t0.3e1" + Environment.NewLine
                       + "'4'\t5\t6";

            var reader = new DelimitedReader <SparseMatrix>('\t')
            {
                CultureInfo = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Example #2
0
        public void CanParseCommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "(1,2)" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'(4,-5)',5,6" + Environment.NewLine;

            var reader = new DelimitedReader <DenseMatrix>(',')
            {
                HasHeaderRow = true,
                CultureInfo  = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0].Real);
            Assert.AreEqual(2.0, matrix[0, 0].Imaginary);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0].Real);
            Assert.AreEqual(-5.0, matrix[2, 0].Imaginary);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Example #3
0
        public void CanParseWhiteSpaceDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"(2.2,3.3)\" 0.3e1" + Environment.NewLine
                       + "'4'   5      6" + Environment.NewLine;

            var reader = new DelimitedReader <UserDefinedMatrix>
            {
                CultureInfo = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0].Real);
            Assert.AreEqual(3.3, matrix[1, 0].Imaginary);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Example #4
0
        public void CanParseComplex32CommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "(1,2)" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'(4,-5)',5,6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter      = ",",
                HasHeaderRow   = true,
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix <Complex32>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0].Real);
            Assert.AreEqual(2.0f, matrix[0, 0].Imaginary);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual((Complex32)3.0f, matrix[1, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0].Real);
            Assert.AreEqual(-5.0f, matrix[2, 0].Imaginary);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
Example #5
0
        /// <summary>
        /// Load and return the digits dataset (classification).
        /// Each datapoint is a 8x8 image of a digit.
        /// =================   ==============
        /// Classes                         10
        /// Samples per class             ~180
        /// Samples total                 1797
        /// Dimensionality                  64
        /// Features             integers 0-16
        /// =================   ==============
        /// </summary>
        /// <returns>Instance of <see cref="DigitsDataset"/>.</returns>
        public static DigitsDataset Load()
        {
            var reader = new DelimitedReader {
                Sparse = false, Delimiter = " "
            };
            var assembly = Assembly.GetAssembly(typeof(DigitsDataset));

            string descr;

            using (var sr = new StreamReader(assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.rst")))
            {
                descr = sr.ReadToEnd();
            }

            using (var datastream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.csv.gz"))
            {
                var data = reader.ReadMatrix <double>(new GZipStream(datastream, CompressionMode.Decompress));
                return(new DigitsDataset
                {
                    Data = data.SubMatrix(0, data.RowCount, 0, data.ColumnCount - 1),
                    Target = data.Column(data.ColumnCount - 1).ToArray().Cast <int>().ToArray(),
                    Description = descr
                });
            }
        }
        public void TestBackPropagationWithoutRegularisaion()
        {
            NeuralNetwork.CostFunctionWithThetaParameter backProp =
                t =>
            {
                var backPropagationResult = NeuralNetwork.BackPropagation(Xm, ym, t, new List <int>()
                {
                    4
                }, 4, 0);
                return(backPropagationResult);
            };

            var bothThetas = NeuralNetwork.PackThetas(new List <Matrix <double> >()
            {
                theta1NN, theta2NN
            });
            var resultNumericalGradient  = NeuralNetwork.ComputeNumericalGradient(backProp, bothThetas);
            var pathNumericalGradients   = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\NumericalGradientForBackPropagationWithoutRegularisation.txt");
            var matrixNumericalGradients = DelimitedReader.Read <double>(pathNumericalGradients);

            Assert.IsTrue(MatricesEqual(resultNumericalGradient, matrixNumericalGradients));

            var resultBackPropagation = NeuralNetwork.BackPropagation(Xm, ym, bothThetas, new List <int>()
            {
                4
            }, 4, 0);
            var pathGradientForBackPropagation   = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\GradientForBackPropagationWithoutRegularisation.txt");
            var matrixGradientForBackPropagation = DelimitedReader.Read <double>(pathGradientForBackPropagation);

            Assert.IsTrue(Equalities.DoubleEquals(resultBackPropagation.Item1, 3.08744915815864));
            Assert.IsTrue(MatricesEqual(resultBackPropagation.Item2, matrixGradientForBackPropagation));
            Assert.IsTrue(MatricesEqual(resultBackPropagation.Item2, resultNumericalGradient, 0.000000001));
        }
        public void CanParseCommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'4',5,6" + Environment.NewLine;

            var reader = new DelimitedReader<DenseMatrix>(',')
                         {
                             HasHeaderRow = true, 
                             CultureInfo = CultureInfo.InvariantCulture
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
        public void TestForwardPropagation()
        {
            var resultFeedForward = NeuralNetwork.ForwardPropagation(Xm, new List <Matrix <double> >()
            {
                theta1NN, theta2NN
            });

            var h  = resultFeedForward.OutputActivation;
            var a1 = resultFeedForward.NodesActivations.ElementAt(0);
            var a2 = resultFeedForward.NodesActivations.ElementAt(1);
            var z2 = resultFeedForward.NodesOutputs.ElementAt(0);
            var z3 = resultFeedForward.NodesOutputs.ElementAt(1);

            var pathH  = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\FeedForward_h.txt");
            var patha1 = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\FeedForward_a1.txt");
            var patha2 = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\FeedForward_a2.txt");
            var pathz2 = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\FeedForward_z2.txt");
            var pathz3 = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\FeedForward_z3.txt");

            var wantedH  = DelimitedReader.Read <double>(pathH);
            var wanteda1 = DelimitedReader.Read <double>(patha1);
            var wanteda2 = DelimitedReader.Read <double>(patha2);
            var wantedz2 = DelimitedReader.Read <double>(pathz2);
            var wantedz3 = DelimitedReader.Read <double>(pathz3);

            Assert.IsTrue(MatricesEqual(h, wantedH));
            Assert.IsTrue(MatricesEqual(a1, wanteda1));
            Assert.IsTrue(MatricesEqual(a2, wanteda2));
            Assert.IsTrue(MatricesEqual(z2, wantedz2));
            Assert.IsTrue(MatricesEqual(z3, wantedz3));
        }
Example #9
0
 void Start()
 {
     trainedModelValues = DelimitedReader.Read <double>(Application.dataPath + "/trained.csv", false, ",", false, System.Globalization.CultureInfo.InvariantCulture.NumberFormat).Column(0);
     ship = Instantiate(spaceShipPrefab, Vector3.zero, Quaternion.identity);
     ship.GetComponent <SpaceShip>().InitializeBrain(trainedModelValues);
     ship.GetComponent <SpaceShip>().StartEngine(s => Restart());
 }
 void Start()
 {
     Control.UseNativeMKL();
     G = DelimitedReader.Read <float>("Gmatrix" + objname + ".csv", false, ",", false);
     D = DelimitedReader.Read <float>("Dmatrix" + objname + ".csv", false, ",", false);
     //print("Gmatrix" + objname + ".csv");
 }
Example #11
0
        public void CanParseCommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'4',5,6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter      = ",",
                HasHeaderRow   = true,
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix <double>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
 public void CanParseCommaDelimitedData()
 {
     const string data =
         @"a,b,c
     1
     ""2.2"",0.3e1
     '4',5,6
     ";
     var reader = new DelimitedReader<DenseMatrix>(',')
                  {
                      HasHeaderRow = true
                  };
     var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
     Assert.AreEqual(3, matrix.RowCount);
     Assert.AreEqual(3, matrix.ColumnCount);
     Assert.AreEqual(1.0f, matrix[0, 0]);
     Assert.AreEqual(0.0f, matrix[0, 1]);
     Assert.AreEqual(0.0f, matrix[0, 2]);
     Assert.AreEqual(2.2f, matrix[1, 0]);
     Assert.AreEqual(3.0f, matrix[1, 1]);
     Assert.AreEqual(0.0f, matrix[1, 2]);
     Assert.AreEqual(4.0f, matrix[2, 0]);
     Assert.AreEqual(5.0f, matrix[2, 1]);
     Assert.AreEqual(6.0f, matrix[2, 2]);
 }
        public void CanParsePeriodDelimitedData()
        {
            const string data =
                @"a.b.c
            1
            ""2,2"".0,3e1
            '4,0'.5,0.6,0
            ";
            var reader = new DelimitedReader<DenseMatrix>('.')
                         {
                             HasHeaderRow = true,
                             CultureInfo = new CultureInfo("tr-TR")
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
Example #14
0
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter      = ".",
                HasHeaderRow   = true,
                FormatProvider = new CultureInfo("tr-TR")
            };
            var matrix = reader.ReadMatrix <double>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
Example #15
0
        public void CanParseWhiteSpaceDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\" 0.3e1" + Environment.NewLine
                       + "'4'   5      6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix <float>(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
Example #16
0
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1+0,2e1i" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader <DenseMatrix>('.')
            {
                HasHeaderRow = true,
                CultureInfo  = new CultureInfo("tr-TR")
            };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1].Real);
            Assert.AreEqual(2.0, matrix[1, 1].Imaginary);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
        private ResultModel item_predict(string pathFile)
        {
            ResultModel result = new ResultModel();
            // load data
            Matrix <double> data = DelimitedReader.Read <double>(pathFile, false, "\t", false, System.Globalization.CultureInfo.InvariantCulture.NumberFormat);

            result.raw_data = data;

            int n_users = data.Column(0).Distinct().Count();
            int n_items = data.Column(1).Distinct().Count();

            double          test_split  = 0.1;
            double          train_split = 1 - test_split;
            int             train_row   = (int)(data.RowCount * train_split);
            int             train_col   = data.ColumnCount;
            int             test_row    = data.RowCount - train_row;
            int             test_col    = train_col;
            Matrix <double> train_data  = DenseMatrix.Create(train_row, train_col, 0);
            Matrix <double> test_data   = DenseMatrix.Create(test_row, test_col, 0);

            train_data = data.SubMatrix(0, train_row, 0, train_col);
            test_data  = data.SubMatrix(train_row, test_row, 0, test_col);

            // Create two user-item matrices, one for training and another for testing
            Matrix <double> train_data_matrix = DenseMatrix.Create(n_users, n_items, 0);

            for (int line = 0; line < train_data.RowCount; line++)
            {
                int userId = (int)(train_data[line, 0]);
                int itemId = (int)(train_data[line, 1] - 1);
                train_data_matrix[userId, itemId] = train_data[line, 2];
            }

            Matrix <double> test_data_matrix = DenseMatrix.Create(n_users, n_items, 0);

            for (int line = 0; line < test_data.RowCount; line++)
            {
                int userId = (int)(test_data[line, 0]);
                int itemId = (int)(test_data[line, 1] - 1);
                test_data_matrix[userId, itemId] = test_data[line, 2];
            }
            result.train_data = train_data_matrix;
            result.test_data  = test_data_matrix;

            // consine similarity calculate
            Matrix <double> item_similarity = Recommender_System.cosin(train_data_matrix.Transpose());

            // predict
            Matrix <double> item_prediction = Recommender_System.predict(train_data_matrix, item_similarity, "item");

            result.predic_data = item_prediction;

            // rmse error
            double item_rmse = RMSE.calRMSE(item_prediction, test_data_matrix);

            result.rmse = item_rmse;

            return(result);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //takes a matrix in a text file (1,1),(3,4) and the same underneath.. and reads them in
            //args for method = file path, booleal true if sparse matrix, string delimiter, boolean true if it has headers
            Matrix <Complex32> fileMatrix = DelimitedReader.Read <Complex32>(@"D:\My Documents\Paul Docs\Education, training, employment\Job\1 Research\C#\2 Tutorials Vids\3 Odds n Sods\3 Math.Net Vector math\csv.txt", false, ",", false);

            textBox1.AppendText(fileMatrix.ToString("F2"));
        }
Example #19
0
 float Alpha = 0.000020f;  //rayleigh damping, metal
 void Start()
 {
     forceamp    = 1000f;
     forceoffset = 0.1f;
     G           = DelimitedReader.Read <float>("Gmatrix.csv", false, ",", false);
     D           = DelimitedReader.Read <float>("Dmatrix.csv", false, ",", false);
     M           = DelimitedReader.Read <float>("Mmatrix.csv", false, ",", false);
 }
        public void TestSigmoid()
        {
            var sigmoid = NeuralNetwork.Sigmoid(X);

            var path            = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\Sigmoid.txt");
            var matrixToCompare = (DenseMatrix)DelimitedReader.Read <double>(path);

            Assert.IsTrue(MatricesEqual(sigmoid, matrixToCompare));
        }
Example #21
0
        /// <summary>
        /// Initialize current model.
        /// </summary>
        public override void Initialize()
        {
            try
            {
                // Try to initialize model state from files.
                layers = new List <Layer>();

                int count      = 0;
                int inputCount = Config.Inputs;
                foreach (var layer in Config.Layers)
                {
                    var state = DelimitedReader.Read <double>(Path(String.Format("layers/{0}", count)));
                    // If either number of neurons or number of inputs
                    // (omitting bias) is wrong, format is incorrect.
                    if (state.RowCount != layer.NeuronCount || state.ColumnCount - 1 != inputCount)
                    {
                        throw new Exception("Incorrect format");
                    }

                    var neurons = new List <Neuron>();
                    foreach (var neuronState in state.ToRowArrays())
                    {
                        var weights = Vector <double> .Build.Dense(neuronState).SubVector(1, neuronState.Length - 1);

                        neurons.Add(new Neuron(inputCount, weights, neuronState[0], layer.Function.ToString()));
                    }
                    layers.Add(new Layer(neurons));

                    // Set current layer neuron count as next layer input count.
                    inputCount = layer.NeuronCount;
                    count++;
                }
                Loaded = true;
            }
            catch
            {
                // If fails, generate new one from scratch.
                layers = new List <Layer>();

                foreach (var layer in Config.Layers)
                {
                    int inputCount;
                    if (layers.Count == 0)
                    {
                        // First layer input count is network input count.
                        inputCount = Config.Inputs;
                    }
                    else
                    {
                        // All subsequent layers input count is previous layer size.
                        inputCount = layers.Last().Size;
                    }
                    layers.Add(Layer.Generate(layer.NeuronCount, inputCount, layer.Function.ToString()));
                }
            }
        }
Example #22
0
        public static RawMatrix Read(StreamReader str)
        {
            var mtx = new RawMatrix()
            {
                Scale     = Double.Parse(str.ReadLine()),
                m         = DelimitedReader.Read <double>(str),
                BlockSize = ulong.Parse(str.ReadLine())
            };

            return(mtx);
        }
        public void Reader_ReturnVal_Split()
        {
            IEnumerable <String> strings = null;

            using (var reader = new DelimitedReader(TestInputFileBlank))
            {
                strings = reader.Read();
            }

            Assert.That(strings, Is.EquivalentTo(new[] { "Shelby Macias", "3027 Lorem St.|Kokomo|Hertfordshire|L9T 3D5|England", "1 66 890 3865-9584", "*****@*****.**" }));
        }
Example #24
0
        private DenseMatrix readMatrixChild(XmlNode node, string childName)
        {
            XmlElement element = node [childName];

            if (element == null)
            {
                return(null);
            }

            return(DenseMatrix.OfMatrix(DelimitedReader.Read <double> (new StringReader(element.InnerText))));
        }
Example #25
0
        static public RawVector Read(StreamReader str)
        {
            RawVector vct = new RawVector(0)
            {
                BlockSize = ulong.Parse(str.ReadLine()),
                Scale     = Double.Parse(str.ReadLine()),
                v         = DelimitedReader.Read <double>(str).Column(0),
            };

            return(vct);
        }
 /// <summary>
 /// Load and return the diabetes dataset (regression).
 /// ==============      ==================
 /// Samples total       442
 /// Dimensionality      10
 /// Features            real, -.2 &lt; x &lt; .2
 /// Targets             integer 25 - 346
 /// ==============      ==================
 /// </summary>
 /// <returns>
 /// Instance of <see cref="DiabetesDataset"/> class.
 /// </returns>
 public static DiabetesDataset Load()
 {
     var reader = new DelimitedReader { Sparse = false, Delimiter = " " };
     var assembly = Assembly.GetAssembly(typeof(DiabetesDataset));
     using (var datastream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.diabetes_data.csv.gz"))
     using (var targetstream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.diabetes_target.csv.gz"))
     {
         var data = reader.ReadMatrix<double>(new GZipStream(datastream, CompressionMode.Decompress));
         var target = reader.ReadMatrix<double>(new GZipStream(targetstream, CompressionMode.Decompress));
         return new DiabetesDataset { Data = data, Target = target.Column(0) };
     }
 }
Example #27
0
        public void ShouldParseWhenLastStringHasNoTerminator()
        {
            var bytes = new List <byte>();

            bytes.AddRange(Encoding.ASCII.GetBytes("abc"));
            bytes.Add(0);
            bytes.AddRange(Encoding.ASCII.GetBytes("def"));
            var reader = new DelimitedReader(new StreamReader(new MemoryStream(bytes.ToArray())));

            Assert.Equal("abc", reader.Read());
            Assert.Equal("def", reader.Read());
            Assert.Null(reader.Read());
        }
Example #28
0
        public static RawMatrix Read(StreamReader str)
        {
            var mtx = new RawMatrix()
            {
                Scale     = Double.Parse(str.ReadLine()),
                m         = DelimitedReader.Read <double>(str),
                BlockSize = ulong.Parse(str.ReadLine())
            };

            Max = Math.Max(Max, mtx.m.Enumerate().Max(x => (x < 0) ? -x : x));

            return(mtx);
        }
        public void Reader_WithOut_Split()
        {
            IEnumerable <String> strings = null;
            bool success = false;

            using (var reader = new DelimitedReader(TestInputFileBlank))
            {
                success = reader.TryRead(out strings);
            }

            Assert.That(strings, Is.EquivalentTo(new[] { "Shelby Macias", "3027 Lorem St.|Kokomo|Hertfordshire|L9T 3D5|England", "1 66 890 3865-9584", "*****@*****.**" }));
            Assert.That(success, Is.True);
        }
        public void TestCostFunction()
        {
            var tupleJAndGrad = NeuralNetwork.CostFunction(theta, X, y);

            var pathJ   = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\J.txt");
            var matrixJ = (DenseMatrix)DelimitedReader.Read <double>(pathJ);

            var pathGrad   = Path.Combine(Utils.GetAssemblyPath(), "..\\..\\TestData\\Grad.txt");
            var matrixGrad = (DenseMatrix)DelimitedReader.Read <double>(pathGrad);

            Assert.IsTrue(Equalities.DoubleEquals(tupleJAndGrad.Item1, matrixJ[0, 0]));
            Assert.IsTrue(MatricesEqual(tupleJAndGrad.Item2, matrixGrad));
        }
Example #31
0
        public bool Load(string folderPath)
        {
            bool   result    = false;
            string layerPath = folderPath;

            if (Directory.Exists(folderPath) == true)
            {
                var activationsFilePath = String.Format("{0}\\Activations.csv", layerPath);
                if (File.Exists(activationsFilePath))
                {
                    Matrix <double> a      = DelimitedReader.Read <double>(activationsFilePath, sparse: false, delimiter: ",");
                    var             arrays = a.ToRowArrays();
                    Activations = DenseVector.Build.DenseOfArray(arrays[0]);
                }
                else
                {
                    throw new System.IO.DirectoryNotFoundException(activationsFilePath);
                }

                if (Name != "Input")
                {
                    var biasesFilePath = String.Format("{0}\\Biases.csv", layerPath);
                    if (File.Exists(biasesFilePath))
                    {
                        Matrix <double> a      = DelimitedReader.Read <double>(biasesFilePath, sparse: false, delimiter: ",");
                        var             arrays = a.ToRowArrays();
                        Biases = DenseVector.Build.DenseOfArray(arrays[0]);
                    }
                    else
                    {
                        throw new System.IO.DirectoryNotFoundException(biasesFilePath);
                    }

                    var weightsFilePath = String.Format("{0}\\Weights.csv", layerPath);
                    if (File.Exists(weightsFilePath))
                    {
                        Weights = DelimitedReader.Read <double>(weightsFilePath, sparse: false, delimiter: ",");
                    }
                    else
                    {
                        throw new System.IO.DirectoryNotFoundException(weightsFilePath);
                    }
                }
                result = true;
            }
            else
            {
                throw new System.IO.DirectoryNotFoundException(folderPath);
            }
            return(result);
        }
Example #32
0
        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, "");
        }
Example #33
0
 private void OnEnable()
 {
     if (readflag == 0)
     {
         Control.UseNativeMKL();
         G = DelimitedReader.Read <float>("Gmatrix" + objname + ".csv", false, ",", false);
         D = DelimitedReader.Read <float>("Dmatrix" + objname + ".csv", false, ",", false);
         displacedVertices = this.GetComponentInParent <MeshFilter>().sharedMesh.vertices;
         Sound             = this.GetComponent <Sound>();
         soundsamples      = new float[44100];
         D_data            = D.ToRowMajorArray();
         readflag          = 0;
     }
 }
Example #34
0
 /// <summary>
 /// Initialize current model.
 /// </summary>
 public override void Initialize()
 {
     try
     {
         var state   = DelimitedReader.Read <double>(Path(Config.State)).Row(0);
         var bias    = state[0];
         var weights = state.SubVector(1, state.Count - 1);
         perceptron = new Neuron(Config.Inputs, weights, bias, Config.Function.ToString());
     }
     catch
     {
         perceptron = Neuron.Generate(Config.Inputs, Config.Function.ToString());
     }
 }
        /// <summary>
        /// Load and return the digits dataset (classification).
        /// Each datapoint is a 8x8 image of a digit.
        /// =================   ==============
        /// Classes                         10
        /// Samples per class             ~180
        /// Samples total                 1797
        /// Dimensionality                  64
        /// Features             integers 0-16
        /// =================   ==============
        /// </summary>
        /// <returns>Instance of <see cref="DigitsDataset"/>.</returns>
        public static DigitsDataset Load()
        {
            var reader = new DelimitedReader { Sparse = false, Delimiter = " " };
            var assembly = Assembly.GetAssembly(typeof(DigitsDataset));
            
            string descr;
            using (var sr = new StreamReader(assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.rst")))
            {
                descr = sr.ReadToEnd();
            }

            using (var datastream = assembly.GetManifestResourceStream("Sharpkit.Learn.Datasets.Data.digits.csv.gz"))
            {
                var data = reader.ReadMatrix<double>(new GZipStream(datastream, CompressionMode.Decompress));
                return new DigitsDataset
                           {
                               Data = data.SubMatrix(0, data.RowCount, 0, data.ColumnCount - 1),
                               Target = data.Column(data.ColumnCount - 1).ToArray().Cast<int>().ToArray(),
                               Description = descr
                           };
            }
        }
        public void CanParseTabDelimtedData()
        {
            var data = "1"
                       + Environment.NewLine
                       + "\"2.2\"\t\t0.3e1"
                       + Environment.NewLine
                       + "'4'\t5\t6";

            var reader = new DelimitedReader<SparseMatrix>('\t');
            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader
                {
                    Delimiter = ".",
                    HasHeaderRow = true,
                    FormatProvider = new CultureInfo("tr-TR")
                };
            var matrix = reader.ReadMatrix<double>(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(0.0, matrix[0, 1]);
            Assert.AreEqual(0.0, matrix[0, 2]);
            Assert.AreEqual(2.2, matrix[1, 0]);
            Assert.AreEqual(3.0, matrix[1, 1]);
            Assert.AreEqual(0.0, matrix[1, 2]);
            Assert.AreEqual(4.0, matrix[2, 0]);
            Assert.AreEqual(5.0, matrix[2, 1]);
            Assert.AreEqual(6.0, matrix[2, 2]);
        }
        public void CanParseComplex32CommaDelimitedData()
        {
            var data = "a,b,c" + Environment.NewLine
                       + "(1,2)" + Environment.NewLine
                       + "\"2.2\",0.3e1" + Environment.NewLine
                       + "'(4,-5)',5,6" + Environment.NewLine;

            var reader = new DelimitedReader
            {
                Delimiter = ",",
                HasHeaderRow = true,
                FormatProvider = CultureInfo.InvariantCulture
            };

            var matrix = reader.ReadMatrix<Complex32>(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0].Real);
            Assert.AreEqual(2.0f, matrix[0, 0].Imaginary);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual((Complex32)3.0f, matrix[1, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0].Real);
            Assert.AreEqual(-5.0f, matrix[2, 0].Imaginary);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
        public void CanParsePeriodDelimitedData()
        {
            var data = "a.b.c" + Environment.NewLine
                       + "1" + Environment.NewLine
                       + "\"2,2\".0,3e1+0,2e1i" + Environment.NewLine
                       + "'4,0'.5,0.6,0" + Environment.NewLine;

            var reader = new DelimitedReader<DenseMatrix>('.')
                         {
                             HasHeaderRow = true, 
                             CultureInfo = new CultureInfo("tr-TR")
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual((Complex32)1.0f, matrix[0, 0]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1].Real);
            Assert.AreEqual(2.0f, matrix[1, 1].Imaginary);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual((Complex32)4.0f, matrix[2, 0]);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
 public void CanParseWhiteSpaceDelimitedData()
 {
     const string data =
         @"1
     ""2.2"" 0.3e1
     '4'   5      6
     ";
     var reader = new DelimitedReader<UserDefinedMatrix>();
     var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
     Assert.AreEqual(3, matrix.RowCount);
     Assert.AreEqual(3, matrix.ColumnCount);
     Assert.AreEqual(1.0f, matrix[0, 0]);
     Assert.AreEqual(0.0f, matrix[0, 1]);
     Assert.AreEqual(0.0f, matrix[0, 2]);
     Assert.AreEqual(2.2f, matrix[1, 0]);
     Assert.AreEqual(3.0f, matrix[1, 1]);
     Assert.AreEqual(0.0f, matrix[1, 2]);
     Assert.AreEqual(4.0f, matrix[2, 0]);
     Assert.AreEqual(5.0f, matrix[2, 1]);
     Assert.AreEqual(6.0f, matrix[2, 2]);
 }
        public void CanParseTabDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\"\t\t0.3e1" + Environment.NewLine
                       + "'4'\t5\t6";

            var reader = new DelimitedReader<SparseMatrix>('\t')
                         {
                             CultureInfo = CultureInfo.InvariantCulture
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual((Complex32)1.0f, matrix[0, 0]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[0, 2]);
            Assert.AreEqual((Complex32)2.2f, matrix[1, 0]);
            Assert.AreEqual((Complex32)3.0f, matrix[1, 1]);
            Assert.AreEqual((Complex32)0.0f, matrix[1, 2]);
            Assert.AreEqual((Complex32)4.0f, matrix[2, 0]);
            Assert.AreEqual((Complex32)5.0f, matrix[2, 1]);
            Assert.AreEqual((Complex32)6.0f, matrix[2, 2]);
        }
        public void CanParseWhiteSpaceDelimitedData()
        {
            var data = "1" + Environment.NewLine
                       + "\"2.2\" 0.3e1" + Environment.NewLine
                       + "'4'   5      6" + Environment.NewLine;

            var reader = new DelimitedReader<UserDefinedMatrix>
                         {
                             CultureInfo = CultureInfo.InvariantCulture
                         };

            var matrix = reader.ReadMatrix(new MemoryStream(Encoding.UTF8.GetBytes(data)));
            Assert.AreEqual(3, matrix.RowCount);
            Assert.AreEqual(3, matrix.ColumnCount);
            Assert.AreEqual(1.0f, matrix[0, 0]);
            Assert.AreEqual(0.0f, matrix[0, 1]);
            Assert.AreEqual(0.0f, matrix[0, 2]);
            Assert.AreEqual(2.2f, matrix[1, 0]);
            Assert.AreEqual(3.0f, matrix[1, 1]);
            Assert.AreEqual(0.0f, matrix[1, 2]);
            Assert.AreEqual(4.0f, matrix[2, 0]);
            Assert.AreEqual(5.0f, matrix[2, 1]);
            Assert.AreEqual(6.0f, matrix[2, 2]);
        }