ML.NET 1.4 发布,跨平台机器学习框架
ML.NET 是一個面向 .NET 開發人員的開源和跨平臺機器學習框架,它包括 Model Builder 和 CLI(命令行接口),讓使用自動機器學習(AutoML)構建自定義機器學習模型變得更容易。1.4 版本已經發布了,以下是本次更新的一些亮點:
基于 GPU 支持的深度神經網絡圖像分類(GA)
在 .NET 中實現完整的 DNN 模型重新訓練和傳輸學習。例如,你可以通過使用自己的圖像從 ML.NET API 中本地培訓 TensorFlow 模型來創建自己的自定義圖像分類模型。ML.NET 的優點是使用了一個非常簡單的高級 API,只需使用幾行 C# 代碼就可以定義和訓練圖像分類模型。而在使用低級別 Tensorflow.NET 庫時,相同的操作則需要數百行代碼。
Tensorflow.NET 庫是一個開源的低級別 API 庫,該庫是開源 SciSharp 堆棧庫的一部分,它為 TensorFlow 提供 .NET 標準綁定。下面的堆棧圖顯示了 ML.NET 是如何在 DNN 培訓中實現這些新特性的:
圖像分類功能最初是在 v1.4 預覽版中引入的,在 GA 版本中添加了一下新功能:
在 Windows 和 Linux 上支持 GPU,GPU 支持是基于 NVIDIA CUDA
內存圖像預測:用內存中的圖像而不是文件路徑來做預測
當達到最佳精度時,它將停止訓練,并且不會隨著更多的訓練周期(EIPCHS)而進一步提高
在圖像分類器中添加其他支持的 DNN 體系結構:Inception V3、ResNet V2 101、Resnet V2 50?和 Mobilenet V2
下面的 API 代碼示例展示了如何輕松地訓練一個新的 TensorFlow 模型:
// Define model's pipeline with ImageClassification defaults (simplest way) var pipeline = mlContext.MulticlassClassification.Trainers.ImageClassification(featureColumnName: "Image",labelColumnName: "LabelAsKey",validationSet: testDataView).Append(mlContext.Transforms.Conversion.MapKeyToValue(outputColumnName: "PredictedLabel",inputColumnName: "PredictedLabel"));// Train the model ITransformer trainedModel = pipeline.Fit(trainDataView);Database Loader(GA)
數據庫加載器允許將數據庫中的數據加載到 IDataView 中,因此可以直接針對關系數據庫進行模型培訓。此加載程序支持 .NET Core 或 .NET Framework 中 System.Data 支持的任何關系數據庫提供程序,這意味著可以使用任何 RDBMS,如 SQL Server、Azure SQL、Oracle、SQLite、PostgreSQL、MySQL、Advanced 等。
這個新的 Database Loader 提供更加簡化的代碼實現,因為它從數據庫讀取數據并通過 IDataView 提供數據的方式是由 ML.NET 框架提供的,所以只需要指定數據庫連接字符串、DataSet 列的 SQL 語句以及加載數據時要使用的數據類。
下面是示例代碼,說明如何輕松地配置代碼,以便將數據直接從關系數據庫加載到 IDataView 中:
//Lines of code for loading data from a database into an IDataView for a later model training //... string connectionString = @"Data Source=YOUR_SERVER;Initial Catalog= YOUR_DATABASE;Integrated Security=True";string commandText = "SELECT * from SentimentDataset";DatabaseLoader loader = mlContext.Data.CreateDatabaseLoader(); DbProviderFactory providerFactory = DbProviderFactories.GetFactory("System.Data.SqlClient"); DatabaseSource dbSource = new DatabaseSource(providerFactory, connectionString, commandText);IDataView trainingDataView = loader.Load(dbSource);// ML.NET model training code using the training IDataView //...public class SentimentData {public string FeedbackText;public string Label; }當使用數據庫 ML.NET 進行培訓時也支持數據流,這意味著整個數據庫不需要裝入內存,它將根據需要從數據庫中讀取,從而可以處理非常大的數據庫(即 50 GB、100 GB 或更大的數據庫)。
可伸縮部署的預測引擎庫(GA)
當將 ML 模型部署到多線程和可伸縮的 .NET Core Web 應用程序和服務(例如 ASP .NET Core Web 應用程序、Web API 或 Azure 函數)中時,推薦使用PredictionEnginePool,不針對每個請求直接創建 PredictionEngine 對象,PredictionEnginePool 是 Microsoft.Extensions.MLNuGet 包的一部分。
增強?.NET Core 3.0(GA)
在 Jupyter notebooks 中使用 ML.NET
現在可以在 Jupyter notebooks 中運行任何 .NET 代碼(C#/F#),因此也可以在其中運行 ML.NET 代碼。
查看 DataView 中加載的類型數據:
繪制數據分布:
培訓 ML.NET 模型并記錄其培訓時間:
可在 notebook 中看到模型的質量指標,并將其記錄下來供以后審查:
Visua lStudio 中 Model Builder 的更新
Visual Studio 的 Model Builder Tool 已經更新,使用最新的 ML.NET GA 版本(1.4 GA),此外,它還包括新特性,例如 Visual Studio 中的可視化體驗,用于本地圖像分類模型訓練。
關于 ML.NET 的更多詳情,請見發布說明:
https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-4-global-availability-machine-learning-for-net/
總結
以上是生活随笔為你收集整理的ML.NET 1.4 发布,跨平台机器学习框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 「云」发展的怎么样了?
- 下一篇: 使用ASP.NET Core 3.x 构