.NET机器学习 ML.NET 1.4预览版和模型生成器更新
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 v3或Resnet。
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 本地化的支持
这解决了许多经常报告的问题,开发人员希望使用他们自己的本地化操作系统设置来训练模型生成器中的模型。请阅读此问题以获取更多详细信息。
针对模型构建器的客户反馈
此版本中修复了许多问题。在发行说明中了解更多信息 。
新的示例应用
与此新版本一致,我们还宣布了涵盖其他方案的新的有趣示例应用程序:

ASP.NET Core Razor Web应用程序(C#)上的可扩展ML.NET模型
YouTube上的新ML.NET视频播放列表
我们在.NET基础频道创建了一个ML.NETYoutube播放列表,其中包含一个由选定视频组成的列表,每个视频都集中在一个特定的ML.NET特性上,因此非常适合学习目的。
在这里访问ML.NET Youtube播放列表。

.NET机器学习 ML.NET 1.4预览版和模型生成器更新的更多相关文章
- 挑战中英实时语音翻译——Skype Translator 中文预览版登陆中国
Translator 中文预览版登陆中国" title="挑战中英实时语音翻译--Skype Translator 中文预览版登陆中国"> 今天,我们正式宣布在中国 ...
- Windows 10简体中文最新预览版Build 9926
Windows 10 消费者预览版全新特性: • 全新的开始菜单Win 10的开始菜单产生了较大改变,磁贴界面在原有磁贴概念的基础上进行了大幅度的调整,新的磁贴界面开始支持纵向滚动,并可以利用开始按钮 ...
- 官宣 .NET MAUI 预览版 6
最近,我们发布了.NET 多平台应用程序UI (MAUI)的最新进展. 在此版本中,我们全力支持Visual Studio 2022 预览版2.这也标志着我们首次将.NET MAUI 作为工作负载安装 ...
- 微软发布Visual Studio Online公共预览版和ML.NET 1.4
在今天的Ignite 2019上,Microsoft启动了 Visual Studio Online 公共预览版.Visual Studio Online将Visual Studio,云托管的开发人员 ...
- Android 10开发者预览版功能介绍
Android P的开发者预览版最亮眼的功能莫过于支持“刘海屏”等屏幕显示.同样在适配可折叠设备方面,Android Q的第一个开发者预览版也很“接地气”,谷歌早在去年11月就发布了对可折叠设备的支持 ...
- 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率
今晨,谷歌推出了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化,其中包含对 Android Go (设备运行内存小于等于 1 GB)和加速设备上对机器学习的全新神经网 ...
- 实时人工智能:微软发布Project Brainwave预览版 现场可编程门阵列(Field Programmable Gate Array,简称FPGA) 硬件设计可以迅速演进
https://mp.weixin.qq.com/s/bAPiPURZd-YsbV5PbzwpQQ 编者按:随着各大公司对于数据计算的要求越来越高,实时AI成为了研究者们关注的重点.在美国西雅图举行的 ...
- Apache Spark 3.0 预览版正式发布,多项重大功能发布
2019年11月08日 数砖的 Xingbo Jiang 大佬给社区发了一封邮件,宣布 Apache Spark 3.0 预览版正式发布,这个版本主要是为了对即将发布的 Apache Spark 3. ...
- .NET 7 预览版 1 发布
宣布 .NET 7 预览版 1 Jeremy 2022 年 2 月 17 日 今天,我们很高兴地宣布 .NET 历史上的下一个里程碑.在庆祝社区和 20 年创新的同时,.NET 7 Preview 1 ...
随机推荐
- Alertmanager 部署配置
目录 前言 源码安装 配置 启动 配置prometheus监控Alertmanager 修改prometheus配置 重新加载配置文件 配置测试告警 修改prometheus配置 重新加载配置文件 测 ...
- TensorFlow2.0(11):tf.keras建模三部曲
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- DRF Django REST framework 之 序列化(三)
Django 原生 serializer (序列化) 导入模块 from django.core.serializers import serialize 获取queryset 对queryset进行 ...
- 卸载&&更新docker(ubuntu)
卸载docker: apt-get purge lxc-docker apt-get autoremove 更新docker: apt-get update apt-get install lxc-d ...
- Mac ifconfig 详解(ifconfig detail)-- 外婆送来的丁香(Grandma's clove)
引言 Intro 图片源链:https://pixnio.com/zh/%E6%A4%8D%E7%89%A9/%E8%8A%B1/%E4%B8%81%E9%A6%99%E8%8A%B1-%E5%8F% ...
- ThreadLocal解决了什么问题
小明所在的项目组(迭代组:一直在迭代的路上),经常会在已有接口的基础上开发一些小功能,并且前提是在保证现有用户的不受影响基础上迭代.功能迭代,在代码层面小明有1w种实现方法(吹牛的),一起来看看这次小 ...
- JPEG文件编/解码详解
JPEG文件编/解码详解(1) JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写.它由国际电话与电报咨询委员会CCITT(The Interna ...
- 网络安全之Windows基础
1.黑客常用DOS命令 基础: telnet服务:telnet 192.168.1.141 (默认没有打开telnet服务) 常用: color a ping -t -l 65550 ip 死亡之pi ...
- Python3 面向对象进阶2
目录 Classmethod Staticmethod Isinstance Issubclass 反射 概念 hasattr getattr setattr delattr 魔法方法 概念 __ne ...
- 浅谈Redis面试热点之工程架构篇[1]
前言 前面用两篇文章大致介绍了Redis热点面试中的底层实现相关的问题,感兴趣的可以回顾一下:[决战西二旗]|Redis面试热点之底层实现篇[决战西二旗]|Redis面试热点之底层实现篇(续) 接下来 ...