ML.Net保留现有模型而不是训练新模型

时间:2018-09-23 22:28:41

标签: c# .net ml.net

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

有人知道这是否可能吗?我没有在MS文档中找到有关该操作的任何信息,但这对于ML来说是很标准的事情,所以如果无法实现,我会感到惊讶。

谢谢

2 个答案:

答案 0 :(得分:6)

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

// 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官方发行版的一部分,因此您需要从here获取NuGet或构建here

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

答案 1 :(得分:1)

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

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

请注意,我最初在创建模型时通过将管道.zip文件保存到磁盘中发现,这使以后的重新训练变得更加容易。