diff --git a/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs b/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs index 714995a56e..78ec31205f 100644 --- a/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs +++ b/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs @@ -454,9 +454,9 @@ private static bool TryGetIniters(Type instType, Type loaderType, Type[] parmTyp var parmTypesWithEnv = Utils.Concat(new Type[1] { typeof(IHostEnvironment) }, parmTypes); if (Utils.Size(parmTypes) == 0 && (getter = FindInstanceGetter(instType, loaderType)) != null) return true; - if (instType.IsAssignableFrom(loaderType) && (ctor = loaderType.GetConstructor(parmTypes ?? Type.EmptyTypes)) != null) + if (instType.IsAssignableFrom(loaderType) && (ctor = loaderType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, parmTypes ?? Type.EmptyTypes, null)) != null) return true; - if (instType.IsAssignableFrom(loaderType) && (ctor = loaderType.GetConstructor(parmTypesWithEnv ?? Type.EmptyTypes)) != null) + if (instType.IsAssignableFrom(loaderType) && (ctor = loaderType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, parmTypesWithEnv ?? Type.EmptyTypes, null)) != null) { requireEnvironment = true; return true; diff --git a/src/Microsoft.ML.FastTree/FastTreeClassification.cs b/src/Microsoft.ML.FastTree/FastTreeClassification.cs index 97de30bf75..97cc1c43f9 100644 --- a/src/Microsoft.ML.FastTree/FastTreeClassification.cs +++ b/src/Microsoft.ML.FastTree/FastTreeClassification.cs @@ -142,7 +142,7 @@ public FastTreeBinaryClassificationTrainer(IHostEnvironment env, string labelCol /// /// Initializes a new instance of by using the legacy class. /// - public FastTreeBinaryClassificationTrainer(IHostEnvironment env, Arguments args) + internal FastTreeBinaryClassificationTrainer(IHostEnvironment env, Arguments args) : base(env, args, MakeLabelColumn(args.LabelColumn)) { _outputColumns = new[] diff --git a/src/Microsoft.ML.FastTree/FastTreeRanking.cs b/src/Microsoft.ML.FastTree/FastTreeRanking.cs index 4c36e6e4cc..90331c47b4 100644 --- a/src/Microsoft.ML.FastTree/FastTreeRanking.cs +++ b/src/Microsoft.ML.FastTree/FastTreeRanking.cs @@ -82,7 +82,7 @@ public FastTreeRankingTrainer(IHostEnvironment env, string labelColumn, string f /// /// Initializes a new instance of by using the legacy class. /// - public FastTreeRankingTrainer(IHostEnvironment env, Arguments args) + internal FastTreeRankingTrainer(IHostEnvironment env, Arguments args) : base(env, args, MakeLabelColumn(args.LabelColumn)) { _outputColumns = new[] diff --git a/src/Microsoft.ML.FastTree/FastTreeRegression.cs b/src/Microsoft.ML.FastTree/FastTreeRegression.cs index 3984582c61..717824b6f5 100644 --- a/src/Microsoft.ML.FastTree/FastTreeRegression.cs +++ b/src/Microsoft.ML.FastTree/FastTreeRegression.cs @@ -75,7 +75,7 @@ public FastTreeRegressionTrainer(IHostEnvironment env, string labelColumn, strin /// /// Initializes a new instance of by using the legacy class. /// - public FastTreeRegressionTrainer(IHostEnvironment env, Arguments args) + internal FastTreeRegressionTrainer(IHostEnvironment env, Arguments args) : base(env, args, MakeLabelColumn(args.LabelColumn)) { _outputColumns = new[] diff --git a/src/Microsoft.ML.FastTree/FastTreeTweedie.cs b/src/Microsoft.ML.FastTree/FastTreeTweedie.cs index 4511ab7f1d..eedbfe7389 100644 --- a/src/Microsoft.ML.FastTree/FastTreeTweedie.cs +++ b/src/Microsoft.ML.FastTree/FastTreeTweedie.cs @@ -67,7 +67,7 @@ public FastTreeTweedieTrainer(IHostEnvironment env, string labelColumn, string f /// /// Initializes a new instance of by using the legacy class. /// - public FastTreeTweedieTrainer(IHostEnvironment env, Arguments args) + internal FastTreeTweedieTrainer(IHostEnvironment env, Arguments args) : base(env, args, MakeLabelColumn(args.LabelColumn)) { Initialize(); diff --git a/src/Microsoft.ML.FastTree/GamClassification.cs b/src/Microsoft.ML.FastTree/GamClassification.cs index e8aad81d13..1448333764 100644 --- a/src/Microsoft.ML.FastTree/GamClassification.cs +++ b/src/Microsoft.ML.FastTree/GamClassification.cs @@ -46,7 +46,7 @@ public sealed class Arguments : ArgumentsBase public override PredictionKind PredictionKind => PredictionKind.BinaryClassification; private protected override bool NeedCalibration => true; - public BinaryClassificationGamTrainer(IHostEnvironment env, Arguments args) + internal BinaryClassificationGamTrainer(IHostEnvironment env, Arguments args) : base(env, args) { _sigmoidParameter = 1; diff --git a/src/Microsoft.ML.FastTree/GamRegression.cs b/src/Microsoft.ML.FastTree/GamRegression.cs index 9fe4610c8c..119e8c2a85 100644 --- a/src/Microsoft.ML.FastTree/GamRegression.cs +++ b/src/Microsoft.ML.FastTree/GamRegression.cs @@ -40,7 +40,7 @@ public partial class Arguments : ArgumentsBase public override PredictionKind PredictionKind => PredictionKind.Regression; - public RegressionGamTrainer(IHostEnvironment env, Arguments args) + internal RegressionGamTrainer(IHostEnvironment env, Arguments args) : base(env, args) { } internal override void CheckLabel(RoleMappedData data) diff --git a/src/Microsoft.ML.FastTree/RandomForestClassification.cs b/src/Microsoft.ML.FastTree/RandomForestClassification.cs index c5222d4e87..b5ba1f43e7 100644 --- a/src/Microsoft.ML.FastTree/RandomForestClassification.cs +++ b/src/Microsoft.ML.FastTree/RandomForestClassification.cs @@ -158,7 +158,7 @@ public FastForestClassification(IHostEnvironment env, string labelColumn, string /// /// Initializes a new instance of by using the legacy class. /// - public FastForestClassification(IHostEnvironment env, Arguments args) + internal FastForestClassification(IHostEnvironment env, Arguments args) : base(env, args, MakeLabelColumn(args.LabelColumn)) { _outputColumns = new[] diff --git a/src/Microsoft.ML.FastTree/RandomForestRegression.cs b/src/Microsoft.ML.FastTree/RandomForestRegression.cs index 510c3b0ec6..1261cd0e37 100644 --- a/src/Microsoft.ML.FastTree/RandomForestRegression.cs +++ b/src/Microsoft.ML.FastTree/RandomForestRegression.cs @@ -178,7 +178,7 @@ public FastForestRegression(IHostEnvironment env, string labelColumn, string fea /// /// Initializes a new instance of by using the legacy class. /// - public FastForestRegression(IHostEnvironment env, Arguments args) + internal FastForestRegression(IHostEnvironment env, Arguments args) : base(env, args, MakeLabelColumn(args.LabelColumn), true) { _outputColumns = new[] diff --git a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs index 9e7063cd70..74596e95f1 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs @@ -73,7 +73,7 @@ public sealed class Arguments : ArgumentsBase /// Developers should instantiate by supplying the trainer argument directly to the constructor /// using the other public constructor. /// - public Pkpd(IHostEnvironment env, Arguments args) + internal Pkpd(IHostEnvironment env, Arguments args) : base(env, args, LoadNameValue) { } diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs index 4941764c35..59199b3549 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs @@ -70,7 +70,7 @@ protected override SchemaShape.Column[] GetOutputColumnsCore(SchemaShape inputSc }; } - public SdcaMultiClassTrainer(IHostEnvironment env, Arguments args) + internal SdcaMultiClassTrainer(IHostEnvironment env, Arguments args) : this(env, args, args.FeatureColumn, args.LabelColumn) { } diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs index 4f6755e528..5148ca11ab 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs @@ -67,7 +67,7 @@ public SdcaRegressionTrainer(IHostEnvironment env, Arguments args, string featur }; } - public SdcaRegressionTrainer(IHostEnvironment env, Arguments args) + internal SdcaRegressionTrainer(IHostEnvironment env, Arguments args) : this(env, args, args.FeatureColumn, args.LabelColumn) { } diff --git a/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs b/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs index 70217d8afd..8b3d8333e0 100644 --- a/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs +++ b/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs @@ -122,7 +122,7 @@ public void TrainSentiment() }, text); // Train - var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments() { MaxIterations = 20 }); + var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments() { MaxIterations = 20 }, "Features", "Label"); var trainRoles = new RoleMappedData(trans, label: "Label", feature: "Features"); var predicted = trainer.Train(trainRoles); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/DecomposableTrainAndPredict.cs b/test/Microsoft.ML.Tests/Scenarios/Api/DecomposableTrainAndPredict.cs index e6a7b57944..0d20c937c3 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/DecomposableTrainAndPredict.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/DecomposableTrainAndPredict.cs @@ -30,7 +30,7 @@ void DecomposableTrainAndPredict() var loader = TextLoader.ReadFile(env, MakeIrisTextLoaderArgs(), new MultiFileSource(GetDataPath(TestDatasets.irisData.trainFilename))); var term = TermTransform.Create(env, loader, "Label"); var concat = new ConcatTransform(env, "Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth").Transform(term); - var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments { MaxIterations = 100, Shuffle = true, NumThreads = 1 }); + var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments { MaxIterations = 100, Shuffle = true, NumThreads = 1 }, "Features", "Label"); IDataView trainData = trainer.Info.WantCaching ? (IDataView)new CacheDataView(env, concat, prefetch: null) : concat; var trainRoles = new RoleMappedData(trainData, label: "Label", feature: "Features"); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs index 79b66e43bc..6e937ce238 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs @@ -30,7 +30,7 @@ void New_DecomposableTrainAndPredict() var loader = TextLoader.ReadFile(env, MakeIrisTextLoaderArgs(), new MultiFileSource(dataPath)); var term = TermTransform.Create(env, loader, "Label"); var concat = new ConcatTransform(env, "Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth").Transform(term); - var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments { MaxIterations = 100, Shuffle = true, NumThreads = 1 }); + var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments { MaxIterations = 100, Shuffle = true, NumThreads = 1 }, "Features", "Label"); IDataView trainData = trainer.Info.WantCaching ? (IDataView)new CacheDataView(env, concat, prefetch: null) : concat; var trainRoles = new RoleMappedData(trainData, label: "Label", feature: "Features"); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/Extensibility.cs b/test/Microsoft.ML.Tests/Scenarios/Api/Extensibility.cs index f893e5de47..f77dac19ba 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/Extensibility.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/Extensibility.cs @@ -35,7 +35,7 @@ void Extensibility() var concat = new ConcatTransform(env, "Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth") .Transform(term); - var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments { MaxIterations = 100, Shuffle = true, NumThreads = 1 }); + var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments { MaxIterations = 100, Shuffle = true, NumThreads = 1 }, "Features", "Label"); IDataView trainData = trainer.Info.WantCaching ? (IDataView)new CacheDataView(env, concat, prefetch: null) : concat; var trainRoles = new RoleMappedData(trainData, label: "Label", feature: "Features"); diff --git a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs index 4effd29e27..3e023e0ca0 100644 --- a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs +++ b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs @@ -46,7 +46,7 @@ public void TrainAndPredictIrisModelUsingDirectInstantiationTest() pipeline = NormalizeTransform.CreateMinMaxNormalizer(env, pipeline, "Features"); // Train - var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments() { NumThreads = 1 } ); + var trainer = new SdcaMultiClassTrainer(env, new SdcaMultiClassTrainer.Arguments() { NumThreads = 1 }, "Features", "Label"); // Explicity adding CacheDataView since caching is not working though trainer has 'Caching' On/Auto var cached = new CacheDataView(env, pipeline, prefetch: null);