ML.NET 更新

点击上方蓝字

关注我们

(本文阅读时间:5分钟)

ML.NET是一款面向.NET开发人员的开源,跨平台机器学习框架,可以将自定义机器学习集成到.NET应用中。我们很开心地向您介绍我们在过去几个月中所做的工作。

  • ML.NET:

    https://dotnet.microsoft.com/en-us/apps/machinelearning-ai/ml-dotnet?ocid=AID3045631

ba5ffe6968906976f91e7260bed273a5.png

AutoML更新 

ea5bbfa9f9f168e3801b98072f5408b5.png

自动化机器学习(AutoML)通过更容易地为您适合的场景和数据集找到最佳算法,从而使该过程自动化。AutoML是支持模型生成器和ML.NET CLI训练经验的后端。去年,我们宣布在我们的模型生成器和基于神经网络智能 (NNI) 的 ML.NET CLI 工具以及 Microsoft Research 的快速轻量级 AutoML (FLAML) 技术中对 AutoML 实施进行了更新。与之前的解决方案相比,这些更新提供了一些好处和改进,包括:

  • 探索的模型数量增加。

  • 提高了超时错误率。

  • 改进的性能指标(例如,准确性和r平方)。

直到最近,您还只能在我们的工具中利用这些AutoML改进。

我们很兴奋地宣布,我们已经将AutoML的NNI / FLAML实现集成到ML.NET框架中,这样你就可以从代码优先的体验中使用它们。

要开始使用AutoML API,请使用ML.NET daily feed安装Microsoft.ML和Microsoft.ML.Auto NuGet包的微软最新的预发布版本。

  • 神经网络智能 (NNI):

    https://github.com/Microsoft/nni

  • 快速轻量级 AutoML (FLAML):

    https://github.com/Microsoft/flaml

895095fc35883f2f9e4009d35e115724.png

实验的API 

2fe7d132cd91af1e3764edcdf5b4e26d.png

实验是训练或试验的集合。每次试验都会产生关于自身的信息,例如:

  • 评估指标:用于评估模型的预测能力的指标。

  • 流水线:用于训练模型的算法和超参数。

实验API为AutoML提供了一组默认值,使您更容易将其添加到训练管道中。

// 配置AutoML管道
var experimentPipeline =    dataPrepPipeline.Append(mlContext.Auto().Regression(labelColumnName: "fare_amount"));
// 配置实验
var experiment = mlContext.Auto().CreateExperiment().SetPipeline(experimentPipeline).SetTrainingTimeInSeconds(50).SetDataset(trainTestSplit.TrainSet, validateTestSplit.TrainSet).SetEvaluateMetric(RegressionMetric.RSquared, "fare_amount", "Score");
// 运行实验
var result = await experiment.Run();

在这个代码片段中,dataprepipeline是一系列转换,用于将数据转换为适合训练的格式。训练回归模型的AutoML组件被附加到该管道上。同样的概念也适用于其他受支持的场景,比如分类。

当您使用已定义的训练管道创建实验时,您可以自定义的设置包括训练时间、训练和验证集以及优化的评估指标。

定义了管道和实验之后,调用Run方法开始训练。

搜索空间和可清除估计器

如果需要对超参数搜索空间有更多的控制,可以定义搜索空间,并使用可清除的估计器将其添加到训练管道中。

// 配置搜索空间
var searchSpace = new SearchSpace<LgbmOption>();// 初始化估计器管道
var sweepingEstimatorPipeline =dataPrepPipeline.Append(mlContext.Auto().CreateSweepableEstimator((context, param) =>{var option = new LightGbmRegressionTrainer.Options(){NumberOfLeaves = param.NumberOfLeaves,NumberOfIterations = param.NumberOfTrees,MinimumExampleCountPerLeaf = param.MinimumExampleCountPerLeaf,LearningRate = param.LearningRate,LabelColumnName = "fare_amount",FeatureColumnName = "Features",HandleMissingValue = true};return context.Regression.Trainers.LightGbm(option);}, searchSpace));

搜索空间定义了用于搜索的超参数范围。

可清理评估器使您能够像使用其他评估器一样使用ML.NET管道中的搜索空间。

要创建和运行实验,您需要使用CreateExperiment和run方法的相同过程。

0e3146366bfe5c57867ef0b264d78fdc.png

模型生成器和ML.NET CLI更新

f6c310d28e31eb4d9aba91be045f2d1a.png

我们已经对模型生成器和ML.NET CLI做了几个更新。其中我想强调的两个是:

  • 时间序列预测场景的模型生成器

  • .NET CLI的新版本

时间序列预测场景(预览)

时间序列预测是在与时间相关的观测中确定模式,并对未来几个时期作出预测的过程。现实世界的用例有:

  • 预测产品需求

  • 能源消费预测

在ML.NET中,选择时间序列预测的训练师并不太难,因为你只有一个选择,ForecastBySsa。困难的部分在于找到参数,如分析的时间窗口和预测未来的距离。找到正确的参数是一个实验过程,这是AutoML的一项出色工作。对我们的AutoML实现的更新使通过超参数进行智能搜索成为可能,从而简化了训练时间序列预测模型的过程。

作为这些努力的结果,我们很高兴地与大家分享,您现在可以在模型生成器中训练时间序列预测模型。

74fbae1cbc4eabc315d9250d974a03d1.png

下载或更新到模型生成器的最新版本,开始训练您的时间序列预测模型。

ML.NET CLI的新版本

ML.NET CLI是我们的跨平台.NET全局工具,它利用AutoML在运行Windows、MacOS和Linux的x64和ARM64设备上训练机器学习模型。几个月前,我们发布了ML.NET CLI的新版本,它带来了:

  • .NET 6 支持

  • 支持 ARM64 架构

  • 新场景

  • 图像分类(针对 x64 架构)

  • 建议

  • 预测

安装 ML.NET CLI 并从命令行开始训练模型。

  • ForecastBySsa:

    https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.ml.timeseriescatalog.forecastbyssa?view=ml-dotnet?ocid=AID3045631

  • 下载或更新到模型生成器的最新版本:

    https://docs.microsoft.com/zh-cn/dotnet/machine-learning/how-to-guides/install-model-builder?tabs=visual-studio-2019?ocid=AID3045631

  • 安装 ML.NET CLI:

    https://docs.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/install-ml-net-cli?tabs=windows?ocid=AID3045631

f9d01798d606067bbcfeaa9a5ed8df39.png

Notebooks的键盘快捷键 

fddd61ad56125dfc87a9f86eacb54d80.png

Interactive Notebooks广泛应用于数据科学和机器学习。它们对于数据探索和准备、实验、模型解释和教育都很有用。

去年10月,我们发布了基于.NET Interactive的Visual Studio Notebook Editor扩展。在过去的几个月里,我们一直在改进性能和稳定性。

在我们的最新版本中,我们通过启用键盘快捷键让您无需离开键盘就能更轻松地工作。如果你以前使用过notebooks,你应该对其中的许多快捷方式很熟悉。

指令

K

向上移动焦点

J

向下移动焦点

A

在上面插入单元格

B

在下面插入单元格

DD

删除单元格

Ctrl + Z

撤销

Ctrl + S

保存

Ctrl + C

复制单元格

Ctrl + X

剪切单元格

Ctrl + V

粘贴单元格

L

切换行号

O

开关输出

II

取消单元格执行

00

启动内核

Ctrl + Shift + -

分割单元格

Ctrl+ Enter

执行/运行单元格

Shift + Enter

执行/运行单元格,并将焦点向下移动

表中的键是大写的,但大写不是必需的。

安装最新版本的Notebook编辑器,并开始在Visual Studio中创建Notebook。

  • .NET Interactive:

    https://github.com/dotnet/interactive

  • Visual Studio Notebook Editor扩展:

    https://devblogs.microsoft.com/dotnet/ml-net-and-model-builder-october-updates/#notebook-editor-in-visual-studio?ocid=AID3045631

  • Notebook编辑器:

    https://marketplace.visualstudio.com/items?itemName=MLNET.notebook

02933a7e4a4f738fa0a6e7e70c38700e.png

ML.NET的下一个目标是什么? 

2c803af5a936a12cd77f460566d983b9.png

我们正积极朝着路线图中所概述的领域努力。

深度学习

几个月前,我们分享了深度学习的计划。该计划的很大一部分围绕着改善ONNX的消费体验,并通过TorchSharp(一个提供对驱动PyTorch的库的访问的.NET库)实现新的场景。我们在实现这一计划方面取得的一些进展包括:

  • 为ONNX推断启用全局GPU标志。在此更新之前,当你想使用GPU对ONNX模型进行推断时,ApplyOnnxModel转换中的FallbackToCpu和GpuDeviceId标志没有被保存为管道的一部分。因此,每次都必须安装管道。我们已经使这些标志可作为MLContext的一部分访问,因此您可以将它们保存为模型的一部分。

  • TorchSharp 面向 .NET 标准。TorchSharp最初的目标是.NET 5。作为我们将TorchSharp集成到ML.NET的工作的一部分,我们更新为TorchSharp面向.NET标准。

在接下来的几周里,我们很高兴与大家分享我们在TorchSharp与ML.NET集成方面取得的进展。

  • 路线图:

    https://github.com/dotnet/machinelearning/blob/main/ROADMAP.md

  • 深度学习的计划:

    https://github.com/dotnet/machinelearning/issues/5918

  • TorchSharp:

    https://github.com/dotnet/TorchSharp

9e288f78f202fdac919b80efaf013dd0.png

.NET DataFrame 

478ac33dd8ce12d29629bc9164cf7312.png

清晰且具有代表性的数据有助于提高模型的性能。因此,理解、清理和准备训练数据的过程是机器学习工作流中的关键步骤。几年前,我们在.NET中引入了DataFrame类型,作为Microsoft.Data.Analysis NuGet包的预览。DataFrame仍处于预览阶段。我们理解使用工具来执行数据清理和处理任务是多么重要,并且已经开始组织和优先考虑反馈,因此我们解决了现有的稳定性和开发人员经验痛点。这些反馈被组织成GitHub问题的一部分。

我们创建这个跟踪问题是为了跟踪和组织反馈。如果您有任何想要与我们分享的反馈,请在描述中为个别问题投票或在跟踪问题中直接评论。

  • Microsoft.Data.Analysis:

    https://www.nuget.org/packages/Microsoft.Data.Analysis/

  • 跟踪问题:

    https://github.com/dotnet/machinelearning/issues/6144

  • https://pkgs.dev.azure.com/dnceng/public/_packaging/MachineLearning/nuget/v3/index.json

70439065fc5242ca7f79b0161ce263e6.png

MLOps 

39cc6d07c306bb10cff6301725f4ed19.png

机器学习操作(MLOps)就像机器学习生命周期的DevOps。这包括模型部署和管理以及数据跟踪,这有助于机器学习模型的产品化。我们一直在评估用ML.NET改善这种体验的方法。

最近我们发表了一篇博客文章,指导你完成设置Azure机器学习数据集、使用ML.NET CLI训练ML.NET模型以及使用Azure Devops配置再训练管道的过程。要了解更多细节,请参阅《在Azure ML中训练ML.NET模型》一文。

  • 《在Azure ML中训练ML.NET模型》:

    https://devblogs.microsoft.com/dotnet/training-a-ml-dotnet-model-with-azure-ml/?ocid=AID3045631

f14ae20824959b812073020c4cc9b2ca.png

入门和资源

6b7f86f7fc4bd1262d5c8dc562a2c858.png

在微软文档中详细了解 ML.NET、模型生成器和 ML.NET CLI。

如果您遇到任何问题,功能请求或反馈,请在GitHub上的ML.NET回购或ML.NET工具(Model Builder & ML.NET CLI)回购中提交问题。

  • 微软文档:

    https://docs.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/install-ml-net-cli?tabs=windows?ocid=AID3045631

  • ML.NET回购或ML.NET工具(Model Builder & ML.NET CLI)回购:

    https://github.com/dotnet/machinelearning-modelbuilder

f6b8505a9fcefe42455108d085b3a3a7.png

谢谢你读完了本文~相信你一定有一些感想、观点、问题想要表达。欢迎在评论区畅所欲言,期待听到你的“声音”哦!

同时,喜欢的内容也不要忘记转发给你的小伙伴们,谢谢你的支持!

d5bbd7be1a21948689060d87db933892.jpeg

长按识别二维码

关注微软中国MSDN

b6169173c654ce7baece63fef3c196b8.gif

点击「阅读原文」了解更多ML.NET信息~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Andriod之提示java.lang.SecurityException: getDataNetworkTypeForSubscriber导致程序奔溃

1、问题 修改targetSdkVersion 33 适配Android13后4G网络环境被其它app拉起来提示这个异常 2、原因 我们定位到代码在这行函数 telephonyManager.getNetworkType()Android11 的权限有关,由于缺少该权限导致无法访问接口而提示安全异常 3、解决办法 方法1:我们直接申请RE…

[译]基于GPU的体渲染高级技术之raycasting算法

[译]基于GPU的体渲染高级技术之raycasting算法 PS&#xff1a;我决定翻译一下《Advanced Illumination Techniques for GPU-Based Volume Raycasting》。像我翻译其他资料一样&#xff0c;只按我的需要和观点来翻译。有的部分详细翻译&#xff0c;附加注解&#xff0c;有的部分…

【GIS风暴】什么是地理空间智能(Geospatial AI)?

人工智能(Artificial Intelligence,AI)已经成为新技术革命下一阶段的热词,也成为未来产业的驱动力量。使用智能算法,数据分类和智能预测、分析,AI在很多领域将有一系列的工具来帮助解决问题。 将AI用于GIS这一具体的领域的分析、方法和解决方案,就叫地理空间智能(Geos…

JavaScript 清除图片背景颜色 使之透明

主要JS /**清除图片背景颜色 **/ function removeImgBg(img) {//背景颜色 白色const rgba [255, 255, 255, 255];// 容差大小const tolerance 60;var imgData null;const [r0, g0, b0, a0] rgba;var r, g, b, a;const canvas document.createElement(canvas);const cont…

day01基础部分

一、python是什么样的语言 1、编译型语言和解释型语言&#xff0c;python是解释型语言 1.1、编译型语言就是把源程序代码一次性翻译成机器码&#xff08;计算机可识别的代码&#xff09;&#xff0c;然后交给计算机去运行&#xff0c;一般需经过编译&#xff08;compile&#x…

WPF 制作 Windows 屏保

分享如何使用WPF 制作 Windows 屏保WPF 制作 Windows 屏保作者&#xff1a;驚鏵原文链接&#xff1a;https://github.com/yanjinhuagood/ScreenSaver框架使用.NET452&#xff1b;Visual Studio 2019;项目使用 MIT 开源许可协议&#xff1b;更多效果可以通过GitHub[1]|码云[2]下…

Windows 7 下右键发送到菜单项没了

为什么80%的码农都做不了架构师&#xff1f;>>> 问题描述: 突然有一天,Windows 7 下右键发送到菜单项没了,如图所示: 问题原因 黑人问号脸? 转载于:https://my.oschina.net/taadis/blog/1591398

【ArcGIS微课1000例】0016:ArcGIS书签操作(添加书签、管理书签)知多少?

书签可以将地图数据的某一视图状态保存起来,以便在使用时打开书签,直接回到这一视图状态。可创建多个书签以便快速回到不同的视图状态,也可以对书签进行管理。 文章目录 1 创建书签2 管理书签注意:书签只针对空间数据,在【布局视图】中是不能创建书签的。 1 创建书签 可…

分享一个WPF 实现 Windows 软件快捷小工具

分享一个WPF 实现 Windows 软件快捷小工具Windows 软件快捷小工具作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a;https://github.com/WPFDevelopersOrg/SoftwareHelper框架使用.NET40&#xff1b;Visual Studio 2019;项目使用 MIT 开源许可协议&#xff1b;项目使用 MV…

学习环境配置:Manjaro、MSYS2以及常见软件

0.前言 在说Manjaro之前&#xff0c;要先说一下Linux发行版。对于各大发行版而言&#xff0c;内核只有版本的差异&#xff0c;最重要的区别就是包管理系统。常见的包管理系统包括&#xff1a;Pacman&#xff0c;Apt , Yum和Portage。在学习Linux的过程中&#xff0c;和大数人一…

【ArcGIS微课1000例】0017:ArcGIS测量距离和面积工具的巧妙使用

文章目录 1 交互式测量2 测量要素ArcGIS提供了快速测量距离和面积的工具,通过测量工具可对地图中的线和面进行测量。 工具条: 测量工具位于【工具】工具条上,如下图所示: 测量界面: 功能按钮简介: 可使用此工具在地图上绘制一条线或者一个面,然后获取线的长度与面的面…

[转]HTTP/3 未来可期?

2015 年 HTTP/2 标准发表后&#xff0c;大多数主流浏览器也于当年年底支持该标准。此后&#xff0c;凭借着多路复用、头部压缩、服务器推送等优势&#xff0c;HTTP/2 得到了越来越多开发者的青睐&#xff0c;不知不觉的 HTTP 已经发展到了第三代。本文基于兴趣部落接入 HTTP/3 …

【ArcGIS微课1000例】0018:ArcGIS设置相对路径和数据源

文章目录 ArcGIS设置相对路径ArcGIS设置数据源ArcGIS设置相对路径 菜鸟们在使用ArcGIS时经常会碰到将地图文档(.mxd)拷贝到别的电脑上或改变一个路径时,出现数据丢失的现象,具体表现为图层前面出现一个红色的感叹号,如下图所示。 出现以上问题的根本原因是数据GSS.tif的原…

AI 之 OpenCvSharp 安卓手机摄像头识别人脸

OpenCvSharp是OpenCv的包装器&#xff0c;相当于底层是OpenCv只是用.Net的方式调用底层的接口的实现&#xff0c;所以&#xff0c;从OpenCv的知识架构来讲&#xff0c;源码是一样一样的。就是换个语言写而已。1. OpenCvSharp 尽可能地以原生 OpenCV C/C API 风格为蓝本。2. Ope…

iVX低代码平台系列制作APP简单的个人界面

一、前言 我们知道&#xff0c;目前市场上开发app或者小程序这些应用&#xff0c;都离不开一个个人界面&#xff0c;就是类似下面的这种界面&#xff0c;我们可以利用iVX低代码平台来开发&#xff0c;简单快速&#xff0c;如果还有不知道iVX低代码平台是啥的&#xff0c;猛戳这…

[转]【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

前言 很多小伙伴反馈说&#xff0c;高并发专题学了那么久&#xff0c;但是&#xff0c;在真正做项目时&#xff0c;仍然不知道如何下手处理高并发业务场景&#xff01;甚至很多小伙伴仍然停留在只是简单的提供接口&#xff08;CRUD&#xff09;阶段&#xff0c;不知道学习的并发…

【ArcGIS微课1000例】0019:什么是Shapefile文件?Shapefile文件之全解

文章目录 Shapefile文件组成Shapefile文件创建Shapefile文件大小限制Shapefile文件注意事项ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所公司(ESRI)开发的一种空间数据开放格式。该文件格式已经成为了地理信息软件界的一个开放标准,这表明ESRI公司在全球的…

扼杀 304,Cache-Control: immutable

随着近些年社交网站的流行&#xff0c;越来越多的人学会了“刷”网页 ── 刷微博&#xff0c;刷朋友圈&#xff0c;刷新闻&#xff0c;刷秒杀页。这里的“刷”&#xff0c;就是刷新的意思&#xff0c;在浏览器里&#xff0c;你可以通过点击刷新按钮&#xff0c;或者用快捷键&a…

Eolink是国产API接口管理的无冕之王

一、传统API接口管理的缺陷 1、前言 项目开发我们都知道在一个项目团队中是由很多角色组成&#xff0c;最常见团队的就是前端开发工程师、客户端开发工程师、服务端开发工程师组成一个团队&#xff0c;团队之间进行合作&#xff0c;一般我们都离不开API接口管理和测试&#x…