Example #1
0
        public void Test1and2()
        {
            var references = File.ReadAllLines(@"pred-sets\ref\0001.predict").Select(l => float.Parse(l, CultureInfo.InvariantCulture)).ToArray();

            var input = new List <Test1>();

            using (var vwStr = new VowpalWabbit(" -k -c test1and2.str --passes 8 -l 20 --power_t 1 --initial_t 128000  --ngram 3 --skips 1 --invariant --holdout_off"))
                using (var vw = new VowpalWabbit <Test1>(" -k -c test1and2 --passes 8 -l 20 --power_t 1 --initial_t 128000  --ngram 3 --skips 1 --invariant --holdout_off"))
                {
                    var lineNr = 0;
                    VWTestHelper.ParseInput(
                        File.OpenRead(@"train-sets\0001.dat"),
                        new MyListener(data =>
                    {
                        input.Add(data);

                        var expected = vwStr.Learn <VowpalWabbitScalarPrediction>(data.Line);

                        using (var example = vw.ReadExample(data))
                        {
                            var actual = example.LearnAndPredict <VowpalWabbitScalarPrediction>();

                            Assert.AreEqual(expected.Value, actual.Value, 1e-6, "Learn output differs on line: " + lineNr);
                        }

                        lineNr++;
                    }));

                    vwStr.RunMultiPass();
                    vw.RunMultiPass();

                    vwStr.SaveModel("models/str0001.model");
                    vw.SaveModel("models/0001.model");

                    VWTestHelper.AssertEqual(@"train-sets\ref\0001.stderr", vwStr.PerformanceStatistics);
                    VWTestHelper.AssertEqual(@"train-sets\ref\0001.stderr", vw.PerformanceStatistics);
                }

            Assert.AreEqual(input.Count, references.Length);

            using (var vwModel = new VowpalWabbitModel("-k -t --invariant", File.OpenRead("models/0001.model")))
                using (var vwInMemoryShared1 = new VowpalWabbit(vwModel))
                    using (var vwInMemoryShared2 = new VowpalWabbit <Test1>(vwModel))
                        using (var vwInMemory = new VowpalWabbit("-k -t --invariant", File.OpenRead("models/0001.model")))
                            using (var vwStr = new VowpalWabbit("-k -t -i models/str0001.model --invariant"))
                                using (var vw = new VowpalWabbit <Test1>("-k -t -i models/0001.model --invariant"))
                                {
                                    for (var i = 0; i < input.Count; i++)
                                    {
                                        var actualStr      = vwStr.Predict <VowpalWabbitScalarPrediction>(input[i].Line);
                                        var actualShared1  = vwInMemoryShared1.Predict <VowpalWabbitScalarPrediction>(input[i].Line);
                                        var actualInMemory = vwInMemory.Predict <VowpalWabbitScalarPrediction>(input[i].Line);

                                        using (var example = vw.ReadExample(input[i]))
                                            using (var exampleInMemory2 = vwInMemoryShared2.ReadExample(input[i]))
                                            {
                                                var actual        = example.Predict <VowpalWabbitScalarPrediction>();
                                                var actualShared2 = exampleInMemory2.Predict <VowpalWabbitScalarPrediction>();

                                                Assert.AreEqual(references[i], actualStr.Value, 1e-5);
                                                Assert.AreEqual(references[i], actualShared1.Value, 1e-5);
                                                Assert.AreEqual(references[i], actualInMemory.Value, 1e-5);
                                                Assert.AreEqual(references[i], actual.Value, 1e-5);
                                                Assert.AreEqual(references[i], actualShared2.Value, 1e-5);
                                            }
                                    }

                                    // VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwInMemoryShared2.PerformanceStatistics);
                                    //VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwInMemoryShared1.PerformanceStatistics);
                                    VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwInMemory.PerformanceStatistics);
                                    VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwStr.PerformanceStatistics);
                                    VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vw.PerformanceStatistics);
                                }
        }
Example #2
0
        public void Test1and2()
        {
            var references = File.ReadAllLines(@"pred-sets\ref\0001.predict").Select(l => float.Parse(l, CultureInfo.InvariantCulture)).ToArray();

            var input = new List <Test1>();

            using (var vwStr = new VowpalWabbit(" -k -c test1and2.str --passes 8 -l 20 --power_t 1 --initial_t 128000  --ngram 3 --skips 1 --invariant --holdout_off"))
                using (var vw = new VowpalWabbit <Test1>(new VowpalWabbitSettings(" -k -c test1and2 --passes 8 -l 20 --power_t 1 --initial_t 128000  --ngram 3 --skips 1 --invariant --holdout_off")
                {
                    EnableExampleCaching = false
                }))
                    using (var vwValidate = new VowpalWabbitExampleValidator <Test1>("-l 20 --power_t 1 --initial_t 128000  --ngram 3 --skips 1 --invariant --holdout_off"))
                    {
                        var lineNr = 0;
                        VWTestHelper.ParseInput(
                            File.OpenRead(@"train-sets\0001.dat"),
                            new MyListener(data =>
                        {
                            input.Add(data);

                            vwValidate.Validate(data.Line, data, data.Label);

                            var expected = vwStr.Learn(data.Line, VowpalWabbitPredictionType.Scalar);
                            var actual   = vw.Learn(data, data.Label, VowpalWabbitPredictionType.Scalar);

                            Assert.AreEqual(expected, actual, 1e-6, "Learn output differs on line: " + lineNr);

                            lineNr++;
                        }));

                        vwStr.RunMultiPass();
                        vw.Native.RunMultiPass();

                        vwStr.SaveModel("models/str0001.model");
                        vw.Native.SaveModel("models/0001.model");

                        VWTestHelper.AssertEqual(@"train-sets\ref\0001.stderr", vwStr.PerformanceStatistics);
                        VWTestHelper.AssertEqual(@"train-sets\ref\0001.stderr", vw.Native.PerformanceStatistics);
                    }

            Assert.AreEqual(input.Count, references.Length);

            using (var vwModel = new VowpalWabbitModel(new VowpalWabbitSettings("-k -t --invariant")
            {
                ModelStream = File.OpenRead("models/0001.model")
            }))
                using (var vwInMemoryShared1 = new VowpalWabbit(new VowpalWabbitSettings {
                    Model = vwModel
                }))
                    using (var vwInMemoryShared2 = new VowpalWabbit <Test1>(new VowpalWabbitSettings {
                        Model = vwModel
                    }))
                        using (var vwInMemory = new VowpalWabbit(new VowpalWabbitSettings("-k -t --invariant")
                        {
                            ModelStream = File.OpenRead("models/0001.model")
                        }))
                            using (var vwStr = new VowpalWabbit("-k -t -i models/str0001.model --invariant"))
                                using (var vwNative = new VowpalWabbit("-k -t -i models/0001.model --invariant"))
                                    using (var vw = new VowpalWabbit <Test1>("-k -t -i models/0001.model --invariant"))
                                        using (var vwModel2 = new VowpalWabbitModel("-k -t --invariant -i models/0001.model"))
                                            using (var vwInMemoryShared3 = new VowpalWabbit <Test1>(new VowpalWabbitSettings {
                                                Model = vwModel2
                                            }))
                                            {
                                                for (var i = 0; i < input.Count; i++)
                                                {
                                                    var actualStr      = vwStr.Predict(input[i].Line, VowpalWabbitPredictionType.Scalar);
                                                    var actualNative   = vwNative.Predict(input[i].Line, VowpalWabbitPredictionType.Scalar);
                                                    var actualInMemory = vwInMemory.Predict(input[i].Line, VowpalWabbitPredictionType.Scalar);

                                                    var actual        = vw.Predict(input[i], VowpalWabbitPredictionType.Scalar, input[i].Label);
                                                    var actualShared1 = vwInMemoryShared1.Predict(input[i].Line, VowpalWabbitPredictionType.Scalar);
                                                    var actualShared2 = vwInMemoryShared2.Predict(input[i], VowpalWabbitPredictionType.Scalar, input[i].Label);
                                                    var actualShared3 = vwInMemoryShared3.Predict(input[i], VowpalWabbitPredictionType.Scalar, input[i].Label);

                                                    Assert.AreEqual(references[i], actualStr, 1e-5);
                                                    Assert.AreEqual(references[i], actualNative, 1e-5);
                                                    Assert.AreEqual(references[i], actualInMemory, 1e-5);
                                                    Assert.AreEqual(references[i], actual, 1e-5);
                                                    Assert.AreEqual(references[i], actualShared1, 1e-5);
                                                    Assert.AreEqual(references[i], actualShared2, 1e-5);
                                                    Assert.AreEqual(references[i], actualShared3, 1e-5);
                                                }

                                                // due to shared usage the counters don't match up
                                                //VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwInMemoryShared2.Native.PerformanceStatistics);
                                                //VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwInMemoryShared1.PerformanceStatistics);

                                                VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwInMemory.PerformanceStatistics);
                                                VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vwStr.PerformanceStatistics);
                                                VWTestHelper.AssertEqual(@"test-sets\ref\0001.stderr", vw.Native.PerformanceStatistics);
                                            }
        }