我正在训练一个 ML.Net 机器学习模型。我可以训练它并从中预测,然后从磁盘保存/加载它。但是我需要能够从磁盘上加载它,然后重新训练它,或者添加新信息以随着时间的推移对其进行改进。
有谁知道这是否可能?我在 MS 文档中没有找到任何关于如何做到这一点的内容,但这对于 ML 来说是一件非常标准的事情,所以如果这不可能,我会感到惊讶。
谢谢
我正在训练一个 ML.Net 机器学习模型。我可以训练它并从中预测,然后从磁盘保存/加载它。但是我需要能够从磁盘上加载它,然后重新训练它,或者添加新信息以随着时间的推移对其进行改进。
有谁知道这是否可能?我在 MS 文档中没有找到任何关于如何做到这一点的内容,但这对于 ML 来说是一件非常标准的事情,所以如果这不可能,我会感到惊讶。
谢谢
如果您最终研究了 ML.NET,我建议您查看 ML.NET 模型生成器 - 这里有一个非常简单的教程。本质上,您可以下载一个 Visual Studio 扩展,它允许您使用 GUI 创建一个新模型。它甚至可以通过一系列机器学习算法运行您的数据,并评估最准确的算法。创建模型后,Visual Studio 扩展会生成用于创建模型的源代码,因此您可以准确查看它所做的事情并在需要时进行调整!
它创建的模型可以随时轻松地重新训练。您可以按照此处的 Microsoft 文档重新训练模型。您需要做的就是加载它之前使用的模型和管道,然后通过它们运行一组新数据。然后它将重新训练的模型保存回磁盘。
我在最初创建模型时通过将管道 .zip 文件保存到磁盘中发现了一个注释,这使得以后重新训练时变得更容易。
LearningPipeline
此功能存在于 ML.NET 中,但在现有API 中是不可能的。这将在新的 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或构建repo。
注意:我在 ML.NET 团队。