예제 #1
0
        public void TestDynamic()
        {
            // TODO: look into friend assemblies and how to figure if one is a friend
            using (var vw = new VowpalWabbit("--cb_adf --rank_all"))
                using (var vwDynamic = new VowpalWabbitDynamic(new VowpalWabbitSettings("--cb_adf --rank_all")
                {
                    TypeInspector = JsonTypeInspector.Default
                }))
                {
                    var expected = vw.Learn(new[] { "| q:1", "2:-3:0.9 | q:2", "| q:3" }, VowpalWabbitPredictionType.ActionScore);
                    var actual   = vwDynamic.Learn(
                        new
                    {
                        _multi = new[]
                        {
                            new { q = 1 },
                            new { q = 2 },
                            new { q = 3 }
                        }
                    },
                        VowpalWabbitPredictionType.ActionScore,
                        new ContextualBanditLabel(0, -3, 0.9f),
                        1);
                    AssertAreEqual(expected, actual);

                    expected = vw.Learn(new[] { "| q:1", "2:-5:0.9 | q:2", "| q:3" }, VowpalWabbitPredictionType.ActionScore);
                    actual   = vwDynamic.Learn(
                        new
                    {
                        _multi = new[]
                        {
                            new { q = 1 },
                            new { q = 2 },
                            new { q = 3 }
                        }
                    },
                        VowpalWabbitPredictionType.ActionScore,
                        new ContextualBanditLabel(0, -5, 0.9f),
                        1);
                    AssertAreEqual(expected, actual);

                    expected = vw.Learn(new[] { "| q:1", "| q:2", "3:-2:0.8 | q:3" }, VowpalWabbitPredictionType.ActionScore);
                    actual   = vwDynamic.Learn(
                        new
                    {
                        _multi = new[]
                        {
                            new { q = 1 },
                            new { q = 2 },
                            new { q = 3 }
                        },
                        _labelIndex        = 2,
                        _label_Action      = 3,
                        _label_Cost        = -2,
                        _label_Probability = 0.8
                    },
                        VowpalWabbitPredictionType.ActionScore);
                    AssertAreEqual(expected, actual);
                }
        }
예제 #2
0
        public void TestDynamic()
        {
            using (var vw = new VowpalWabbit("--cb_adf --rank_all"))
                using (var vwDynamic = new VowpalWabbitDynamic(new VowpalWabbitSettings("--cb_adf --rank_all")
                {
                    TypeInspector = JsonTypeInspector.Default
                }))
                {
                    var expected = vw.Learn(new[] { "| q:1", "2:-3:0.9 | q:2", "| q:3" }, VowpalWabbitPredictionType.Multilabel);
                    var actual   = vwDynamic.Learn(
                        new
                    {
                        _multi = new[]
                        {
                            new { q = 1 },
                            new { q = 2 },
                            new { q = 3 }
                        }
                    },
                        VowpalWabbitPredictionType.Multilabel,
                        new ContextualBanditLabel(2, -3, 0.9f),
                        2);

                    CollectionAssert.AreEqual(expected, actual);

                    expected = vw.Learn(new[] { "| q:1", "2:-5:0.9 | q:2", "| q:3" }, VowpalWabbitPredictionType.Multilabel);
                    actual   = vwDynamic.Learn(
                        new
                    {
                        _multi = new[]
                        {
                            new { q = 1 },
                            new { q = 2 },
                            new { q = 3 }
                        }
                    },
                        VowpalWabbitPredictionType.Multilabel,
                        new ContextualBanditLabel(2, -3, 0.9f),
                        2);

                    CollectionAssert.AreEqual(expected, actual);

                    using (var mem1 = new MemoryStream())
                        using (var mem2 = new MemoryStream())
                        {
                            vw.SaveModel(mem1);
                            vwDynamic.Native.SaveModel(mem2);

                            CollectionAssert.AreEqual(mem1.ToArray(), mem1.ToArray());
                        }
                }
        }