1

NET GUI 工具来训练模型。该模型适用于 C# 应用程序,但我希望它采用 ONNX 格式。我找到了在模型格式之间进行转换的工具,但找不到 ML.NET 生成格式的任何东西。显然这是一些 zip 文件,我对此一无所知。有谁知道转换为 ONNX 的工具。谢谢

微软的 ML.Net 模型生成器生成代码


    // Load Data
                IDataView trainingDataView = mlContext.Data.LoadFromTextFile<ModelInput>(
                                                path: TRAIN_DATA_FILEPATH,
                                                hasHeader: true,
                                                separatorChar: ',',
                                                allowQuoting: true,
                                                allowSparse: false);
    
                // Build training pipeline
                IEstimator<ITransformer> trainingPipeline = BuildTrainingPipeline(mlContext);
    
                // Train Model
                ITransformer mlModel = TrainModel(mlContext, trainingDataView, trainingPipeline);
    
                // Evaluate quality of Model
                Evaluate(mlContext, trainingDataView, trainingPipeline);
    
                // Save model
                SaveModel       (mlContext, mlModel, MODEL_FILE, trainingDataView.Schema);
    
    
                var path = GetAbsolutePath(MODEL_FILE);
                path = new FileInfo(path).Directory.FullName;
                path = Path.Combine(path, "mymodel.onnx");
    
                using (var onnx = File.Open(path, FileMode.OpenOrCreate))
                {
                    mlContext.Model.ConvertToOnnx(mlModel, trainingDataView, onnx);
                }

var path = GetAbsolutePath(MODEL_FILE);
                path = new FileInfo(path).Directory.FullName;
                path = Path.Combine(path, "mymodel.onnx");
    
                using (var onnx = File.Open(path, FileMode.OpenOrCreate))
                {
                    mlContext.Model.ConvertToOnnx(mlModel, trainingDataView, onnx);
                }

我已经修改了。我正在获取 onnx 文件,但我无法运行它(推理)。同样,我尝试使用 WinML Dashboard 打开它,但它也无法运行生成的 onnx。我想知道它可能是它生成的 onnx 版本吗?该模型是简单回归,所有输入浮点数并输出一个浮点数。

4

1 回答 1

1

使用Microsoft.ML.OnnxConverter NuGet 包。像这样的东西:

var mlContext = new MLContext();

...

IDataView trainingData = mlContext.Data.LoadFromEnumerable(inputData);

var pipeline = mlContext.Transforms.Concatenate("Features", ... )
    .Append(...));

var model = pipeline.Fit(trainingData);

using (var onnx = File.Open("mymodel.onnx", FileMode.OpenOrCreate))
{
    mlContext.Model.ConvertToOnnx(model, trainingData, onnx);
}

于 2021-01-22T19:13:10.977 回答