#onnx #ml.net-model-builder
#onnx #ml.net-конструктор моделей
Вопрос:
Инструменты NET GUI для обучения модели. Модель отлично работает с приложением на C #, но я хочу иметь ее в формате ONNX. Я нашел инструменты, которые конвертируют между форматами моделей, но не смог найти ничего для ML.NET сгенерированный формат. По-видимому, это какой-то zip-файл, и больше я ничего об этом не знаю. кто-нибудь знает инструмент для преобразования в ONNX. Спасибо
Microsoft 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, которую он генерирует?
модель представляет собой простую регрессию со всеми входными числами с плавающей запятой и выводом одного числа с плавающей запятой.
Комментарии:
1. У вас есть решение вашей проблемы? У меня такая же проблема. Я хочу обучить модель с помощью конструктора моделей, а затем преобразовать ее в onnx, но пока безуспешно. Пакет Onnx converter не работает и выдает ошибку.
Ответ №1:
Используйте пакет NuGet Microsoft.ML.OnnxConverter. Что-то вроде этого:
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);
}