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

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