Ich habe eine ML.NET -Anwendung, in der ich nach der Kompilierung der Zeit für das Training dynamisch Schnittstellen -Idataview erstellen muss. Ich habe diesen Thread gefunden und konnte erfolgreich eine dynamische Schnittstelle für den Trainingsdatensatz erstellen und dann ein Modell trainieren. Mein
Problem kommt, wenn ich versuche, dieselbe Schnittstelle zu verwenden, um eine Vorhersage mit diesem geschulten Modell zu erstellen. Die Dokumente zeigen, dass Sie eine Vorhersage -Engine erstellen sollten, in der Sie sowohl die Eingangs- als auch die Ausgangsklassentypen definieren müssen, um die Engine zu erstellen. So etwas wie: < /p>
Code: Select all
mlContext.Model.CreatePredictionEngine(ITransformer, DataViewSchema)
wobei
tsrc und
tdst Klassentypen sind Zeit kompilieren. Mein
Problem ist, dass ich die Struktur des Eingabetyps zur Kompilierungszeit nicht kenne und eine dynamische Schnittstelle für die Eingabedatenquelle erstellen muss. Das Output -Class -Objekt kann definiert werden, da die Parameter bekannt sind, aber ich bin mir nicht sicher, wie ich mit einem dynamischen Eingang fortfahren kann. < /P>
Ich dachte, ich könnte vielleicht versuchen, etwas wie zu verwenden GettType () auf der Schnittstelle, aber es heißt, dass "implizit typische Variablen nicht mehrere Deklaratoren haben können". Mein vereinfachtes Beispiel sieht so aus: < /p>
Code: Select all
public class ModelOutput
{
public string PredictedLabel { get; set; }
public float[] Score { get; set; }
}
public class MakePrediction
{
protected void Solve(IDataView data, ITransformer model)
{
var mlContext = new MLContext();
var engine = mlContext.Model.CreatePredictionEngine(model, data.Schema);
}
}