示例#1
0
文件: Program.cs 项目: revlayle/Maml
        static void Main(string[] args)
        {
            var xt = new Maml<TemplateData>(t =>
                html => html.Set(
                    div => div.Set(
                        new { attribute_name = "value", stuff = "cool", number = 2 },
                        p => p.Set(string.Format("Item 1 = {0}", t.TheString)),
                        p => p.Set(new { data = "some stuff" }, "Item \" 2"),
                        ul => ul.Set(Enumerable.Range(1, t.TheNumber).Select(
                            i => (Action<Maml<TemplateData>>)
                                (li => li.Set(string.Format("list item {0}", i))))
                        )
                    ),
                    div => div.Set((CData)"this is some cdata"),
                    script => script.Set(new
                    {
                        src = "http://www.test.com/test.js", type = "text/javascript"
                    })
                )
            );

            Console.WriteLine(
                xt.ToString(
                    new TemplateData { TheNumber = 5, TheString = "Hello" }, true
                )
            );
            Console.WriteLine();
            Console.WriteLine(
                xt.ToString(
                    new TemplateData { TheNumber = 2, TheString = "BLAH BLAH" }
                )
            );
            Console.ReadLine();
        }
示例#2
0
        public void Test_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking()
        {
            // This benchmark is profiling bulk scoring speed and not training speed.
            string cmd = @"Test data=" + _mslrWeb10k_Test + " in=" + _modelPath_MSLR;

            using (var environment = EnvironmentFactory.CreateRankingEnvironment <RankerEvaluator, TextLoader, HashTransformer, FastTreeRankingTrainer>())
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
        public void Test_Multiclass_WikiDetox_BigramsAndTrichar_OVAAveragedPerceptron()
        {
            // This benchmark is profiling bulk scoring speed and not training speed.
            string modelpath = Path.Combine(Directory.GetCurrentDirectory(), @"WikiModel.fold000.zip");
            string cmd       = @"Test data=" + _dataPath_Wiki + " in=" + modelpath;

            var environment = EnvironmentFactory.CreateClassificationEnvironment <TextLoader, OneHotEncodingTransformer, AveragedPerceptronTrainer>();

            Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
        }
示例#4
0
        public void Test_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking()
        {
            // This benchmark is profiling bulk scoring speed and not training speed.
            string cmd = @"Test data=" + _mslrWeb10k_Test + " in=" + _modelPath_MSLR;

            using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
        public void SetupScoringSpeedTests()
        {
            SetupTrainingSpeedTests();
            _modelPath_Wiki = Path.Combine(Directory.GetCurrentDirectory(), @"WikiModel.zip");
            string cmd = @"CV k=5 data=" + _dataPath_Wiki + " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} xf=Convert{col=logged_in type=R4} xf=CategoricalTransform{col=ns} xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}} xf=Concat{col=Features:FeaturesText,logged_in,ns} tr=OVA{p=AveragedPerceptron{iter=10}} out={" + _modelPath_Wiki + "}";

            using (var tlc = new TlcEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
            }
        }
        public void Test_Multiclass_WikiDetox_BigramsAndTrichar_OVAAveragedPerceptron()
        {
            // This benchmark is profiling bulk scoring speed and not training speed.
            string modelpath = Path.Combine(Directory.GetCurrentDirectory(), @"WikiModel.fold000.zip");
            string cmd       = @"Test data=" + _dataPath_Wiki + " in=" + modelpath;

            using (var tlc = new TlcEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(tlc, cmd, alwaysPrintStacktrace: false);
            }
        }
        [ConditionalFact(typeof(Environment), nameof(Environment.Is64BitProcess))] // x86 output differs from Baseline
        void TestCommandLine()
        {
            if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                return;
            }

            var env = new MLContext();
            var x   = Maml.Main(new[] { @"showschema loader=Text{col=data_0:R4:0-150527} xf=Onnx{InputColumns={data_0} OutputColumns={softmaxout_1} model={squeezenet/00000001/model.onnx}}" });

            Assert.Equal(0, x);
        }
        public void TestCSGeneratorHelp()
        {
            var cmd = "? CSGenerator";

            using (var std = new Scikit.ML.DocHelperMlExt.StdCapture())
            {
                Maml.MainAll(cmd);
                if (std.StdOut.Length == 0)
                {
                    Assert.Inconclusive("Not accurate on a remote machine.");
                }
            }
        }
        [ConditionalFact(typeof(Environment), nameof(Environment.Is64BitProcess))] // x86 output differs from Baseline
        void TestCommandLine()
        {
            if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                return;
            }

            using (var env = new ConsoleEnvironment())
            {
                var x = Maml.Main(new[] { @"showschema loader=Text{col=data_0:R4:0-150527} xf=Onnx{InputColumn=data_0 OutputColumn=softmaxout_1 model={squeezenet/00000001/model.onnx}}" });
                Assert.Equal(0, x);
            }
        }
示例#10
0
        public void TrainTest_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking()
        {
            string cmd = @"TrainTest test=" + _mslrWeb10k_Validate +
                         " eval=RankingEvaluator{t=10}" +
                         " data=" + _mslrWeb10k_Train +
                         " loader=TextLoader{col=Label:R4:0 col=GroupId:TX:1 col=Features:R4:2-138}" +
                         " xf=HashTransform{col=GroupId} xf=NAHandleTransform{col=Features}" +
                         " tr=FastTreeRanking{}";

            var environment = EnvironmentFactory.CreateRankingEnvironment <RankerEvaluator, TextLoader, HashingTransformer, FastTreeRankingTrainer>();

            Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
        }
        public void CV_Multiclass_WikiDetox_BigramsAndTrichar_LightGBMMulticlass()
        {
            string cmd = @"CV k=5 data=" + _dataPath_Wiki +
                         " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
                         " xf=Convert{col=logged_in type=R4}" +
                         " xf=CategoricalTransform{col=ns}" +
                         " xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}}" +
                         " xf=Concat{col=Features:FeaturesText,logged_in,ns}" +
                         " tr=LightGBMMulticlass{iter=10}";

            var environment = EnvironmentFactory.CreateClassificationEnvironment <TextLoader, OneHotEncodingTransformer, LightGbmMulticlassTrainer>();

            Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
        }
        public void CV_Multiclass_WikiDetox_BigramsAndTrichar_LightGBMMulticlass()
        {
            string cmd = @"CV k=5 data=" + _dataPath_Wiki +
                         " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
                         " xf=Convert{col=logged_in type=R4}" +
                         " xf=CategoricalTransform{col=ns}" +
                         " xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}}" +
                         " xf=Concat{col=Features:FeaturesText,logged_in,ns} tr=LightGBMMulticlass{}";

            using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
示例#13
0
        public void TrainTest_Ranking_MSLRWeb10K_RawNumericFeatures_FastTreeRanking()
        {
            string cmd = @"TrainTest test=" + _mslrWeb10k_Validate +
                         " eval=RankingEvaluator{t=10}" +
                         " data=" + _mslrWeb10k_Train +
                         " loader=TextLoader{col=Label:R4:0 col=GroupId:TX:1 col=Features:R4:2-138}" +
                         " xf=HashTransform{col=GroupId} xf=NAHandleTransform{col=Features}" +
                         " tr=FastTreeRanking{}";

            using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
        public void CV_Multiclass_WikiDetox_WordEmbeddings_SDCAMC()
        {
            string cmd = @"CV k=5 data=" + _dataPath_Wiki +
                         " tr=SDCAMC" +
                         " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
                         " xf=Convert{col=logged_in type=R4}" +
                         " xf=CategoricalTransform{col=ns}" +
                         " xf=TextTransform{col=FeaturesText:comment tokens=+ wordExtractor={} charExtractor={}}" +
                         " xf=WordEmbeddingsTransform{col=FeaturesWordEmbedding:FeaturesText_TransformedText model=FastTextWikipedia300D}" +
                         " xf=Concat{col=Features:FeaturesWordEmbedding,logged_in,ns}";

            var environment = EnvironmentFactory.CreateClassificationEnvironment <TextLoader, OneHotEncodingTransformer, SdcaMultiClassTrainer>();

            Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
        }
        public void CV_Multiclass_WikiDetox_WordEmbeddings_SDCAMC()
        {
            string cmd = @"CV k=5 data=" + _dataPath_Wiki +
                         " tr=SDCAMC" +
                         " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
                         " xf=Convert{col=logged_in type=R4}" +
                         " xf=CategoricalTransform{col=ns}" +
                         " xf=TextTransform{col=FeaturesText:comment tokens=+ wordExtractor={} charExtractor={}}" +
                         " xf=WordEmbeddingsTransform{col=FeaturesWordEmbedding:FeaturesText_TransformedText model=FastTextWikipedia300D}" +
                         " xf=Concat{col=Features:FeaturesWordEmbedding,logged_in,ns}";

            using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
示例#16
0
        public void CV_Multiclass_WikiDetox_WordEmbeddings_OVAAveragedPerceptron()
        {
            string cmd = @"CV k=5  data=" + _dataPath_Wiki +
                         " tr=OVA{p=AveragedPerceptron{iter=10}}" +
                         " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+}" +
                         " xf=Convert{col=logged_in type=R4}" +
                         " xf=CategoricalTransform{col=ns}" +
                         " xf=TextTransform{col=FeaturesText:comment tokens=+ wordExtractor=NGramExtractorTransform{ngram=2}}" +
                         " xf=WordEmbeddingsTransform{col=FeaturesWordEmbedding:FeaturesText_TransformedText model=FastTextWikipedia300D}" +
                         " xf=Concat{col=Features:FeaturesText,FeaturesWordEmbedding,logged_in,ns}";

            using (var environment = EnvironmentFactory.CreateClassificationEnvironment <TextLoader, CategoricalTransform, AveragedPerceptronTrainer>())
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
        public void TestCSGenerator()
        {
            var methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
            var basePath   = FileHelper.GetOutputFile("CSharpApiExt.cs", methodName);
            var cmd        = $"? generator=cs{{csFilename={basePath} exclude=System.CodeDom.dll}}";

            using (var std = new StdCapture())
            {
                Maml.Main(new[] { cmd });
                Assert.IsTrue(std.StdOut.Length > 0);
                Assert.IsTrue(std.StdErr.Length == 0);
                Assert.IsFalse(std.StdOut.ToLower().Contains("usage"));
            }
            var text = File.ReadAllText(basePath);
            // TODO: this tests fails because when ML.net is used
            // as a nuget, buget binaries and custom binaries
            // are not in the same folder. The command looks into
            // its folder and fetches every DLL to look into exposed
            // learner and transforms. XGBoostWrapper is in another folder and does not
            // appear it.
            //Assert.IsTrue(text.ToLower().Contains("xgb"));
        }
        public void SetupScoringSpeedTests()
        {
            _dataPath_Wiki = Path.GetFullPath(TestDatasets.WikiDetox.trainFilename);

            if (!File.Exists(_dataPath_Wiki))
            {
                throw new FileNotFoundException(string.Format(Errors.DatasetNotFound, _dataPath_Wiki));
            }

            _modelPath_Wiki = Path.Combine(Directory.GetCurrentDirectory(), @"WikiModel.zip");

            string cmd = @"CV k=5 data=" + _dataPath_Wiki +
                         " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} xf=Convert{col=logged_in type=R4}" +
                         " xf=CategoricalTransform{col=ns}" +
                         " xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}}" +
                         " xf=Concat{col=Features:FeaturesText,logged_in,ns}" +
                         " tr=OVA{p=AveragedPerceptron{iter=10}}" +
                         " out={" + _modelPath_Wiki + "}";

            var environment = EnvironmentFactory.CreateClassificationEnvironment <TextLoader, OneHotEncodingTransformer, AveragedPerceptronTrainer>();

            Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
        }
示例#19
0
        public void SetupScoringSpeedTests()
        {
            _mslrWeb10k_Test     = Path.GetFullPath(TestDatasets.MSLRWeb.testFilename);
            _mslrWeb10k_Validate = Path.GetFullPath(TestDatasets.MSLRWeb.validFilename);
            _mslrWeb10k_Train    = Path.GetFullPath(TestDatasets.MSLRWeb.trainFilename);

            if (!File.Exists(_mslrWeb10k_Test))
            {
                throw new FileNotFoundException(string.Format(Errors.DatasetNotFound, _mslrWeb10k_Test));
            }

            if (!File.Exists(_mslrWeb10k_Validate))
            {
                throw new FileNotFoundException(string.Format(Errors.DatasetNotFound, _mslrWeb10k_Validate));
            }

            if (!File.Exists(_mslrWeb10k_Train))
            {
                throw new FileNotFoundException(string.Format(Errors.DatasetNotFound, _mslrWeb10k_Train));
            }

            _modelPath_MSLR = Path.Combine(Directory.GetCurrentDirectory(), @"FastTreeRankingModel.zip");

            string cmd = @"TrainTest test=" + _mslrWeb10k_Validate +
                         " eval=RankingEvaluator{t=10}" +
                         " data=" + _mslrWeb10k_Train +
                         " loader=TextLoader{col=Label:R4:0 col=GroupId:TX:1 col=Features:R4:2-138}" +
                         " xf=HashTransform{col=GroupId}" +
                         " xf=NAHandleTransform{col=Features}" +
                         " tr=FastTreeRanking{}" +
                         " out={" + _modelPath_MSLR + "}";

            using (var environment = EnvironmentFactory.CreateRankingEnvironment <RankerEvaluator, TextLoader, HashTransformer, FastTreeRankingTrainer>())
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
示例#20
0
        public void SetupScoringSpeedTests()
        {
            _mslrWeb10k_Test     = Path.GetFullPath(TestDatasets.MSLRWeb.testFilename);
            _mslrWeb10k_Validate = Path.GetFullPath(TestDatasets.MSLRWeb.validFilename);
            _mslrWeb10k_Train    = Path.GetFullPath(TestDatasets.MSLRWeb.trainFilename);

            if (!File.Exists(_mslrWeb10k_Test))
            {
                throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _mslrWeb10k_Test));
            }

            if (!File.Exists(_mslrWeb10k_Validate))
            {
                throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _mslrWeb10k_Validate));
            }

            if (!File.Exists(_mslrWeb10k_Train))
            {
                throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _mslrWeb10k_Train));
            }

            _modelPath_MSLR = Path.Combine(Directory.GetCurrentDirectory(), @"FastTreeRankingModel.zip");

            string cmd = @"TrainTest test=" + _mslrWeb10k_Validate +
                         " eval=RankingEvaluator{t=10}" +
                         " data=" + _mslrWeb10k_Train +
                         " loader=TextLoader{col=Label:R4:0 col=GroupId:TX:1 col=Features:R4:2-138}" +
                         " xf=HashTransform{col=GroupId}" +
                         " xf=NAHandleTransform{col=Features}" +
                         " tr=FastTreeRanking{}" +
                         " out={" + _modelPath_MSLR + "}";

            using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
        public void SetupScoringSpeedTests()
        {
            _dataPath_Wiki = Path.GetFullPath(TestDatasets.WikiDetox.trainFilename);

            if (!File.Exists(_dataPath_Wiki))
            {
                throw new FileNotFoundException(string.Format(Helpers.DatasetNotFound, _dataPath_Wiki));
            }

            _modelPath_Wiki = Path.Combine(Directory.GetCurrentDirectory(), @"WikiModel.zip");

            string cmd = @"CV k=5 data=" + _dataPath_Wiki +
                         " loader=TextLoader{quote=- sparse=- col=Label:R4:0 col=rev_id:TX:1 col=comment:TX:2 col=logged_in:BL:4 col=ns:TX:5 col=sample:TX:6 col=split:TX:7 col=year:R4:3 header=+} xf=Convert{col=logged_in type=R4}" +
                         " xf=CategoricalTransform{col=ns}" +
                         " xf=TextTransform{col=FeaturesText:comment wordExtractor=NGramExtractorTransform{ngram=2}}" +
                         " xf=Concat{col=Features:FeaturesText,logged_in,ns}" +
                         " tr=OVA{p=AveragedPerceptron{iter=10}}" +
                         " out={" + _modelPath_Wiki + "}";

            using (var environment = new ConsoleEnvironment(verbose: false, sensitivity: MessageSensitivity.None, outWriter: EmptyWriter.Instance))
            {
                Maml.MainCore(environment, cmd, alwaysPrintStacktrace: false);
            }
        }
示例#22
0
 public void TestCommandLine()
 {
     Assert.Equal(0, Maml.Main(new[] { @"showschema loader=Text{col=A:R4:0-100} xf=Rff{col=B:A dim=4 useSin+ kernel=LaplacianRandom}  in=f:\2.txt" }));
 }
 public void TestLdaCommandLine()
 {
     Assert.Equal(Maml.Main(new[] { @"showschema loader=Text{col=A:R4:0-10} xf=lda{col=B:A} in=f:\2.txt" }), (int)0);
 }
        void TestCommandLine()
        {
            var x = Maml.Main(new[] { @"showschema loader=Text{col=data_0:R4:0-150527} xf=Onnx{InputColumns={data_0} OutputColumns={softmaxout_1} model={squeezenet/00000001/model.onnx}}" });

            Assert.Equal(0, x);
        }
示例#25
0
 public void TestGcnNormCommandLine()
 {
     Assert.Equal(Maml.Main(new[] { @"showschema loader=Text{col=A:R4:0-10} xf=GcnTransform{col=B:A} in=f:\2.txt" }), (int)0);
 }
 public void TestCommandLine()
 {
     Assert.Equal(0, Maml.Main(new[] { @"showschema loader=Text{col=A:R4:0} xf=Term{col=B:A} xf=KeyToBinary{col=C:B} in=f:\2.txt" }));
 }
 public void TestCommandLine()
 {
     Assert.Equal(0, Maml.Main(new[] { @"showschema loader=Text{col=A:R4:0} xf=Term{col=B:A} xf=KeyToVector{col=C:B col={name=D source=B bag+}} in=f:\2.txt" }));
 }
 public void TestCommandLine()
 {
     Assert.Equal(Maml.Main(new[] { @"showschema loader=Text{col=A:TX:0} xf=Convert{col=B:A type=R4} in=f:\2.txt" }), (int)0);
 }
示例#29
0
 public void TestCommandLine()
 {
     Assert.Equal(Maml.Main(new[] { @"showschema loader=Text{col=A:R4:0}  xf=NAReplace{col=C:A} in=f:\2.txt" }), (int)0);
 }
示例#30
0
 public void TestCommandLine()
 {
     Assert.Equal(0, Maml.Main(new[] { @"showschema loader=Text{col=A:R4:0} xf=Cat{col=B:A} in=f:\2.txt" }));
 }
 /// <summary>
 /// Invoke MAML with specified arguments without output baseline.
 /// This method is used in unit tests when the output is not baselined.
 /// If the output is to be baselined and compared, the other overload should be used.
 /// </summary>
 protected int MainForTest(string args)
 {
     return(Maml.MainCore(ML, args, false));
 }