代码之家  ›  专栏  ›  技术社区  ›  Trey Balut

将控制台应用程序转换为UWP应用程序错误ML.NET

  •  1
  • Trey Balut  · 技术社区  · 7 年前

    我正在尝试将一个ML.NET应用程序从win控制台转换为UWP,并且我没有将文件加载到我的ML管道中。我收到一个文件未找到错误。

    这是我的密码:

     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模型=pipeline.Train();

    1 回复  |  直到 7 年前
        1
  •  1
  •   Stefan Wick MSFT    7 年前

    这不是您希望的答案,但这是一个已知的错误,它与较新版本的ML.NET有关: https://github.com/dotnet/corefx/issues/33434

    作为解决此错误的方法,您现在必须使用0.6.0版,直到解决此问题为止。

    不幸的是,如果您试图通过Microsoft Store发布应用程序,则可能会遇到另一个bug: https://github.com/dotnet/machinelearning/issues/1736 (您将在发布版本中看到错误,而不是在调试版本中)

    推荐文章