C#也能做机器学习,这篇市场还是一片“处女地”?|文末福利

.NET 框架是由微软开发,致力于敏捷软件开发、快速应用开发、具平台无关性和网络透明化的软件框架,目前全球有 620 万开发者在使用 .NET 开发程序。然而,开发者在学习、开发和应用 AI 时,会发现市面上少有基于 .NET 的 AI 开发类库、人工智能应用技术平台和商业支持服务。在这样的背景下,SciSharp AI 开源社区应运而生,它打造一个基于 .NET 的机器学习生态,推出并开源了多个颇受欢迎的基于 .NET 的机器学习项目和工具,比如 TensorFlow.NET 就被谷歌列入 TensorFlow 官网,推荐给全球开发者。

SciSharp 是怎样的一个社区?它是如何构建一个基于 .NET 的机器学习生态?它在做的事情对开发者来说有何意义?本次,AI 科技大本营与 SciSharp 核心团队成员,包括 SciSharp 社区产品运营负责人,原 “微信”技术专利发明人George Zhao、 TensorFlow.NET 发起人和主要贡献者Eric Chen、NumSharp 主要贡献者 Eli Belash、Torch.NET与Numpy.NET的主要贡献者Meinrad Recheis和 ICSharpCore主要贡献者Kerry Jiang聊了聊,更加深入地了解这个 AI 社区及其产品。

SciSharp为开发者做什么?

SciSharp 是一个非盈利人工智能开源社区,目前核心开发者有 5 人,他们分别来自以色列、奥地利、澳大利亚、美国和中国,其他 35 名贡献者则来自德国、印度等 15 个国家和地区。目前,整个社区主要是靠成员各自的兴趣驱动,管理也是由团队人员自发共同承担,是一个完全透明和自治的开源技术社区。

众所周知,C# 和 JAVA 是目前企业系统里最流行的两大编程语言,现在,Java 机器学习生态里已经有不少社区和团队在做相关产品和服务,如斯坦福的 CoreNLP、DL4J 的机器学习库等,并且做得都不错。唯独在 .NET 领域,优秀的产品非常缺乏,而且,虽然有 Accord.NET、Deedle、ML.NET 和其它一些零散的库可供开发者使用,但是它们存在着明显的缺陷,造成目前的开源库无法持续发展和创新,陷入僵局。在深度学习领域,更是 Python “独霸天下”的局面,让人以为做机器学习,就必须用 Python,做大数据就必须用 Scala或Java。这让很多 .NET 开发者感到很不便,因此,SciSharp 就开始试着手建立一个基于.NET(以 C# 开发语言为主)的机器学习生态社区。

NumSharp 的主要贡献者,来自以色列的工程师Eli Belash 回顾了他刚开始从事机器学习和人工智能开发时的感受:“我了解到 .NET 多年来缺乏可以与 Python 相匹敌的语言功能。微软的 ML.NET 仍处于早期阶段,微软的 CNTK(图形计算库)刚刚中断。那时,你无法用 C#语言编写 ML(机器学习)算法,而用其他语言,如 Python 或 R 做这些事非常容易。因此,我们缺乏基于.NET 的可靠的解决方案来编写机器学习算法。当机器学习成为趋势时,C# 目前落后于 Python 和 Java。”

在这种背景下,SciSharp 社区成立了,目的主要是为了让 .NET 开发者在当前火热的 AI 热潮中能够使用最新的 AI 技术,而不用花很长的时间学习和使用 Python 机器学习生态里的工具,降低 .NET 开发者入门机器学习的门槛,让他们能快速把 AI 能力无缝融入到现有的生产系统里。

打造基于.NET的机器学习生态

SciSharp 的核心理念是:打造一个基于 .NET 的机器学习生态,提供一个和 Python 生态体验一致的工具库,让模型迁移更容易、学习曲线最低。为了达到这个目的,SciSharp 从最基本的张量计算库 NumSharp 开始构建,到 TensorFlow Binding,再到吸纳其它深度学习库 SiaNet, 做 ArrayFire.NET,最后到开发ICSharpCore以支持Jupyter Notebook调试。团队的心愿一致,本着以精卫填海的精神,尽可能把 .NET 机器学习生态进一步完善。

NumSharp 的主要贡献者Eli Belash 表示,目前,Python 是 ML 开发和研究的主要语言。在阅读机器学习相关的论文时,你会发现作者很可能会使用 Tensorflow、Pytorch 和/或Numpy 等库并用 Python 语言编程来实现。在这样的情况下,重新造轮子可能并不是聪明的做法。如果现在流行的 Python 库运行良好,我们没理由去思考别的方法。

这就是为什么 SciSharp 决定迁移 ML 最流行的 Python 库:

Numpy 的.NET版NumSharp

TensorFlow 的.NET 移植版TensorFlow.NET

与Pandas 对应的Pandas.NET

上面提到的 3 个库提供了从头开始编写 ML 算法的完整解决方案,SciSharp 的重点之一便是能够兼容用 Python 编写类库的所有机器学习算法,并尽可能无缝地在 5 分钟内将其迁移到 C#。C# 是微软公司发布的一种面向对象的、运行于 .NET Framework 之上的高级程序设计语言。随着.NET Core 3.0 的即将发布,这个最初发布于 2016 年的平台终于有了最新的主版本,该平台具有通用性、模块化、跨平台和开放源代码的特性。这样,除了 Python 和 Java,开发者同样可以使用 C#完成机器学习任务。

最受欢迎的项目

TensorFlow.NET

SciSharp 上现已有几十个基于 .NET 的项目供开发者使用,从 star 数和 fork 上来看,最受欢迎的当属 TensorFlow.NET(简称TF.NET) 和 NumSharp。

其中,TensorFlow.NET 近期被谷歌列入 TensorFlow 官网推荐给全球开发者,并被微软的 ML.NET 1.3.1 集成,作为ML.NET里深度学习部分的重要组件,目前已经完成了用迁移学习算法进行图像分类的功能,并计划在年底完成图像对象检测的功能,届时将会对全球开发者公布。

————————————————

前方高能!「2020 AI 开发者万人大会」强势来袭!此次大会特邀来自微软、英伟达、亚马逊、华为、腾讯、百度、阿里、华为、字节跳动、美团、快手、蚂蚁金服等100+位技术大咖,分享最新AI技术、产品与行业实施案例、技术实践经验与AI未来发展趋势。


心动不如行动!私信发送“优惠码”,即可获取报名地址+优惠码,你将免费获取299元门票一张!!

举报
评论 0