ML.NET 是面向.NET开发人员的开源和跨平台机器学习框架。 ML.NET  还包括Model Builder  (一个简单的UI工具)和  CLI  ,使用自动机器学习(AutoML)构建自定义机器学习(ML)模型变得非常容易。

.NET 开发人员使用  ML.NET,可以利用他们现有的工具和技能,为情感分析价格预测,销售预测预测图像分类等常见场景创建自定义机器学习模型,定制机器学习并注入其应用程序!微软在官方博客(https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-4-preview-and-model-builder-updates-machine-learning-for-net/)宣布了 ML.NET 1.4预览版模型生成器  和  CLI的更新。

这次更新有如下亮点:

ML.NET更新

ML.NET 1.4 Preview是一个向后兼容的版本,没有重大更改。除了此处:https://github.com/dotnet/machinelearning/blob/master/docs/release-notes/1.3.1/release-1.3.1.md#bug-fixes 描述的错误修复之外,在ML.NET 1.4预览版中,我们还发布了一些令人兴奋的新功能

数据库加载器(预览)

这项功能引入了数据库加载器,可以直接针对关系数据库数据进行训练。这个装载器支持 .NET Core 或.NET框架下System.Data 支持的任何关系型数据库,这意味着你可以使用任何关系数据库,例如SQL Server,SQL Azure Server,Oracle,SQLite的和PostgreSQL,MySQL和IBM DB2等。

在之前的ML.NET版本中,从ML.NET 1.0发布就支持通过IEnumerable使用LoadFromEnumerable()API 从关系数据库提供数据来训练,其中数据可能来自关系数据库或任何其他源,但是,在使用该方法时,作为开发人员的你负责从关系数据库中读取数据(例如使用Entity Framework或任何其他方法),这些代码需要正确实现,以便在训练ML模型时传输数据。但是,这个新的数据库加载器为您提供了一个更简单的代码实现,因为它是从数据库中读取数据并通过IDataView提供数据,这是ML.NET框架提供的,所以您只需要指定数据库连接字符串,数据集列的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();

DatabaseSource dbSource = new DatabaseSource(SqlClientFactory.Instance, 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;

}

这个功能目前还是预览,可通过v0.16-Preview nuget软件包  Microsoft.ML.Experimental进行访问。

深度神经网络迁移学习的图像分类(预览)

这一新功能支持使用ML.NET进行原生DNN迁移学习,我们把图像分类作为第一个高级场景。

例如,通过此功能,您可以使用 ML.NET API 本地训练TensorFlow模型来使用自己的图像进行训练,从而创建自己的自定义图像分类器模型。

图像分类器场景 - 使用ML.NET训练您自己的自定义深度学习模型

为了使用TensorFlow,ML.NET内部依赖于Tensorflow.NET库。Tensorflow.NET库是一个开源和低级API库,为TensorFlow提供.NET标准绑定。该库是SciSharp堆栈库的一部分。

Microsoft(ML.NET团队)与TensorFlow.NET库团队密切合作,不仅为ML.NET中的用户提供更高级别的API (例如我们的新ImageClassification API),而且还帮助改进和发展开源项目Tensorflow.NET库。

下面的堆栈图显示了ML.NET如何实现这些新的DNN训练功能。虽然我们目前仅支持训练TensorFlow模型,但PyTorch支持在路线图中。

作为高级API的第一个主要场景,目前专注于图像分类。这些新的高级API的目标是为DNN训练场景提供功能强大且易于使用的界面,如图像分类对象检测文本分类

下面的API代码示例显示了您可以轻松地培训新的TensorFlow模型,该模型的基础是来自选定架构(预训练模型)的迁移学习,例如Inception v3Resnet

var pipeline = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "LabelAsKey", inputColumnName: "Label")

.Append(mlContext.Model.ImageClassification("ImagePath", "LabelAsKey",

arch: ImageClassificationEstimator.Architecture.InceptionV3)); //Can also use ResnetV2101

// Train the model

ITransformer trainedModel = pipeline.Fit(trainDataView);

上面代码中的重要一行是使用mlContext.Model.ImageClassification分类器训练器,你可以看到它是一个高级API,你只需要选择基础预训练模型来导出,在本例中是Inception v3,但你也可以选择其他预先训练的模型,如Resnet v2101。初始v3是在ImageNet数据集上训练的广泛使用的图像识别模型。那些经过预先训练的模型或架构是多年来由多位研究人员开发的许多想法的顶点,您现在可以轻松利用它。

针对.NET Core 3.0进行了增强

ML.NET现在正在使用 .NET Core 3.0构建。这意味着ML.NET可以在.NET Core 3.0应用程序中运行时利用.NET Core 3.0新功能。使用的第一个新功能是新的硬件内在功能,它允许.NET代码通过使用特定于处理器的指令来加速数学运算。

当然,您仍然可以在旧版本上运行ML.NET,但是当在.NET Framework或.NET Core 2.2及更低版本上运行时,ML.NET使用硬编码为基于x86的SSE指令的C ++代码。SSE指令允许在单个指令中处理四个32位浮点数。现代的基于x86的处理器还支持AVX指令,允许在一条指令中处理8个32位浮点数。ML.NET的C#硬件内在函数代码支持AVX和SSE指令,并将使用最好的指令。这意味着在现代处理器ML.NET上进行培训 现在将训练更快,因为它可以执行更多的并发浮点操作,而不是只支持SSE指令的现有C ++代码。

C#硬件内在函数代码带来的另一个优点是,当处理器既不支持SSE也不支持AVX时,例如在ARM芯片上,ML.NET将回退到一次一个数字运算。这意味着核心ML.NET组件现在支持更多的处理器体系结构。(注意:仍然有一些组件在ARM处理器上不起作用,例如FastTree,LightGBM和OnnxTransformer。这些组件是用C ++代码编写的,目前没有为ARM处理器编译。)

有关ML.NET如何在.NET Core 3.0中使用新硬件内在函数API的更多信息,请查看Brian Lui的博客文章使用.NET硬件内在函数API来加速机器学习场景

VS和CLI中的模型生成器已更新为最新的GA版本

Visual Studio中的模型构建器工具和ML.NET CLI(均在预览中)已更新为使用最新的ML.NET GA版本(1.3)并解决了大量客户反馈。在此处详细了解更改。

Model Builder已更新至最新的ML.NET GA版本

Model Builder使用ML.NET(1.3)的最新GA版本,因此生成的C#代码也引用了ML.NET 1.3。

改进了对其他OS 本地化的支持

这解决了许多经常报告的问题,开发人员希望使用他们自己的本地化操作系统设置来训练模型生成器中的模型。请阅读此问题以获取更多详细信息。

针对模型构建器的客户反馈

此版本中修复了许多问题。在发行说明中了解更多信息  。

新的示例应用

与此新版本一致,我们还宣布了涵盖其他方案的新的有趣示例应用程序:


基于时间序列SSA(单谱分析)的销售预测方案


基于异常检测PCA的信用卡欺诈检测场景


搜索引擎根据排名任务排序结果场景


模型可解释性和特征重要性


数据库加载器(关系数据库的本机数据库加载器)


深度学习培训:图像分类DNN重新培训(迁移学习)


ASP.NET Core Razor Web应用程序(C#)上的可扩展ML.NET模型


Azure函数(C#)上的可扩展ML.NET模型

YouTube上的新ML.NET视频播放列表

我们在.NET基础频道创建了一个ML.NETYoutube播放列表,其中包含一个由选定视频组成的列表,每个视频都集中在一个特定的ML.NET特性上,因此非常适合学习目的。

在这里访问ML.NET Youtube播放列表

.NET机器学习 ML.NET 1.4预览版和模型生成器更新的更多相关文章

  1. 挑战中英实时语音翻译——Skype Translator 中文预览版登陆中国

    Translator 中文预览版登陆中国" title="挑战中英实时语音翻译--Skype Translator 中文预览版登陆中国"> 今天,我们正式宣布在中国 ...

  2. Windows 10简体中文最新预览版Build 9926

    Windows 10 消费者预览版全新特性: • 全新的开始菜单Win 10的开始菜单产生了较大改变,磁贴界面在原有磁贴概念的基础上进行了大幅度的调整,新的磁贴界面开始支持纵向滚动,并可以利用开始按钮 ...

  3. 官宣 .NET MAUI 预览版 6

    最近,我们发布了.NET 多平台应用程序UI (MAUI)的最新进展. 在此版本中,我们全力支持Visual Studio 2022 预览版2.这也标志着我们首次将.NET MAUI 作为工作负载安装 ...

  4. 微软发布Visual Studio Online公共预览版和ML.NET 1.4

    在今天的Ignite 2019上,Microsoft启动了 Visual Studio Online 公共预览版.Visual Studio Online将Visual Studio,云托管的开发人员 ...

  5. Android 10开发者预览版功能介绍

    Android P的开发者预览版最亮眼的功能莫过于支持“刘海屏”等屏幕显示.同样在适配可折叠设备方面,Android Q的第一个开发者预览版也很“接地气”,谷歌早在去年11月就发布了对可折叠设备的支持 ...

  6. 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率

    今晨,谷歌推出了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化,其中包含对 Android Go (设备运行内存小于等于 1 GB)和加速设备上对机器学习的全新神经网 ...

  7. 实时人工智能:微软发布Project Brainwave预览版 现场可编程门阵列(Field Programmable Gate Array,简称FPGA) 硬件设计可以迅速演进

    https://mp.weixin.qq.com/s/bAPiPURZd-YsbV5PbzwpQQ 编者按:随着各大公司对于数据计算的要求越来越高,实时AI成为了研究者们关注的重点.在美国西雅图举行的 ...

  8. Apache Spark 3.0 预览版正式发布,多项重大功能发布

    2019年11月08日 数砖的 Xingbo Jiang 大佬给社区发了一封邮件,宣布 Apache Spark 3.0 预览版正式发布,这个版本主要是为了对即将发布的 Apache Spark 3. ...

  9. .NET 7 预览版 1 发布

    宣布 .NET 7 预览版 1 Jeremy 2022 年 2 月 17 日 今天,我们很高兴地宣布 .NET 历史上的下一个里程碑.在庆祝社区和 20 年创新的同时,.NET 7 Preview 1 ...

随机推荐

  1. 【设计模式大法】Iterator模式

    Iterator模式 --一个一个遍历 在Java中的for语句中 i++的作用是让 i 的值在每次循环后自增1,这样就可以访问数组中的下一个元素.下下一个元素.再下下一个元素,也就实现了从头至尾逐一 ...

  2. Prometheus PromQL 基础

    目录 时序 4 种类型 Counter Gauge Histogram Summary Histogram vs Summary 操作符 时序 4 种类型 Prometheus 时序数据分为 Coun ...

  3. C语言I作业10

    问题 回答 这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/10100 我在 ...

  4. 【洛谷】P2256

    (^_^) 题目: 题目 思路: 这是一道并查集水题,适合初学者做!!! 若不会并查集的点我,那是dalao的博客! 本题难点:名字是字符串,要字符串处理 给每个名字一个编号,如\(1,2,3,4,5 ...

  5. Python数据分析I

    Python数据分析概述 数据分析的含义与目标 统计分析方法 提取有用信息 研究.概括.总结 Python与数据分析 Python: Guido Van Rossum Christmas Holida ...

  6. 动态规划--最长上升子序列(LIS)的长度

    l例如:对于[3,1,4,2,5],最长上升子序列的长度是3 arr = [3,1,4,5,9,2,6,5,0] def lis(arr): #dp[i]表示第i个位置的值为尾的数组的最长递增子序列的 ...

  7. Quantitative proteomics of Uukuniemi virus-host cell interactions reveals GBF1 as proviral host factor for phleboviruses(乌库涅米病毒-宿主细胞互作的定量蛋白质组学揭示了GBF1是个白蛉病毒的前病毒宿主因子)-解读人:谭亦凡

    期刊名:Molecular & Cellular Proteomics 发表时间:(2019年12月) IF:4.828 单位:1德国海德堡大学附属医院2德国汉诺威医科大学3德国亥姆霍茲感染研 ...

  8. Internet History,Technology,and Security - Dawn of Electronic Computing(Week 1)

    一 War Time Computing and Communication 讲到电子计算机,你不得不提起第二次世界大战,虽说二战是人类历史上史无前例的大灾难,不过从某种程度来说,它确实促进了社会的发 ...

  9. luogu P1908 逆序对 |树状数组

    题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为"逆序对"的 ...

  10. CF1009F Dominant Indices(启发式合并)

    You are given a rooted undirected tree consisting of nn vertices. Vertex 11 is the root. Let's denot ...