В настоящее время я пытаюсь динамически изменить значения Tsrc и Tdest в MlContext.Model.CreatePredictionEngine <> (ITransformer); в ML.net. Таким образом, вместо того, чтобы иметь класс для структуры данных (Tsrc) и класс для предсказания (Tdesc) в коде, могу ли я каким-то образом динамически добавлять классы, возможно, с отражением?
Я попытался загрузить объект с помощью JsonConvert.deseralize () и получить тип этого объекта - Tsrc и Tdest.
ITransformer loadedModel = mlContext.Model.Load(modelPath, out var schema);
List<DataViewSchema.Column?> columnData = new List<DataViewSchema.Column?>();
foreach (string col in columns)
{
DataViewSchema.Column? sch = schema.GetColumnOrNull(col);
columnData.Add(sch);
}
object obj_data = JsonConvert.DeserializeObject(str_data_one);
object obj_prediction = JsonConvert.DeserializeObject(str_data_two);
//var prediction = mlContext.Model.CreatePredictionEngine<IrisData, IrisPrediction>(loadedModel).Predict();
var prediction = mlContext.Model.CreatePredictionEngine<>(loadedModel).predict();
редактировать:
Tsrc и Tdest являются фактическими классами, а не экземплярами класса или метода. пример в закомментированном коде есть IrisData и IrisPrediction, это был код каждого класса:
public class IrisData
{
[LoadColumn(0)]
public float SepalLength;
[LoadColumn(1)]
public float SepalWidth;
[LoadColumn(2)]
public float PetalLength;
[LoadColumn(3)]
public float PetalWidth;
[LoadColumn(4)]
public string Label;
}
public class IrisPrediction
{
[ColumnName("PredictedLabel")]
public string PredictedLabels;
}
как бы я построил классы выше в режиме реального времени программы, используя отражение и добавив его в Tsrc и Tdest?