Torch的使用被阻断了一下,继续看下其 ml.net2的例子
https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/MLNET2
https://gitee.com/mirrors_dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/MLNET2
文本分类
TextClassification
工程编译后,首先按照上篇【 https://www.cnblogs.com/2018/p/17915818.html 】将Torch的文件替换遍【库文件太大,可以在这下载
链接: https://pan.baidu.com/s/1h19SYCNcnVVaHA_s87KhDg?pwd=riub 提取码: riub 】
这个直接使用训练的模型 ReviewSentiment.zip
private static string MLNetModelPath = Path.GetFullPath("ReviewSentiment.zip");
var mlContext = new MLContext();
// (Optional) Use GPU
//mlContext.GpuDeviceId = 0;
//mlContext.FallbackToCpu = false;
ITransformer mlModel = mlContext.Model.Load(MLNetModelPath, out var _);
return mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(mlModel);
运行预测
using TextClassification;
var sampleData = new ReviewSentiment.ModelInput()
{
Col0 = @"Crust is not good.",
};
//Load model and predict output
var result = ReviewSentiment.Predict(sampleData);
// Print sentiment
Console.WriteLine($"Sentiment: {(result.PredictedLabel == 0 ? "Negative" : "Positive")}");
$ ./TextClassification.exe
Sentiment: Negative
文本分类Model Builder版本
Model Builder的概念
ML.NET 模型生成器是一个直观的图形化 Visual Studio 扩展,用于生成、训练和部署自定义机器学习模型。
模型生成器使用自动化的机器学习 (AutoML) 来探索不同的机器学习算法和设置,以帮助找到最合适的方案。
使用模型生成器不需要具备机器学习的专业知识。 只需要一些数据,和确定要解决的问题。 模型生成器会生成将模型添加到 .NET 应用程序的代码。
文本分类 API 由 TorchSharp 提供支持。TorchSharp 是一个 .NET 库,提供对 libtorch 的访问,libtorch 是支持 PyTorch 的库。TorchSharp 包含用于在 .NET 中从头开始训练神经网络的构建基块。然而,TorchSharp 组件是低级的,从头开始构建神经网络有一个陡峭的学习曲线。在 ML.NET 中,我们已将部分复杂性抽象到场景级别。【具体结构参考 https://www.cnblogs.com/2018/p/17915818.html】
在与 Microsoft Research 的直接合作中,我们采用了 NAS-BERT(通过神经架构搜索获得的 BERT 变体)的 TorchSharp 实现,并将其添加到 ML.NET 中。使用此模型的预训练版本,文本分类 API 使用数据来微调模型。
具体的例子中英文地址
https://learn.microsoft.com/zh-cn/dotnet/machine-learning/tutorials/sentiment-analysis-model-builder
https://gitee.com/mirrors_dotnet/machinelearning-samples/tree/main/samples/modelbuilder/TextClassification_Sentiment_Razor
具体的步骤是2个:
1 训练模型:
使用这个数据通过vs 2022内置的modelbuilder进行训练
https://raw.githubusercontent.com/dotnet/machinelearning/main/test/data/wikipedia-detox-250-line-data.tsv
训练后,可以自动生成如下的文件
- SentimentAnalysis.consumption.cs - 此文件包含 ModelInput 和 ModelOutput 架构,以及为使用模型生成的 Predict 函数。
- SentimentAnalysis.training.cs - 此文件包含 Model Builder 选择的训练管道(数据转换、训练器、训练器超参数)以训练模型。 你可以使用此管道重新训练模型。
- SentimentAnalysis.zip - 这是一个已序列化的 zip 文件,它表示经过训练的 ML.NET 模型。
2 使用模型
https://gitee.com/mirrors_dotnet/machinelearning-samples/tree/main/samples/modelbuilder/TextClassification_Sentiment_Razor/SentimentRazor
这个就是在 web中使用的例子
考虑Ml Context的线程安全问题,使用了线程池
WEB程序运行后界面