/// <summary> /// Initializes a new instance of <see cref="SymSgdClassificationTrainer"/> /// </summary> internal SymSgdClassificationTrainer(IHostEnvironment env, Options options) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(options.FeatureColumn), TrainerUtils.MakeBoolScalarLabel(options.LabelColumn)) { Host.CheckValue(options, nameof(options)); options.Check(Host); _options = options; Info = new TrainerInfo(supportIncrementalTrain: true); }
internal LbfgsTrainerBase(IHostEnvironment env, TArgs args, SchemaShape.Column labelColumn, float?l1Weight = null, float?l2Weight = null, float?optimizationTolerance = null, int?memorySize = null, bool?enforceNoNegativity = null) : base(Contracts.CheckRef(env, nameof(env)).Register(RegisterName), TrainerUtils.MakeR4VecFeature(args.FeatureColumn), labelColumn, TrainerUtils.MakeR4ScalarWeightColumn(args.WeightColumn)) { Host.CheckValue(args, nameof(args)); Args = args; Host.CheckUserArg(!Args.UseThreads || Args.NumThreads > 0 || Args.NumThreads == null, nameof(Args.NumThreads), "numThreads must be positive (or empty for default)"); Host.CheckUserArg(Args.L2Weight >= 0, nameof(Args.L2Weight), "Must be non-negative"); Host.CheckUserArg(Args.L1Weight >= 0, nameof(Args.L1Weight), "Must be non-negative"); Host.CheckUserArg(Args.OptTol > 0, nameof(Args.OptTol), "Must be positive"); Host.CheckUserArg(Args.MemorySize > 0, nameof(Args.MemorySize), "Must be positive"); Host.CheckUserArg(Args.MaxIterations > 0, nameof(Args.MaxIterations), "Must be positive"); Host.CheckUserArg(Args.SgdInitializationTolerance >= 0, nameof(Args.SgdInitializationTolerance), "Must be non-negative"); Host.CheckUserArg(Args.NumThreads == null || Args.NumThreads.Value >= 0, nameof(Args.NumThreads), "Must be non-negative"); Host.CheckParam(!(l2Weight < 0), nameof(l2Weight), "Must be non-negative, if provided."); Host.CheckParam(!(l1Weight < 0), nameof(l1Weight), "Must be non-negative, if provided"); Host.CheckParam(!(optimizationTolerance <= 0), nameof(optimizationTolerance), "Must be positive, if provided."); Host.CheckParam(!(memorySize <= 0), nameof(memorySize), "Must be positive, if provided."); // Review: Warn about the overriding behavior L2Weight = l2Weight ?? Args.L2Weight; L1Weight = l1Weight ?? Args.L1Weight; OptTol = optimizationTolerance ?? Args.OptTol; MemorySize = memorySize ?? Args.MemorySize; MaxIterations = Args.MaxIterations; SgdInitializationTolerance = Args.SgdInitializationTolerance; Quiet = Args.Quiet; InitWtsDiameter = Args.InitWtsDiameter; UseThreads = Args.UseThreads; NumThreads = Args.NumThreads; DenseOptimizer = Args.DenseOptimizer; EnforceNonNegativity = enforceNoNegativity ?? Args.EnforceNonNegativity; if (EnforceNonNegativity && ShowTrainingStats) { ShowTrainingStats = false; using (var ch = Host.Start("Initialization")) { ch.Warning("The training statistics cannot be computed with non-negativity constraint."); ch.Done(); } } ShowTrainingStats = false; _srcPredictor = default; }
protected OnlineLinearTrainer(OnlineLinearArguments args, IHostEnvironment env, string name, SchemaShape.Column label) : base(Contracts.CheckRef(env, nameof(env)).Register(name), TrainerUtils.MakeR4VecFeature(args.FeatureColumn), label, TrainerUtils.MakeR4ScalarWeightColumn(args.InitialWeights)) { Contracts.CheckValue(args, nameof(args)); Contracts.CheckUserArg(args.NumIterations > 0, nameof(args.NumIterations), UserErrorPositive); Contracts.CheckUserArg(args.InitWtsDiameter >= 0, nameof(args.InitWtsDiameter), UserErrorNonNegative); Contracts.CheckUserArg(args.StreamingCacheSize > 0, nameof(args.StreamingCacheSize), UserErrorPositive); Args = args; Name = name; // REVIEW: Caching could be false for one iteration, if we got around the whole shuffling issue. Info = new TrainerInfo(calibration: NeedCalibration, supportIncrementalTrain: true); }
/// <summary> /// Initializes a new instance of <see cref="SymSgdClassificationTrainer"/> /// </summary> /// <param name="env">The private instance of <see cref="IHostEnvironment"/>.</param> /// <param name="labelColumn">The name of the label column.</param> /// <param name="featureColumn">The name of the feature column.</param> /// <param name="advancedSettings">A delegate to apply all the advanced arguments to the algorithm.</param> public SymSgdClassificationTrainer(IHostEnvironment env, string featureColumn, string labelColumn, Action <Arguments> advancedSettings = null) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(featureColumn), TrainerUtils.MakeBoolScalarLabel(labelColumn)) { _args = new Arguments(); // Apply the advanced args, if the user supplied any. _args.Check(Host); advancedSettings?.Invoke(_args); _args.FeatureColumn = featureColumn; _args.LabelColumn = labelColumn; Info = new TrainerInfo(); }
private protected LightGbmTrainerBase(IHostEnvironment env, string name, SchemaShape.Column label, string featureColumn, string weightColumn, string groupIdColumn, int?numLeaves, int?minDataPerLeaf, double?learningRate, int numBoostRound, Action <LightGbmArguments> advancedSettings) : base(Contracts.CheckRef(env, nameof(env)).Register(name), TrainerUtils.MakeR4VecFeature(featureColumn), label, TrainerUtils.MakeR4ScalarWeightColumn(weightColumn), TrainerUtils.MakeU4ScalarColumn(groupIdColumn)) { Args = new LightGbmArguments(); Args.NumLeaves = numLeaves; Args.MinDataPerLeaf = minDataPerLeaf; Args.LearningRate = learningRate; Args.NumBoostRound = numBoostRound; //apply the advanced args, if the user supplied any advancedSettings?.Invoke(Args); Args.LabelColumn = label.Name; Args.FeatureColumn = featureColumn; if (weightColumn != null) { Args.WeightColumn = Optional <string> .Explicit(weightColumn); } if (groupIdColumn != null) { Args.GroupIdColumn = Optional <string> .Explicit(groupIdColumn); } InitParallelTraining(); }
private protected GamTrainerBase(IHostEnvironment env, TOptions options, string name, SchemaShape.Column label) : base(Contracts.CheckRef(env, nameof(env)).Register(name), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName), label, TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName)) { Contracts.CheckValue(env, nameof(env)); Host.CheckValue(options, nameof(options)); Host.CheckParam(options.LearningRate > 0, nameof(options.LearningRate), "Must be positive."); Host.CheckParam(options.NumberOfThreads == null || options.NumberOfThreads > 0, nameof(options.NumberOfThreads), "Must be positive."); Host.CheckParam(0 <= options.EntropyCoefficient && options.EntropyCoefficient <= 1, nameof(options.EntropyCoefficient), "Must be in [0, 1]."); Host.CheckParam(0 <= options.GainConfidenceLevel && options.GainConfidenceLevel < 1, nameof(options.GainConfidenceLevel), "Must be in [0, 1)."); Host.CheckParam(0 < options.MaximumBinCountPerFeature, nameof(options.MaximumBinCountPerFeature), "Must be positive."); Host.CheckParam(0 < options.NumberOfIterations, nameof(options.NumberOfIterations), "Must be positive."); Host.CheckParam(0 < options.MinimumExampleCountPerLeaf, nameof(options.MinimumExampleCountPerLeaf), "Must be positive."); GamTrainerOptions = options; Info = new TrainerInfo(normalization: false, calibration: NeedCalibration, caching: false, supportValid: true); _gainConfidenceInSquaredStandardDeviations = Math.Pow(ProbabilityFunctions.Probit(1 - (1 - GamTrainerOptions.GainConfidenceLevel) * 0.5), 2); _entropyCoefficient = GamTrainerOptions.EntropyCoefficient * 1e-6; InitializeThreads(); }
private protected GamTrainerBase(IHostEnvironment env, TArgs args, string name, SchemaShape.Column label) : base(Contracts.CheckRef(env, nameof(env)).Register(name), TrainerUtils.MakeR4VecFeature(args.FeatureColumn), label, TrainerUtils.MakeR4ScalarWeightColumn(args.WeightColumn)) { Contracts.CheckValue(env, nameof(env)); Host.CheckValue(args, nameof(args)); Host.CheckParam(args.LearningRates > 0, nameof(args.LearningRates), "Must be positive."); Host.CheckParam(args.NumThreads == null || args.NumThreads > 0, nameof(args.NumThreads), "Must be positive."); Host.CheckParam(0 <= args.EntropyCoefficient && args.EntropyCoefficient <= 1, nameof(args.EntropyCoefficient), "Must be in [0, 1]."); Host.CheckParam(0 <= args.GainConfidenceLevel && args.GainConfidenceLevel < 1, nameof(args.GainConfidenceLevel), "Must be in [0, 1)."); Host.CheckParam(0 < args.MaxBins, nameof(args.MaxBins), "Must be posittive."); Host.CheckParam(0 < args.NumIterations, nameof(args.NumIterations), "Must be positive."); Host.CheckParam(0 < args.MinDocuments, nameof(args.MinDocuments), "Must be positive."); Args = args; Info = new TrainerInfo(normalization: false, calibration: NeedCalibration, caching: false, supportValid: true); _gainConfidenceInSquaredStandardDeviations = Math.Pow(ProbabilityFunctions.Probit(1 - (1 - Args.GainConfidenceLevel) * 0.5), 2); _entropyCoefficient = Args.EntropyCoefficient * 1e-6; InitializeThreads(); }
private protected LightGbmTrainerBase(IHostEnvironment env, string name, SchemaShape.Column label, string featureColumn, string weightColumn = null, string groupIdColumn = null, Action <LightGbmArguments> advancedSettings = null) : base(Contracts.CheckRef(env, nameof(env)).Register(name), TrainerUtils.MakeR4VecFeature(featureColumn), label, TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { Args = new LightGbmArguments(); //apply the advanced args, if the user supplied any advancedSettings?.Invoke(Args); Args.LabelColumn = label.Name; Args.FeatureColumn = featureColumn; if (weightColumn != null) { Args.WeightColumn = weightColumn; } if (groupIdColumn != null) { Args.GroupIdColumn = groupIdColumn; } InitParallelTraining(); }
/// <summary> /// Initializes a new instance of <see cref="MultiClassNaiveBayesTrainer"/> /// </summary> internal MultiClassNaiveBayesTrainer(IHostEnvironment env, Arguments args) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadName), TrainerUtils.MakeR4VecFeature(args.FeatureColumn), TrainerUtils.MakeU4ScalarLabel(args.LabelColumn)) { Host.CheckValue(args, nameof(args)); }
public SdcaRegressionTrainer(IHostEnvironment env, Arguments args, string featureColumn, string labelColumn, string weightColumn = null) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), args, TrainerUtils.MakeR4VecFeature(featureColumn), TrainerUtils.MakeR4ScalarLabel(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { Host.CheckValue(labelColumn, nameof(labelColumn)); Host.CheckValue(featureColumn, nameof(featureColumn)); _loss = args.LossFunction.CreateComponent(env); Loss = _loss; _args = args; }