Преобразование консольного приложения в ошибку приложения UWP ML.NET

Я пытаюсь преобразовать приложение ML.NET из win-консоли в UWP и не загружаю файлы в свой конвейер ML. Я получаю ошибку File Not Found.

вот мой код:

 public static double ProcessDataBtn_Click(float tempOPS)
    {
        double rpg = 0;

        var dataset = GetDataPathByDatasetName("OPSData.csv");
        var testDataset = GetDataPathByDatasetName("OPSData-test.csv");

        var pipeline = new LearningPipeline
        {
            new TextLoader(dataset).CreateFrom<OPSData>(useHeader: true, separator: ','),
            new ColumnConcatenator("Features", "OPS"),
            new GeneralizedAdditiveModelRegressor()
        };

        var model = pipeline.Train<OPSData, OPSPrediction>();

        model.WriteAsync(GetModelFilePath("model.zip"));

Вот код получения файла:

 public static string GetDataPathByDatasetName(string datasetName)
    {
        var appPath = Path.GetDirectoryName(Environment.GetCommandLineArgs().First());
        var parentDir = Directory.GetParent(appPath).Parent.Parent.Parent.Parent;
        var datasetPath = Path.Combine(parentDir.FullName, "datasets", datasetName);
        return datasetPath;
    }

    public static string GetModelFilePath(string fileName)
    {
        var appPath = Path.GetDirectoryName(Environment.GetCommandLineArgs().First());
        var parentDir = Directory.GetParent(appPath).Parent.Parent.Parent.Parent;
        var fileDir = Path.Combine(parentDir.FullName, "models");
        if (!Directory.Exists(fileDir))
        {
            Directory.CreateDirectory(fileDir);
        }
        var filePath = Path.Combine(parentDir.FullName, "models", fileName);
        return filePath;
    }

И вот мои объекты.

 public class OPSData
    {
        [Column("0")]
        public float OPS;

        [Column("1", name: "Label")]
        public float RunsPerGame;
    }

    public class OPSPrediction
    {
        [ColumnName("Score")]
        public float PredictedRPG;
    }

Я получаю сообщение об ошибке в следующей строке:

var model = pipe.Train();

1 ответ

Решение

Не тот ответ, на который вы надеялись, но это известная ошибка в новых версиях ML.NET: https://github.com/dotnet/corefx/issues/33434

В качестве обходного пути для этой ошибки вам придется остаться с версией 0.6.0, пока эта проблема не будет устранена.

К сожалению, есть другая ошибка, с которой вы, вероятно, столкнетесь, если попытаетесь выпустить приложение через Microsoft Store: https://github.com/dotnet/machinelearning/issues/1736 (вы увидите ошибку в сборках выпуска, а не в отладочных сборках)

Другие вопросы по тегам