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. 【Android - 控件】之MD - CoordinatorLayout的使用

    CoordinatorLayout是Android 5.0新特性——Material Design中的一个布局控件,主要用来协调各个子视图之间的工作,也可以用来作为顶部布局.CoordinatorLa ...

  2. Prometheus 安装

    目录 简介 安装部署 环境准备 安装 配置环境变量 配置 启动 简介 prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合. 时序(time serie ...

  3. docker下安装测试环境estuntest

    1.基础知识: docker pull centos   //从云上下载centos系统到本地服务器 docker images   //查看镜像docker rmi 镜像id   //删除镜像 do ...

  4. 利用 Flask 动态展示 Pyecharts 图表数据的几种方法

    本文将介绍如何在 web 框架 Flask 中使用可视化工具 pyecharts, 看完本教程你将掌握几种动态展示可视化数据的方法,不会的话你来找我呀- Flask 模板渲染 1. 新建一个项目fla ...

  5. Frida用法之函数操作

    Frida接口功能介绍   Frida是个so级别的hook框架,它可以帮助开发.安全人员对指定的进程的so模块进行分析.它主要提供了功能简单的Python接口和功能丰富的JS接口,使得hook函数和 ...

  6. KETTLE多表关联的同步一张表的两种实现方式

    以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 在平时工作当中,会遇到这种情况,而且很常见.比如:读取对方的多个视图或者表,写入目标库的一张表中,就涉及到多表的同步. 多表同步可以有以 ...

  7. 深入理解Android异步消息处理机制

    一.概述 Android 中的异步消息处理主要分为四个部分组成,Message.Hndler.MessageQueue 和 Looper.其关系如下图所示: 1. Message 是线程之间传递的消息 ...

  8. php上传下载文件

    之前做一个上传下载的项目,发现网上的和自己需求不是很一样,翻阅了下书籍和整理了下网上的一些代码.做了一个上传下载的demo,上传通过php本身的uploadfile函数,并返回以时间戳命名的文件名后, ...

  9. luogu P1566 加等式

    题目描述 对于一个整数集合,我们定义"加等式"如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ...

  10. CodeForces-Round524 A~D

    A. Petya and Origami time limit per test  1 second   memory limit per test  256 megabytes input stan ...