问题描述
我们有一个场景,我们需要使用机器学习算法来预测一个值。由于一些问题,我们想在 ML.NET 中执行此操作。
我们在一个项目中尝试了 AutoML,并用近 8 万条数据记录对其进行了训练。我们训练数据超过 30 分钟。 csv 文件为 22MB。数据如下所示。
------------------------------------
Col1 col2
------------------------------------
Some text 21
Some other text 2
我们有一些上述类型的历史数据。我们需要从 col1 文本中预测 col2。 即使列是整数,它也以小数形式预测结果。
有人在 python 中创建了一个模型,它现在按预期工作。我们想在 ML.NET 中使用它。
我们是否有可能在 ML.NET 中使用从 Python 创建的模型?
解决方法
有几种方法,具体取决于它是 Tensorflow 模型还是来自其他框架。
如果是 Tensorflow 模型,则可以使用 Microsoft.ML.TensorFlow
包中的 mlContext.Model.LoadTensorFlowModel
方法直接加载。
var tensorFlowModel = context.Model.LoadTensorFlowModel(_modelPath);
如果是任何其他模型,例如 Keras 或 PyTorch 模型,则可以使用 ONNX 转换器包之一将其转换为 ONNX 格式。这是list如何使用多种不同格式执行此操作的方法。
拥有 ONNX 模型后,您可以使用 Microsoft.ML.OnnxTransformer
包,该包将为您提供 ApplyOnnxModel
方法。
mlContext.Transforms.ApplyOnnxModel(modelFile: "Model File",outputColumnName: "Output column name",inputColumnName: "Input column name")