LearningPipelineExtensions.WithOnFitDelegate<TTransformer> Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wenn sie eine Schätzung erhalten, geben Sie ein Umbruchobjekt zurück, das einen Delegaten aufruft, sobald Fit(IDataView) er aufgerufen wird. Es ist häufig wichtig, dass ein Schätzer Informationen darüber zurückgibt, was passt, weshalb die Fit(IDataView) Methode ein speziell typiertes Objekt zurückgibt, anstatt nur ein allgemeines ITransformerObjekt zurückzugeben. IEstimator<TTransformer> Gleichzeitig werden jedoch häufig Pipelines mit vielen Objekten gebildet, daher müssen wir möglicherweise eine Kette von Schätzern erstellen, über EstimatorChain<TLastTransformer> die der Schätzer, für den wir den Transformator erhalten möchten, irgendwo in dieser Kette begraben wird. Für dieses Szenario können wir über diese Methode eine Stellvertretung anfügen, die aufgerufen wird, sobald sie aufgerufen wird.
public static Microsoft.ML.IEstimator<TTransformer> WithOnFitDelegate<TTransformer> (this Microsoft.ML.IEstimator<TTransformer> estimator, Action<TTransformer> onFit) where TTransformer : class, Microsoft.ML.ITransformer;
static member WithOnFitDelegate : Microsoft.ML.IEstimator<'ransformer (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)> * Action<'ransformer (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)> -> Microsoft.ML.IEstimator<'ransformer (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)> (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)
<Extension()>
Public Function WithOnFitDelegate(Of TTransformer As {Class, ITransformer}) (estimator As IEstimator(Of TTransformer), onFit As Action(Of TTransformer)) As IEstimator(Of TTransformer)
Typparameter
- TTransformer
Der Typ der ITransformer zurückgegebenen Daten estimator
Parameter
- estimator
- IEstimator<TTransformer>
Der Schätzer, der umgebrochen werden soll
- onFit
- Action<TTransformer>
Die Stellvertretung, die mit den resultierenden TTransformer
Instanzen aufgerufen wird, wird einmal Fit(IDataView) aufgerufen. Da Fit(IDataView) diese Stellvertretung möglicherweise mehrmals aufgerufen wird, wird diese Stellvertretung auch mehrmals aufgerufen.
Gibt zurück
Eine Umbruchstimme, die die angegebene Stellvertretung aufruft, wenn sie passt
Beispiele
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Transforms;
using static Microsoft.ML.Transforms.NormalizingTransformer;
namespace Samples.Dynamic
{
public class WithOnFitDelegate
{
public static void Example()
{
// Create a new ML context, for ML.NET operations. It can be used for
// exception tracking and logging, as well as the source of randomness.
var mlContext = new MLContext();
var samples = new List<DataPoint>()
{
new DataPoint(){ Features = new float[4] { 8, 1, 3, 0},
Label = true },
new DataPoint(){ Features = new float[4] { 6, 2, 2, 0},
Label = true },
new DataPoint(){ Features = new float[4] { 4, 0, 1, 0},
Label = false },
new DataPoint(){ Features = new float[4] { 2,-1,-1, 1},
Label = false }
};
// Convert training data to IDataView, the general data type used in
// ML.NET.
var data = mlContext.Data.LoadFromEnumerable(samples);
// Create a pipeline to normalize the features and train a binary
// classifier. We use WithOnFitDelegate for the intermediate binning
// normalization step, so that we can inspect the properties of the
// normalizer after fitting.
NormalizingTransformer binningTransformer = null;
var pipeline =
mlContext.Transforms
.NormalizeBinning("Features", maximumBinCount: 3)
.WithOnFitDelegate(
fittedTransformer => binningTransformer = fittedTransformer)
.Append(mlContext.BinaryClassification.Trainers
.LbfgsLogisticRegression());
Console.WriteLine(binningTransformer == null);
// Expected Output:
// True
var model = pipeline.Fit(data);
// During fitting binningTransformer will get assigned a new value
Console.WriteLine(binningTransformer == null);
// Expected Output:
// False
// Inspect some of the properties of the binning transformer
var binningParam = binningTransformer.GetNormalizerModelParameters(0) as
BinNormalizerModelParameters<ImmutableArray<float>>;
for (int i = 0; i < binningParam.UpperBounds.Length; i++)
{
var upperBounds = string.Join(", ", binningParam.UpperBounds[i]);
Console.WriteLine(
$"Bin {i}: Density = {binningParam.Density[i]}, " +
$"Upper-bounds = {upperBounds}");
}
// Expected output:
// Bin 0: Density = 2, Upper-bounds = 3, 7, Infinity
// Bin 1: Density = 2, Upper-bounds = -0.5, 1.5, Infinity
// Bin 2: Density = 2, Upper-bounds = 0, 2.5, Infinity
// Bin 3: Density = 1, Upper-bounds = 0.5, Infinity
}
private class DataPoint
{
[VectorType(4)]
public float[] Features { get; set; }
public bool Label { get; set; }
}
}
}