Esempio n. 1
0
 public IntentsLoader(string fileName, SentenceVectorizer vectorizer)
 {
     this.FileName   = fileName;
     this.Vectorizer = vectorizer;
     this.Initialize(FileName);
 }
Esempio n. 2
0
        static void Main(string[] args)
        {
            var glovePath = Path.Combine(Directory.GetCurrentDirectory(), "data/glove.6B.300d.txt");
            var dataPath  = Path.Combine(Directory.GetCurrentDirectory(), "data/kc_data.json");

            var stopwatch = new Stopwatch();

            // double[][] trainData = null;
            // double[][] testData = null;
            // MakeTrainTest(Iris.Dataset(), out trainData, out testData);

            Console.WriteLine("Loading GLoVE vectors from {0}", glovePath);
            stopwatch.Start();
            var reader = new WordVectorReader(glovePath);

            stopwatch.Stop();
            Console.WriteLine("Task finished in {0} ms", stopwatch.ElapsedMilliseconds);

            stopwatch.Restart();
            var vectorizer = new SentenceVectorizer(reader);
            var loader     = new DataLoader.IntentsLoader(dataPath, vectorizer);

            var trainData = loader.GetData();

            stopwatch.Stop();
            Console.WriteLine("Task finished in {0} ms", stopwatch.ElapsedMilliseconds);

            Console.WriteLine("Training started");
            stopwatch.Restart();

            var numInput  = loader.InputDimensions;
            var numHidden = 50;
            var numOutput = loader.OutputDimensions;

            var nn = new SparseNetwork(numInput, numHidden, numOutput);

            var    maxEpochs = 50;
            double learnRate = 0.02;

            nn.Train(trainData, maxEpochs, learnRate);
            var trainAcc = nn.Accuracy(trainData);

            Console.WriteLine("\nAccuracy on training data = " + trainAcc.ToString("F4"));

            stopwatch.Stop();
            Console.WriteLine("Task finished in {0} ms", stopwatch.ElapsedMilliseconds);

            // var testAcc = nn.Accuracy(testData);
            // Console.WriteLine("\nAccuracy on test data = " + testAcc.ToString("F4"));

            // Console.WriteLine(nn.ToString());

            // var test = new NeuralNetwork.Sparse.SparseMatrix<double>(10000000, 10000000);
            // test[2, 4] = 1d;
            // test[10000, 20] = 2d;
            // test[10000, 30] = 4d;
            // test[5000000, 5000000] = Math.PI;
            // Console.WriteLine(test[2, 4]);
            // Console.WriteLine(test[10000, 20]);
            // Console.WriteLine(test[10000, 30]);
            // Console.WriteLine(test[5000000, 5000000]);
            // Console.WriteLine(test[10, 20]);

            while (true)
            {
                Console.Write("Sentence for testing: ");
                var sentence = Console.ReadLine();

                if (sentence == "exit")
                {
                    break;
                }

                stopwatch.Restart();
                var sent_vector = vectorizer.SentenceToVector(sentence);
                var result      = nn.ComputeOutputs(sent_vector);
                var resultIdx   = SparseNetwork.MaxIndex(result);
                stopwatch.Stop();

                Console.WriteLine($"Result: {loader.Intents[resultIdx].name}, Confidence: {result[resultIdx]}");
                Console.WriteLine($"Inference time: {stopwatch.ElapsedMilliseconds}");
            }
        }