ML.Net 重新训练现有模型,而不是训练新模型



我正在训练一个 ML.Net 机器学习模型。我可以训练它并从中预测,并从磁盘保存/加载它。但是我需要能够将其从磁盘上加载,然后重新训练它,或者添加新信息以随着时间的推移对其进行改进。

有谁知道这是否可能?我在 MS 文档中没有找到任何关于如何做到这一点的内容,但这对于 ML 来说是一个非常标准的东西,所以如果不可能,我会感到惊讶。

谢谢

如果您最终研究 ML.NET,我建议您查看 ML.NET 模型生成器 - 这里有一个非常简单的教程。基本上,您可以下载Visual Studio扩展,该扩展允许您使用GUI创建新模型。它甚至可以通过一堆机器学习算法运行您的数据,并评估要使用的最准确的算法。创建模型后,Visual Studio 扩展会生成用于创建模型的源代码,因此你可以准确查看它执行的操作并在需要时进行调整!

它创建的模型可以随时轻松重新训练。可以按照此处的Microsoft文档重新训练模型。您需要做的就是加载它以前使用的模型和管道,然后通过它们运行一组新数据。然后,它将重新训练的模型保存回磁盘。

只是我在最初创建模型时将管道.zip文件保存到磁盘时发现的一个注释,以便在以后重新训练时更容易。

此功能存在于 ML.NET 中,但现有的LearningPipelineAPI无法实现。这将在新的 ML.NET API 中公开,可在此处找到启用此方案的示例。相关代码为:

// Train the first predictor.
var trainer = new LinearClassificationTrainer(env, new LinearClassificationTrainer.Arguments
{
NumThreads = 1
}, "Features", "Label");
var firstModel = trainer.Fit(trainData);
// Train the second predictor on the same data.
var secondTrainer = new AveragedPerceptronTrainer(env, new AveragedPerceptronTrainer.Arguments());
var trainRoles = new RoleMappedData(trainData, label: "Label", feature: "Features");
var finalModel = secondTrainer.Train(new TrainContext(trainRoles, initialPredictor: firstModel.Model));

这些 API 仍在不断变化,但也许这会有所帮助。这还不是官方 ML.NET 版本的一部分,因此需要从此处获取 NuGet 或生成存储库。

注意:我是 ML.NET 团队的一员。

相关内容

  • 没有找到相关文章

最新更新