如何从已训练的现有MLContext实例中获取对应ITransformer对象
解答
MLContext 是 ML.NET 的运行时上下文入口,本身不会存储训练生成的 ITransformer 模型对象,没有内置方法可以直接从已有的 MLContext 实例中提取对应的训练好的模型。
训练流程中,ITransformer 对象是训练管道调用 Fit() 方法完成训练时的返回值,训练完成后必须手动留存这个返回值,才能后续用于创建预测引擎、保存模型操作,示例代码如下:
var mlContext = new MLContext(); // 构建你的训练管道 var trainingPipeline = mlContext.Transforms.Concatenate("Features", /*你的特征列配置*/) .Append(mlContext.BinaryClassification.Trainers/*你的训练器配置*/); // 执行训练,Fit方法返回值就是训练好的ITransformer对象,需要手动持有 ITransformer trainedMlModel = trainingPipeline.Fit(trainingData); // 用持有的trainedMlModel创建预测引擎即可 return mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(trainedMlModel);
注意:如果你训练完成后没有留存
Fit()返回的ITransformer对象,仅保留了MLContext实例,是无法找回对应模型的。如果之前已经调用mlContext.Model.Save()将模型持久化到过本地文件,可以通过你问题中给出的Load方法重新加载得到ITransformer实例。
内容的提问来源于stack exchange,提问作者Patrick McHargue
相关产品推荐
相关产品推荐

