ML.NET 1.4 發布,跨平台機器學習框架

←手機掃碼閱讀     admin @ 2019-11-08 , reply:0

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 培訓中實現這些新特性的:

DNN stack

圖像分類功能最初是在 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)

Database Loader diagram

資料庫載入器允許將資料庫中的數據載入到 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 and MLNET logos

現在可以在 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/





[admin ]

來源:OsChina
連結:https://www.oschina.net/news/111164/ml-net-1-4-released
ML.NET 1.4 發布,跨平台機器學習框架已經有19次圍觀

http://coctec.com/news/all/show-post-218904.html