Как загрузить сохраненную модель в ML.NET? - PullRequest
0 голосов
/ 14 марта 2019

Я использую ML.NET v0.11.0 для создания и сохранения модели.Процесс сохранения, кажется, работает, но мне трудно определить, как загрузить эту модель обратно для использования.

MLContext mlContext = new MLContext();
IDataView trainingDataView = mlContext.Data.LoadFromEnumerable(myData);

// Setup and train the model
var pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label")
        .Append(mlContext.Transforms.Concatenate("Features", "Field1", "Field2"))
        .AppendCacheCheckpoint(mlContext)
        .Append(mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumnName: "Label", featureColumnName: "Features"))
        .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

var m = pipeline.Fit(trainingDataView);
using (var stream = System.IO.File.Create("mymodel.zip"))
{
    // this works
    mlContext.Model.Save(m, stream);
}

TransformerChain<KeyToValueMappingTransformer> loadedModel;
using (var stream = System.IO.File.OpenRead("mymodel.zip"))
{
    // this will not work, as ITransformer cannot be cast to TransformerChain<KeyToValueMappingTransformer>
    loadedModel = (TransformerChain<KeyToValueMappingTransformer>)mlContext.Model.Load(stream);
}

1 Ответ

2 голосов
/ 14 марта 2019

Я не думаю, что вам нужно наложить нагрузку.Попробуйте снять его и посмотреть, работает ли он.Ниже работает для меня без проблем.

ITransformer _model;

using (var stream = System.IO.File.OpenRead(modelPath))
{
    _model = _context.Model.Load(stream);
}
...