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

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