C#也能做機器學習,這篇市場還是一片“處女地”?

AIBigbull2050發表於2020-04-03
2020-04-02 17:21:52

.NET 框架是由微軟開發,致力於敏捷軟體開發、快速應用開發、具平臺無關性和網路透明化的軟體框架,目前全球有 620 萬開發者在使用 .NET 開發程式。然而,開發者在學習、開發和應用 AI 時,會發現市面上少有基於 .NET 的 AI 開發類庫、人工智慧應用技術平臺和商業支援服務。在這樣的背景下,SciSharp AI 開源社群應運而生,它打造一個基於 .NET 的機器學習生態,推出並開源了多個頗受歡迎的基於 .NET 的機器學習專案和工具,比如 TensorFlow.NET 就被谷歌列入 TensorFlow 官網,推薦給全球開發者。

C#也能做機器學習,這篇市場還是一片“處女地”?|文末福利

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裡深度學習部分的重要元件,目前已經完成了用遷移學習演算法進行影像分類的功能,並計劃在年底完成影像物件檢測的功能,屆時將會對全球開發者公佈。


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



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2684429/,如需轉載,請註明出處,否則將追究法律責任。

相關文章