public void TrainerGeneratorBasicAdvancedParameterTest() { var context = new MLContext(); var elementProperties = new Dictionary <string, object>() { { "LearningRate", 0.1f }, { "NumLeaves", 1 }, { "UseSoftmax", true } }; PipelineNode node = new PipelineNode("LightGbmBinary", PipelineNodeType.Trainer, default(string[]), default(string), elementProperties); Pipeline pipeline = new Pipeline(new PipelineNode[] { node }); CodeGenerator codeGenerator = new CodeGenerator(pipeline, null, null); var actual = codeGenerator.GenerateTrainerAndUsings(); string expectedTrainer = "LightGbm(new LightGbmBinaryTrainer.Options(){LearningRate=0.1f,NumLeaves=1,UseSoftmax=true,LabelColumnName=\"Label\",FeatureColumnName=\"Features\"})"; string expectedUsing = "using Microsoft.ML.Trainers.LightGbm;\r\n"; Assert.Equal(expectedTrainer, actual.Item1); Assert.Equal(expectedUsing, actual.Item2[0]); }
public async Task Pipeline_With_ContinueOnError_Returns_Exceptions_On_All_Failures() { var pipelineNode = new PipelineNode <TestObjectA> { LocalOptions = new ExecutionOptions { ContinueOnFailure = true } }; pipelineNode.AddChild(new FaultingTestNodeA()); pipelineNode.AddChild(new FaultingTestNodeA()); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); IEnumerable <Exception> exceptions = result.GetFailExceptions(); exceptions.Should().NotBeNull(); exceptions.Count().Should().Be(2); }
public async Task When_Cancelling_Pipeline_At_First_Node_Then_Status_Is_NotRun() { var pipelineNode = new PipelineNode <TestObjectA>(); var testNode1 = new SimpleTestNodeA1(true, false, true); var testNode2 = new SimpleTestNodeA2(); pipelineNode.AddChild(testNode1); pipelineNode.AddChild(testNode2); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); result.Status.Should().Be(NodeResultStatus.NotRun); pipelineNode.Status.Should().Be(NodeRunStatus.Completed); testNode1.Status.Should().Be(NodeRunStatus.NotRun); testNode2.Status.Should().Be(NodeRunStatus.NotRun); }
public void TrainerComplexParameterTest() { var context = new MLContext(); var elementProperties = new Dictionary <string, object>() { { "Booster", new CustomProperty() { Properties = new Dictionary <string, object>(), Name = "TreeBooster" } }, }; PipelineNode node = new PipelineNode("LightGbmBinary", PipelineNodeType.Trainer, new string[] { "Label" }, default(string), elementProperties); Pipeline pipeline = new Pipeline(new PipelineNode[] { node }); CodeGenerator codeGenerator = new CodeGenerator(pipeline, null, null); var actual = codeGenerator.GenerateTrainerAndUsings(); string expectedTrainer = "LightGbm(new LightGbmBinaryTrainer.Options(){Booster=new TreeBooster(){},LabelColumnName=\"Label\",FeatureColumnName=\"Features\"})"; var expectedUsings = "using Microsoft.ML.Trainers.LightGbm;\r\n"; Assert.Equal(expectedTrainer, actual.Item1); Assert.Equal(expectedUsings, actual.Item2[0]); }
public async Task Can_Add_Base_Type_Pipeline_Node_To_Inherited_Type_Pipeline() { var testNode = new SimpleTestNodeA1(); var pipeline = new PipelineNode <TestObjectA>(); pipeline.AddChild(testNode); var testNode2 = new SimpleTestNodeASub1(); var pipelineSub = new PipelineNode <TestObjectASub>(); pipelineSub.AddChild(testNode2); pipelineSub.AddChild(pipeline); var testObject = new TestObjectASub(); var result = await pipeline.ExecuteAsync(testObject); testNode.Status.Should().Be(NodeRunStatus.Completed); result.Status.Should().Be(NodeResultStatus.Succeeded); }
public async Task Pipeline_Overall_Result_Subject_Equals_Changed_Subject() { var pipelineNode = new PipelineNode <TestObjectA>(); var node1 = new SimpleTestNodeA1(); var node2 = new SubjectChangingNode1(); var node3 = new SimpleTestNodeA2(); pipelineNode.AddChild(node1); pipelineNode.AddChild(node2); pipelineNode.AddChild(node3); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); pipelineNode.Status.Should().Be(NodeRunStatus.Completed); var childResults = result.ChildResults.ToList(); result.Subject.Should().NotBeSameAs(testObject); result.Subject.Should().BeSameAs(childResults[1].Subject); }
public async Task Adding_State_To_A_Node_Is_Available_In_Global_Context() { var pipelineNode = new PipelineNode <TestObjectA>(); pipelineNode.AddChild(new SimpleTestNodeA1()); pipelineNode.AddChild(new FuncNode <TestObjectA> { ExecutedFunc = ctxt => { ctxt.State.Foo = "Bar"; return(Task.FromResult(NodeResultStatus.Succeeded)); } }); var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await pipelineNode.ExecuteAsync(context); result.Status.Should().Be(NodeResultStatus.Succeeded); Assert.Equal("Bar", context.State.Foo); }
private void SetRequiredNugetPackages(IEnumerable <PipelineNode> trainerNodes, ref bool includeLightGbmPackage, ref bool includeMklComponentsPackage, ref bool includeFastTreePackage, ref bool includeImageTransformerPackage, ref bool includeImageClassificationPackage, ref bool includeRecommenderPackage) { foreach (var node in trainerNodes) { PipelineNode currentNode = node; if (currentNode.Name == TrainerName.Ova.ToString()) { currentNode = (PipelineNode)currentNode.Properties["BinaryTrainer"]; } if (_lightGbmTrainers.Contains(currentNode.Name)) { includeLightGbmPackage = true; } else if (_mklComponentsTrainers.Contains(currentNode.Name)) { includeMklComponentsPackage = true; } else if (_fastTreeTrainers.Contains(currentNode.Name)) { includeFastTreePackage = true; } else if (_imageTransformers.Contains(currentNode.Name)) { includeImageTransformerPackage = true; } else if (_imageClassificationTrainers.Contains(currentNode.Name)) { includeImageClassificationPackage = true; } else if (_recommendationTrainers.Contains(currentNode.Name)) { includeRecommenderPackage = true; } } }
public async void When_Cancelling_Pipeline_At_Later_Node_Then_Status_Is_Success() { var pipelineNode = new PipelineNode <TestObjectA>(); var testNode1 = new SimpleTestNodeA1(); var testNode2 = new SimpleTestNodeA1(true, false, true); var testNode3 = new SimpleTestNodeA2(); pipelineNode.AddChild(testNode1); pipelineNode.AddChild(testNode2); pipelineNode.AddChild(testNode3); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); result.Status.ShouldEqual(NodeResultStatus.Succeeded); pipelineNode.Status.ShouldEqual(NodeRunStatus.Completed); testNode1.Status.ShouldEqual(NodeRunStatus.Completed); testNode2.Status.ShouldEqual(NodeRunStatus.NotRun); testNode3.Status.ShouldEqual(NodeRunStatus.NotRun); }
public async void Pipeline_Node_Results_Following_Subject_Change_Node_Return_Changed_Subject() { var pipelineNode = new PipelineNode <TestObjectA>(); var node1 = new SimpleTestNodeA1(); var node2 = new SubjectChangingNode1(); var node3 = new SimpleTestNodeA2(); pipelineNode.AddChild(node1); pipelineNode.AddChild(node2); pipelineNode.AddChild(node3); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); pipelineNode.Status.ShouldEqual(NodeRunStatus.Completed); var childResults = result.ChildResults.ToList(); childResults[0].Subject.ShouldBeSameAs(testObject); childResults[1].Subject.ShouldNotBeSameAs(testObject); childResults[2].Subject.ShouldNotBeSameAs(testObject); childResults[1].Subject.ShouldEqual(childResults[2].Subject); }
public LinearSvm(PipelineNode node) : base(node) { }
public FastTreeTweedie(PipelineNode node) : base(node) { }
public FastTreeRegression(PipelineNode node) : base(node) { }
public FastTreeClassification(PipelineNode node) : base(node) { }
public FastForestRegression(PipelineNode node) : base(node) { }