标签: ml.net

在F#中运行ML.Net Iris演示时,我是否使用TextLoader错误?

我是F#/ .NET的新手,我正在尝试运行如何将介绍ML.Net演示转换为F#的接受答案中提供的F#示例使用ML.NET库,在Visual Studio上使用F#,使用Microsoft.ML(0.2.0).

在构建它时,我得到了错误 error FS0039: The type 'TextLoader' is not defined.

为了避免这种情况,我添加了这一行

open Microsoft.ML.Data
Run Code Online (Sandbox Code Playgroud)

来源.然而,然而,线

pipeline.Add(new TextLoader<IrisData>(dataPath,separator = ","))
Run Code Online (Sandbox Code Playgroud)

触发: error FS0033: The non-generic type 'Microsoft.ML.Data.TextLoader' does not expect any type arguments, but here is given 1 type argument(s)

改为:

pipeline.Add(new TextLoader(dataPath,separator = ","))
Run Code Online (Sandbox Code Playgroud)

收益率: error FS0495: The object constructor 'TextLoader' has no argument or settable return property 'separator'. The required signature is TextLoader(filePath: string) : TextLoader.

改为:

pipeline.Add(new TextLoader(dataPath))
Run Code Online (Sandbox Code Playgroud)

使构建成功,但代码在运行时失败 ArgumentOutOfRangeException: Column …

f# ml.net

5
推荐指数
1
解决办法
484
查看次数

如何使用 ML.NET 预测多列

我正在尝试创建一个应用程序,它根据用户的生活方式和药物的限制来预测服药的时间。
我的意思是:

我从患者那里得到的信息包括:
• 他/她吃他/她的饭菜的次数和时间
• 他/她什么时候醒来和入睡
• 他/她必须服用多少药片


从药物的限制来看:
• 药物是否应空腹食用
• 药物是否应随餐或不随餐食用
• 患者是否需要在进餐和服药之间休息(尚未显示在下面的屏幕上) )
• 等

示例数据集:https :
//ibb.co/Gvry945

我应该使用什么类型的模型/力学/算法来预测服药时间?回归是正确的吗?我需要预测 1,2,3,4 有时是 5 列。

我根据以下内容编写了一个简单的代码:
https
://docs.microsoft.com/pl-pl/dotnet/machine-learning/tutorials/predict-prices 如何使用回归任务使用 ML.NET 预测多个标签?

它工作正常,我可以预测超过 1 列。但是,我的问题仍然是空白单元格。当我试图从该数据中预测某些内容时,它总是显示错误的值,并且只有在所有单元格都完成后才能正常工作。

那么,我应该将我的数据集分散到更少的数据集(所有单元格都完整)吗?例如:
https :
//ibb.co/m8HVPvb 当我只预测 TimeToTakeMedicine1


https://ibb.co/qNk9xQL
当我预测 TimeToTakeMedicine1 和 TimeToTakeMedicine2 时


https://ibb.co/GnRc1c0
当我预测 TimeToTakeMedicine1、TimeToTakeMedicine2、TimeToTakeMedicine3 等时。

有没有更简单更好的方法来解决这个问题?

预测 TimeToTakeMedicine1、TimeToTakeMedicine2、TimeToTakeMedicine3 的工作代码(为了简单起见,我去掉了 OnEmptyStomach、WithMeal 和 IsPossible)

using System;
using System.IO;
using Microsoft.ML;
using Microsoft.ML.Trainers;

namespace NextTry
{
    class Program
    {
        static readonly string _trainDataPath = Path.Combine(Environment.CurrentDirectory, …
Run Code Online (Sandbox Code Playgroud)

c# machine-learning ml.net

5
推荐指数
1
解决办法
1440
查看次数

ML.NET:如何使用新数据重新训练文本分类模型

总的来说,我对机器学习非常陌生,尤其是 Microsoft ML.NET。我想做的是为文本分类创建一个可重新训练的模型。假设我有一篇文章(用于训练)和一篇文章预测(用于分类):

public class Article
{
    public string Text { get; set; }
    public string Topic { get; set; }
}

public class ArticlePrediction
{
    public float[] Score { get; set; }
    public uint PredictedLabel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

根据可重新训练模型的文档此 GitHub 问题,我得出结论,我将需要两个管道 - 准备管道和训练管道。并为“准备好的”数据创建一个单独的中间模型,以便进行重新训练:

public class ArticlePrepared : Article
{
    [VectorType(???)]
    public float[] Features { get; set; }
    public uint Label { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

模型的实际训练是微不足道的:

public static void Train(MLContext ctx, IDataView data) …
Run Code Online (Sandbox Code Playgroud)

.net c# machine-learning ml.net

5
推荐指数
0
解决办法
1241
查看次数

无法加载 DLL 'tensorflow' 或其依赖项之一 (ML.NET)

我有一个用于图像分类的 .NET Core 3 应用程序,使用 Microsoft 的 ML.NET 框架。

在我的开发机器上,我可以运行代码并且一切正常。

但是,当我将它部署到我的登台服务器时,我在运行时收到此错误:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
     System.DllNotFoundException: Unable to load DLL 'tensorflow' or one of its dependencies: The specified module could not be found. (0x8007007E)
     at Tensorflow.c_api.TF_NewGraph()
     at Tensorflow.Graph..ctor()
     at Microsoft.ML.Transforms.Dnn.DnnUtils.LoadTFSession(IExceptionContext ectx, Byte[] modelBytes, String modelFile)
...
Run Code Online (Sandbox Code Playgroud)

我试过在部署过程中将 tensorflow.dll 复制到 bin 文件夹中;我试过构建为 x64、x86 或 AnyCPU。我已经验证包含 SciSharp.TensorFlow.Redist 和 Microsoft.ML.Tensorflow.Redist NuGet 包。到目前为止,一切都没有奏效。

知道为什么它找不到 DLL 文件,或者我如何让它工作?

c# dll tensorflow ml.net asp.net-core-3.0

5
推荐指数
4
解决办法
4424
查看次数

ML.NET 图像分类迁移学习可以从保存的模型 .zip 文件或检查点恢复吗?如何?

我正在使用 NuGet 包 Microsoft.ML (1.4.0) 和 SciSharp.TensorFlow.Redist (1.15.0)

初始训练和保存模型工作正常

var options = new Microsoft.ML.Vision.ImageClassificationTrainer.Options()
{
    FeatureColumnName = "Image",
    LabelColumnName = "LabelAsKey",
    Arch = Microsoft.ML.Vision.ImageClassificationTrainer.Architecture.InceptionV3,
    Epoch = 50,
    BatchSize = 10,
    LearningRate = 0.01f,
    MetricsCallback = (metrics) => Console.WriteLine(metrics),
    ValidationSet = testDataView
};

var pipeline = mlContext.MulticlassClassification.Trainers.ImageClassification(options)
        .Append(mlContext.Transforms.Conversion.MapKeyToValue(
            outputColumnName: "PredictedLabel", 
            inputColumnName: "PredictedLabel"));


ITransformer trainedModel = pipeline.Fit(trainDataView);

mlContext.Model.Save(trainedModel, trainDataView.Schema, "C:/Temp/model.zip")
Run Code Online (Sandbox Code Playgroud)

并使用模型进行预测工作正常

var loadModel = mlContext.Model.Load("C/Temp/Model.zip", out var modelInputSchema)
var PredictionEngine = mlContext.Model.CreatePredictionEngine<InMemoryImageData, ImagePrediction>(loadModel);

prediction = PredictionEngine.Predict(image);
Run Code Online (Sandbox Code Playgroud)

但是,如果我想继续用更多图像训练 model.zip 文件而不从头开始重新训练基线模型,我该怎么做?

有没有办法可以.Fit()再次调用使用加载的模型?

c# machine-learning tensorflow transfer-learning ml.net

5
推荐指数
1
解决办法
652
查看次数

Microsoft.ML 和 Xamarin

Microsoft.ML 在 Xamarin 中工作吗?

我关注了https://dotnet.microsoft.com/learn/ml-dotnet 上的许多教程和视频。简单教程(此处)列出了我遵循的核心流程(在 Xamarin 项目中),但我无法使用 iOS(或 Android)Xamarin 应用程序查看MLModel.zip从模型生成器生成的文件。它设置为“始终复制”。

我可以这样做,还是 Microsoft.ML 与 Xamarin(用于 ARM)不兼容?

ML NET 1.4 的发行说明(https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-4-global-availability-machine-learning-for-net/)表明它将作为 .NET 运行Core 3.0 等应该可用于 ARM 处理器,但我无法确认或否认 ML.NET 在 Xamarin 跨平台开发方面的状态。

c# ios xamarin ml.net microsoft.ml

5
推荐指数
1
解决办法
601
查看次数

使用 ML.NET 训练模型时在空字符串上使用占位符

我有一个关于训练 ML.NET 的问题,它可以预测一个名字是否是女性。可以使用如下管道训练模型:

var mlContext = new MLContext();
IDataView trainingDataView = mlContext.Data.LoadFromEnumerable(trainingData);
var dataPrepPipeline = mlContext
    .Transforms
    .Text
    .FeaturizeText("FirstNameFeaturized", "FirstName")
    .Append(mlContext.Transforms.Text.FeaturizeText("MiddleNameFeaturized", "MiddleName"))
    .Append(mlContext.Transforms.Text.FeaturizeText("LastNameFeaturized", "LastName"))
    .Append(mlContext.Transforms.Concatenate(
        "Features",
        "FirstNameFeaturized",
        "MiddleNameFeaturized",
        "LastNameFeaturized"))
    .Append(mlContext.Transforms.NormalizeMinMax("Features", "Features"))
    .AppendCacheCheckpoint(mlContext);

var prepPipeline = dataPrepPipeline.Fit(trainingDataView);
var preprocessedData = prepPipeline.Transform(trainingDataView);

var trainer = dataPrepPipeline.Append(mlContext
    .BinaryClassification
    .Trainers
    .AveragedPerceptron(labelColumnName: "IsFemale", numberOfIterations: 10, featureColumnName: "Features"));

ITransformer trainedModel = trainer.Fit(preprocessedData);
Run Code Online (Sandbox Code Playgroud)

trainingData从代码中遗漏了。该模型如下所示:

public class Person
{
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName …
Run Code Online (Sandbox Code Playgroud)

ml.net

5
推荐指数
1
解决办法
92
查看次数

ML.NET 显示哪个分数与哪个标签相关

使用 ML.Net,我使用分类器进行文本解释。预测有一个作为 float[] 的分数列和一个预测标签。这是因为最高分数与预测标签相关,但其他分数只是没有特定顺序的浮点数。我怎么知道哪个分数与哪个标签相关?我怎样才能看到权重第二高的标签是什么?

例如,我得到这个: 0.00005009 0.00893076 0.1274763 0.6209787 0.2425644

0.6 是我预测的标签,但我还需要查看 0.24 是哪个标签,这样我才能明白为什么它会被混淆。

标签是诸如“Greeting”或“Joke”之类的文本字符串,它们在管道中被字典化,所以也许这就是为什么它们的顺序不正确的原因?

ML.Net 有没有办法将两者联系在一起?显示哪个分数与哪个标签相关?

c# artificial-intelligence ml.net

4
推荐指数
2
解决办法
1282
查看次数

使用 keras 保存的 ML.NET 加载模型

我有一个用 Keras 用 Python 实现的神经网络。一旦我训练了它,我就导出了模型,我得到了两个文件:model.js 和 model.h5。现在我想在 .NET 项目中实时分类,我想使用经过训练的神经网络。

在 ML.NET 中有没有办法将模型和用 python 导出的训练权重加载到模型对象中?

我在文档 [1] 中看到可以加载以前保存的模型,但显然存储在 .zip 中,我找不到格式(也许制作一个脚本,从 python 中获取模型并“翻译”它到 ML.NET 模型。

显然 hdf5 格式是标准 [2],有没有办法用 ML.NET 加载它?

[1] https://docs.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/sumption-model-ml-net

[2] https://support.hdfgroup.org/HDF5/doc1.6/UG/10_Datasets.html

.net python machine-learning keras ml.net

4
推荐指数
1
解决办法
5928
查看次数

如何在IDataView中查看数据

在 中ML.net,我想查看 中的数据IDataView以验证是否加载了正确的数据。我看不到任何可视化工具/调试工具来查看它们,就像我们以System.Data.DataTable表格形式查看一样

var mlContext = new MLContext();
IDataView trainData = mlContext.Data.LoadFromTextFile<TaxiTrip>(GetAbsolutePath("../../taxi-fare-test.csv"), hasHeader: true);
Run Code Online (Sandbox Code Playgroud)

ml.net

4
推荐指数
2
解决办法
3173
查看次数