internal SdcaRegressionTrainer(IHostEnvironment env, Options options, string featureColumn, string labelColumn, string weightColumn = null) : base(env, options, TrainerUtils.MakeR4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { Host.CheckValue(labelColumn, nameof(labelColumn)); Host.CheckValue(featureColumn, nameof(featureColumn)); _loss = options.LossFunction.CreateComponent(env); Loss = _loss; }
/// <summary> /// Initializes a new instance of <see cref="OrdinaryLeastSquaresRegressionTrainer"/> /// </summary> internal OrdinaryLeastSquaresRegressionTrainer(IHostEnvironment env, Options options) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName), TrainerUtils.MakeR4ScalarColumn(options.LabelColumnName), TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName)) { Host.CheckValue(options, nameof(options)); Host.CheckUserArg(options.L2Weight >= 0, nameof(options.L2Weight), "L2 regularization term cannot be negative"); _l2Weight = options.L2Weight; _perParameterSignificance = options.PerParameterSignificance; }
/// <summary> /// Initializes a new instance of <see cref="OlsTrainer"/> /// </summary> internal OlsTrainer(IHostEnvironment env, Options options) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName), TrainerUtils.MakeR4ScalarColumn(options.LabelColumnName), TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName)) { Host.CheckValue(options, nameof(options)); Host.CheckUserArg(options.L2Regularization >= 0, nameof(options.L2Regularization), "L2 regularization term cannot be negative"); _l2Weight = options.L2Regularization; _perParameterSignificance = options.CalculateStatistics; }
internal LbfgsTrainerBase(IHostEnvironment env, TOptions options, SchemaShape.Column labelColumn, Action <TOptions> advancedSettings = null) : base(Contracts.CheckRef(env, nameof(env)).Register(RegisterName), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName), labelColumn, TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName)) { Host.CheckValue(options, nameof(options)); LbfgsTrainerOptions = options; // Apply the advanced args, if the user supplied any. advancedSettings?.Invoke(options); options.FeatureColumnName = FeatureColumn.Name; options.LabelColumnName = LabelColumn.Name; options.ExampleWeightColumnName = WeightColumn.Name; Host.CheckUserArg(!LbfgsTrainerOptions.UseThreads || LbfgsTrainerOptions.NumberOfThreads > 0 || LbfgsTrainerOptions.NumberOfThreads == null, nameof(LbfgsTrainerOptions.NumberOfThreads), "Must be positive (or empty for default)"); Host.CheckUserArg(LbfgsTrainerOptions.L2Regularization >= 0, nameof(LbfgsTrainerOptions.L2Regularization), "Must be non-negative"); Host.CheckUserArg(LbfgsTrainerOptions.L1Regularization >= 0, nameof(LbfgsTrainerOptions.L1Regularization), "Must be non-negative"); Host.CheckUserArg(LbfgsTrainerOptions.OptmizationTolerance > 0, nameof(LbfgsTrainerOptions.OptmizationTolerance), "Must be positive"); Host.CheckUserArg(LbfgsTrainerOptions.IterationsToRemember > 0, nameof(LbfgsTrainerOptions.IterationsToRemember), "Must be positive"); Host.CheckUserArg(LbfgsTrainerOptions.NumberOfIterations > 0, nameof(LbfgsTrainerOptions.NumberOfIterations), "Must be positive"); Host.CheckUserArg(LbfgsTrainerOptions.StochasticGradientDescentInitilaizationTolerance >= 0, nameof(LbfgsTrainerOptions.StochasticGradientDescentInitilaizationTolerance), "Must be non-negative"); Host.CheckUserArg(LbfgsTrainerOptions.NumberOfThreads == null || LbfgsTrainerOptions.NumberOfThreads.Value >= 0, nameof(LbfgsTrainerOptions.NumberOfThreads), "Must be non-negative"); Host.CheckParam(!(LbfgsTrainerOptions.L2Regularization < 0), nameof(LbfgsTrainerOptions.L2Regularization), "Must be non-negative, if provided."); Host.CheckParam(!(LbfgsTrainerOptions.L1Regularization < 0), nameof(LbfgsTrainerOptions.L1Regularization), "Must be non-negative, if provided"); Host.CheckParam(!(LbfgsTrainerOptions.OptmizationTolerance <= 0), nameof(LbfgsTrainerOptions.OptmizationTolerance), "Must be positive, if provided."); Host.CheckParam(!(LbfgsTrainerOptions.IterationsToRemember <= 0), nameof(LbfgsTrainerOptions.IterationsToRemember), "Must be positive, if provided."); L2Weight = LbfgsTrainerOptions.L2Regularization; L1Weight = LbfgsTrainerOptions.L1Regularization; OptTol = LbfgsTrainerOptions.OptmizationTolerance; MemorySize = LbfgsTrainerOptions.IterationsToRemember; MaxIterations = LbfgsTrainerOptions.NumberOfIterations; SgdInitializationTolerance = LbfgsTrainerOptions.StochasticGradientDescentInitilaizationTolerance; Quiet = LbfgsTrainerOptions.Quiet; InitWtsDiameter = LbfgsTrainerOptions.InitialWeightsDiameter; UseThreads = LbfgsTrainerOptions.UseThreads; NumThreads = LbfgsTrainerOptions.NumberOfThreads; DenseOptimizer = LbfgsTrainerOptions.DenseOptimizer; EnforceNonNegativity = LbfgsTrainerOptions.EnforceNonNegativity; if (EnforceNonNegativity && ShowTrainingStats) { ShowTrainingStats = false; using (var ch = Host.Start("Initialization")) { ch.Warning("The training statistics cannot be computed with non-negativity constraint."); } } ShowTrainingStats = false; _srcPredictor = default; }
internal LbfgsTrainerBase(IHostEnvironment env, TArgs args, SchemaShape.Column labelColumn, Action <TArgs> advancedSettings = 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; // Apply the advanced args, if the user supplied any. advancedSettings?.Invoke(args); args.FeatureColumn = FeatureColumn.Name; args.LabelColumn = LabelColumn.Name; args.WeightColumn = WeightColumn.Name; 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(!(Args.L2Weight < 0), nameof(Args.L2Weight), "Must be non-negative, if provided."); Host.CheckParam(!(Args.L1Weight < 0), nameof(Args.L1Weight), "Must be non-negative, if provided"); Host.CheckParam(!(Args.OptTol <= 0), nameof(Args.OptTol), "Must be positive, if provided."); Host.CheckParam(!(Args.MemorySize <= 0), nameof(Args.MemorySize), "Must be positive, if provided."); L2Weight = Args.L2Weight; L1Weight = Args.L1Weight; OptTol = Args.OptTol; 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 = 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."); } } ShowTrainingStats = false; _srcPredictor = default; }
internal SdcaMulticlassClassificationTrainerBase(IHostEnvironment env, MulticlassOptions options, string featureColumn, string labelColumn, string weightColumn = null) : base(env, options, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { Host.CheckValue(labelColumn, nameof(labelColumn)); Host.CheckValue(featureColumn, nameof(featureColumn)); _loss = options.InternalLoss ?? options.LossFunctionFactory.CreateComponent(env); Loss = _loss; }
internal SdcaMultiClassTrainer(IHostEnvironment env, Arguments args, string featureColumn, string labelColumn, string weightColumn = null) : base(env, args, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { Host.CheckValue(labelColumn, nameof(labelColumn)); Host.CheckValue(featureColumn, nameof(featureColumn)); _loss = args.LossFunction.CreateComponent(env); Loss = _loss; }
internal LdSvmTrainer(IHostEnvironment env, Options options) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName), TrainerUtils.MakeBoolScalarLabel(options.LabelColumnName), TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName)) { Host.CheckValue(options, nameof(options)); CheckOptions(Host, options); _options = options; }
/// <summary> /// Initializes a new instance of <see cref="SdcaMultiClassTrainer"/> /// </summary> /// <param name="env">The environment to use.</param> /// <param name="labelColumn">The label, or dependent variable.</param> /// <param name="featureColumn">The features, or independent variables.</param> /// <param name="weights">The optional example weights.</param> /// <param name="loss">The custom loss.</param> /// <param name="l2Const">The L2 regularization hyperparameter.</param> /// <param name="l1Threshold">The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model.</param> /// <param name="maxIterations">The maximum number of passes to perform over the data.</param> internal SdcaMultiClassTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, ISupportSdcaClassificationLoss loss = null, float?l2Const = null, float?l1Threshold = null, int?maxIterations = null) : base(env, featureColumn, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weights), l2Const, l1Threshold, maxIterations) { Host.CheckNonEmpty(featureColumn, nameof(featureColumn)); Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); _loss = loss ?? SdcaTrainerOptions.LossFunction.CreateComponent(env); Loss = _loss; }
/// <summary> /// Initializes a new instance of <see cref="SdcaRegressionTrainer"/> /// </summary> /// <param name="env">The environment to use.</param> /// <param name="labelColumn">The label, or dependent variable.</param> /// <param name="featureColumn">The features, or independent variables.</param> /// <param name="weights">The optional example weights.</param> /// <param name="loss">The custom loss.</param> /// <param name="l2Const">The L2 regularization hyperparameter.</param> /// <param name="l1Threshold">The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model.</param> /// <param name="maxIterations">The maximum number of passes to perform over the data.</param> /// <param name="advancedSettings">A delegate to set more settings. /// The settings here will override the ones provided in the direct method signature, /// if both are present and have different values. /// The columns names, however need to be provided directly, not through the <paramref name="advancedSettings"/>.</param> public SdcaRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, ISupportSdcaRegressionLoss loss = null, float?l2Const = null, float?l1Threshold = null, int?maxIterations = null, Action <Arguments> advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeR4ScalarLabel(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weights), advancedSettings, l2Const, l1Threshold, maxIterations) { Host.CheckNonEmpty(featureColumn, nameof(featureColumn)); Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); _loss = loss ?? Args.LossFunction.CreateComponent(env); Loss = _loss; }
private RandomizedPcaTrainer(IHostEnvironment env, Options options, string featureColumnName, string exampleWeightColumnName, int rank = 20, int oversampling = 20, bool center = true, int?seed = null) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(featureColumnName), default, TrainerUtils.MakeR4ScalarWeightColumn(exampleWeightColumnName)) { // if the args are not null, we got here from maml, and the internal ctor. if (options != null) { _rank = options.Rank; _ensureZeroMean = options.EnsureZeroMean; _oversampling = options.Oversampling; _seed = options.Seed ?? Host.Rand.Next(); } else { _rank = rank; _ensureZeroMean = center; _oversampling = oversampling; _seed = seed ?? Host.Rand.Next(); } _featureColumn = featureColumnName; Host.CheckUserArg(_rank > 0, nameof(_rank), "Rank must be positive"); Host.CheckUserArg(_oversampling >= 0, nameof(_oversampling), "Oversampling must be non-negative"); }