@開發者,如果你正在研究深度學習,那么建議你開始學習Swift語言。
譯者 | 彎月, 責編 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下為譯文:
當程序員聽到Swift時,可能都會聯想到iOS或MacOS的應用開發。如果你正在研究深度學習,那么你一定聽說過Swift版的TensorFlow。你可能不禁想問:“為什么Google會創建Swift版的TensorFlow?現在已經有Python和C++版本了,為什么還要添加另一種語言?”
?
我將在這篇文章中為你解答這個問題,并概述為什么你需要留意Swift版的TensorFlow以及Swift語言本身。我不打算在文本中提供詳細的解釋,但是我會提供大量鏈接,如果你對這個話題感興趣的話,那么可以深入挖掘。
?
?
Swift擁有強力的后援
?
?
Swift是由Chris Lattner在蘋果工作時創建的。目前,Chris Lattner在Google Brain工作——這是世界上最先進的人工智能研究團隊之一。 Swift語言的創始人如今在研究深度學習的實驗室工作,這個事實說明這是一個重大的項目。
?
前段時間,Google意識到盡管Python是一種優秀的語言,但它仍有許多難以克服的局限性。TensorFlow需要一種新語言,經過長時間的考慮后,這個重任落到了Swift肩上。我不打算對此做詳細的介紹,但是你可以自行閱讀這篇文檔(https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md),文中描述了Python的缺點,有關其他語言的考量,以及最終選中了Swift的經過。
?
?
Swift版的TensorFlow不僅僅是一個代碼庫
?
?
Swift版的TensorFlow不僅僅是另一種語言的TensorFlow。
?
從本質上來說,它是Swift語言的另一個分支(就像在git上創建branch一樣)。這意味著Swift版的TensorFlow并不是一個代碼庫, 它本身就是一種語言,它內置的功能支持TensorFlow所需的所有功能。
?
例如,Swift版的TensorFlow擁有非常強大的自動微分系統,這是深度學習計算梯度所需的基礎。相比之下,Python的自動微分系統不是語言的核心組成部分。有一些最初為Swift版的TensorFlow開發的功能后來被集成到了Swift語言本身中。
?
?
Swift非常快
?
?
當第一次得知Swift的運行速度與C代碼一樣快時,我感到非常驚訝。我知道C經過了高度優化,且可以實現非常高的速度,但這需要以微內存管理為代價,因此C不能保證內存的安全。此外,C不是一種非常容易學習的語言。
?
如今,Swift的數值計算速度與C一樣快,還沒有內存安全的問題,而且更容易學習。Swift背后的LLVM編譯器功能非常強大,并且擁有非常高效的優化功能,可以確保代碼快速地運行。
?
?
你可以在Swift中使用Python、C和C++代碼
?
?
由于Swift的機器學習才剛剛開始,因此Swift的機器學習庫并不多。然而,你無需擔心,因為Swift可以很好地與Python語言結合。你只需在Swift中導入Python庫,就可以放心使用了。
?
與此同時,你還可以將C和C++庫導入到Swift中(對于C++,你需要確保頭文件是用純C編寫的,沒有C++的特性)。
?
總而言之,如果你需要的某個特定的功能尚未在Swift中實現,則可以導入相應的Python、C或C++包。這一點簡直逆天了!
?
?
Swift還可以深入底層
?
?
如果你曾經使用過TensorFlow,那么很可能是通過Python包來實現的。在底層,Python版的TensorFlow是用C實現的。所以在TensorFlow中調用函數時,你一定會在某個層面上遇到一些C代碼。這意味著在你查看源代碼的時候,會遇到一些限制。例如,你想看看卷積的實現方式,卻發現看不到Python代碼,因為它是用C實現的。
?
然而,在Swift中情況有所不同。Chris Lattner稱Swift是“LLVM [匯編語言]的語法糖”。這意味著從本質上講,Swift非常靠近硬件,Swift與硬件之間沒有其他用C寫的附加層。這也意味著Swift代碼非常快,如上所述。
?
因此,開發人員能夠檢查所有的代碼,無論是高層的代碼還是非常底層的代碼,都無需深入C。
?
?
將來的發展
?
?
Swift只是Google深度學習創新的一部分。還有另一個非常密切相關的組件:MLIR(Multi-Level Intermediate Representation,多層中間表示)。MLIR將會成為Google統一的編譯基礎設施,它允許你用Swift(或任何其他支持的語言)編寫代碼,并編譯成任何支持的硬件。
?
目前,有許多針對不同目標硬件的編譯器,但MLIR將改變這種局面,它不僅可以支持代碼的可重用性,而且還允許你編寫編譯器自定義的底層組件。同時,它還允許研究人員應用機器學習來優化低級算法:
雖然MLIR是機器學習的編譯器,但我們也看到它可以將機器學習的技術應用到編譯器本身!這一點非常重要,因為工程師開發數值計算庫的速度跟不上機器學習模型或硬件多元化的速度。
想象一下,我們能夠使用深度學習來優化處理數據的底層內存切片算法(類似于Halide正在努力完成的任務)。而且,這只是一個開端,還有其他機器學習的創造性應用也可以在編譯器中使用!
?
?
總結
?
?
如果你正在研究深度學習,那么我建議你開始學習Swift語言。與Python相比,Swift擁有多方面的優勢。Google正在大力投資,讓Swift成為TensorFlow多層基礎設施的關鍵組成部分,而且Swift很可能成為深度學習的語言。 因此,先下手為強,盡早開始學習Swift吧。
?
鏈接:https://towardsdatascience.com/why-swift-may-be-the-next-big-thing-in-deep-learning-f3f6a638ca72
本文為 CSDN 翻譯,轉載請注明來源出處。
想學機器學習的小白讀這篇,很可以
https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
【END】
作為碼一代,想教碼二代卻無從下手:
聽說少兒編程很火,可它有哪些好處呢?
孩子多大開始學習比較好呢?又該如何學習呢?
最新的編程教育政策又有哪些呢?
下面給大家介紹CSDN新成員: 極客寶寶(ID: geek_baby)
戳他了解更多↓↓↓
?熱 文 ?推 薦?
? 百年 IBM 如何用代碼拯救生命
? 索尼發布新一代 IoT 芯片,萬物互聯方式將改寫?
? 首款“印度制造”的微處理器 AJIT 面世!
?國內第一部 AI 本科專業教育培養體系出爐!
?“再見,微軟!”
服務遷移之路 | Spring Cloud向Service Mesh轉變 | 技術干貨
不止面基V神,今年以太坊技術及應用大會,他還期待……
?一文獲取36個Python開源項目,平均Star 1667,精選自5000個項目
史上最大規模ACL大會放榜,百度10篇NLP論文被錄用!
?大神!這段代碼讓程序員躺賺200W,源碼簡單,你怎么看?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
