iOS 將來(lái) Swift 也許會(huì)取代 Python

@All Developer,如果你準(zhǔn)備研究深度學(xué)習(xí),提高自己的能力,個(gè)人建議你開(kāi)始學(xué)習(xí) Swift
語(yǔ)言。(因?yàn)?Swift 是世界上最好的語(yǔ)言,開(kāi)玩笑的。:laughing::laughing::laughing:)
當(dāng)程序員聽(tīng)到 Swift
時(shí),可能會(huì)聯(lián)想到蘋(píng)果,也可能會(huì)聯(lián)想到 iOS 或 MacOS 的應(yīng)用開(kāi)發(fā)。如果你準(zhǔn)備研究深度學(xué)習(xí),那么你一定聽(tīng)說(shuō)過(guò) Swift
版的 TensorFlow。你可能不禁想問(wèn):“為什么 Google 會(huì)創(chuàng)建 Swift
版的 TensorFlow?現(xiàn)在已經(jīng)有 Python 和 C++ 版本了,為什么還要添加另一種語(yǔ)言?”
我將在這篇文章中為你解答這個(gè)問(wèn)題,并概述為什么你需要留意 Swift
版的TensorFlow 以及 Swift
語(yǔ)言本身。我不打算在文本中提供詳細(xì)的解釋,但是我會(huì)提供大量鏈接,如果你對(duì)這個(gè)話題感興趣的話,你可以深入挖掘。
1. Swift 擁有強(qiáng)力的后援
Swift
是由 Chris Lattner 在蘋(píng)果工作時(shí)創(chuàng)建的。目前,Chris Lattner 在 Google Brain 工作 —— 這是世界上最先進(jìn)的人工智能研究團(tuán)隊(duì)之一。 Swift
語(yǔ)言的創(chuàng)始人如今在研究深度學(xué)習(xí)的實(shí)驗(yàn)室工作,這個(gè)事實(shí)說(shuō)明這是一個(gè)重大的項(xiàng)目。
前段時(shí)間,Google 意識(shí)到盡管 Python 是一種優(yōu)秀的語(yǔ)言,但它仍有許多難以克服的局限性。TensorFlow 需要一種新語(yǔ)言,經(jīng)過(guò)長(zhǎng)時(shí)間的考慮后,這個(gè)重任落到了 Swift 肩上。我不打算對(duì)此做詳細(xì)的介紹,但是你可以自行閱讀這篇 文檔 ,文中描述了Python的缺點(diǎn),有關(guān)其他語(yǔ)言的考量,以及最終選中了 Swift
的經(jīng)過(guò)。
2. Swift 版的 TensorFlow 不僅僅是一個(gè)代碼庫(kù)
Swift
版的 TensorFlow 不僅僅是另一種語(yǔ)言的 TensorFlow。
從本質(zhì)上來(lái)說(shuō),它是 Swift
語(yǔ)言的另一個(gè)分支(就像在 git 上創(chuàng)建 branch 一樣)。這意味著 Swift
版的 TensorFlow 并不是一個(gè)代碼庫(kù), 它本身就是一種語(yǔ)言,它內(nèi)置的功能支持 TensorFlow 所需的所有功能。
例如, Swift
版的 TensorFlow 擁有非常強(qiáng)大的自動(dòng)微分系統(tǒng),這是深度學(xué)習(xí)計(jì)算梯度所需的基礎(chǔ)。相比之下,Python 的自動(dòng)微分系統(tǒng)不是語(yǔ)言的核心組成部分。有一些最初為 Swift
版的 TensorFlow 開(kāi)發(fā)的功能后來(lái)被集成到了 Swift
語(yǔ)言本身中。
3. Swift 非???/strong>
當(dāng)?shù)谝淮蔚弥?Swift
的運(yùn)行速度與 C 代碼一樣快時(shí),我感到非常驚訝。我知道 C 經(jīng)過(guò)了高度優(yōu)化,且可以實(shí)現(xiàn)非常高的速度,但這需要以微內(nèi)存管理為代價(jià),因此 C 不能保證內(nèi)存的安全。此外,C 不是一種非常容易學(xué)習(xí)的語(yǔ)言。
如今, Swift
的數(shù)值計(jì)算速度與 C 一樣快,還沒(méi)有內(nèi)存安全的問(wèn)題,而且更容易學(xué)習(xí)。 Swift
背后的 LLVM 編譯器功能非常強(qiáng)大,并且擁有非常高效的優(yōu)化功能,可以確保代碼快速地運(yùn)行。
4. 你可以在 Swift 中使用 Python、C 和 C++ 代碼
由于 Swift
的機(jī)器學(xué)習(xí)才剛剛開(kāi)始,因此 Swift
的機(jī)器學(xué)習(xí)庫(kù)并不多。然而,你無(wú)需擔(dān)心,因?yàn)?Swift
可以很好地與 Python 語(yǔ)言結(jié)合。你只需在 Swift
中導(dǎo)入 Python 庫(kù),就可以放心使用了。 與此同時(shí),你還可以將 C 和 C++ 庫(kù)導(dǎo)入到 Swift 中(對(duì)于 C++,你需要確保頭文件是用純 C 編寫(xiě)的,沒(méi)有 C++ 的特性)。
總而言之,如果你需要的某個(gè)特定的功能尚未在 Swift
中實(shí)現(xiàn),則可以導(dǎo)入相應(yīng)的 Python、C 或 C++ 包。這一點(diǎn)簡(jiǎn)直逆天了!
5. Swift 還可以深入底層
如果你曾經(jīng)使用過(guò) TensorFlow,那么很可能是通過(guò) Python 包來(lái)實(shí)現(xiàn)的。在底層,Python 版的 TensorFlow 是用 C 實(shí)現(xiàn)的。所以在 TensorFlow 中調(diào)用函數(shù)時(shí),你一定會(huì)在某個(gè)層面上遇到一些 C 代碼。這意味著在你查看源代碼的時(shí)候,會(huì)遇到一些限制。例如,你想看看卷積的實(shí)現(xiàn)方式,卻發(fā)現(xiàn)看不到 Python 代碼,因?yàn)樗怯?C 實(shí)現(xiàn)的。
然而,在 Swift
中情況有所不同。Chris Lattner 稱 Swift 是 “LLVM [匯編語(yǔ)言]的語(yǔ)法糖”。這意味著從本質(zhì)上講, Swift
非??拷布?Swift
與硬件之間沒(méi)有其他用 C 寫(xiě)的附加層。這也意味著 Swift
代碼非??欤缟纤?。
因此,開(kāi)發(fā)人員能夠檢查所有的代碼,無(wú)論是高層的代碼還是非常底層的代碼,都無(wú)需深入 C。
6. 將來(lái)的發(fā)展
Swift
只是 Google 深度學(xué)習(xí)創(chuàng)新的一部分。還有另一個(gè)非常密切相關(guān)的組件:MLIR(Multi-Level Intermediate Representation,多層中間表示)。MLIR 將會(huì)成為 Google統(tǒng)一的編譯基礎(chǔ)設(shè)施,它允許你用 Swift
(或任何其他支持的語(yǔ)言)編寫(xiě)代碼,并編譯成任何支持的硬件。
目前,有許多針對(duì)不同目標(biāo)硬件的編譯器,但 MLIR 將改變這種局面,它不僅可以支持代碼的可重用性,而且還允許你編寫(xiě)編譯器自定義的底層組件。同時(shí),它還允許研究人員應(yīng)用機(jī)器學(xué)習(xí)來(lái)優(yōu)化低級(jí)算法:
雖然 MLIR 是機(jī)器學(xué)習(xí)的編譯器,但我們也看到它可以將機(jī)器學(xué)習(xí)的技術(shù)應(yīng)用到編譯器本身!這一點(diǎn)非常重要,因?yàn)楣こ處熼_(kāi)發(fā)數(shù)值計(jì)算庫(kù)的速度跟不上機(jī)器學(xué)習(xí)模型或硬件多元化的速度。
想象一下,我們能夠使用深度學(xué)習(xí)來(lái)優(yōu)化處理數(shù)據(jù)的底層內(nèi)存切片算法(類似于 Halide 正在努力完成的任務(wù))。而且,這只是一個(gè)開(kāi)端,還有其他機(jī)器學(xué)習(xí)的創(chuàng)造性應(yīng)用也可以在編譯器中使用!
總結(jié)
如果你準(zhǔn)備研究深度學(xué)習(xí),個(gè)人建議你開(kāi)始學(xué)習(xí) Swift
語(yǔ)言。與 Python 相比, Swift
擁有多方面的優(yōu)勢(shì)。Google 正在大力投資,讓 Swift
成為 TensorFlow 多層基礎(chǔ)設(shè)施的關(guān)鍵組成部分,而且 Swift
很可能成為深度學(xué)習(xí)的語(yǔ)言。 因此,先下手為強(qiáng),盡早開(kāi)始學(xué)習(xí) Swift
吧。
相關(guān)文章
- 這篇文章主要介紹了實(shí)體關(guān)系圖(E-R圖)基本概念詳解,講解了E-R圖是什么,以及在建立關(guān)系等概念,需要的朋友可以參考下2021-08-26
- 這篇文章主要介紹了E-R圖實(shí)例圖文詳解,本文通過(guò)題目給定實(shí)體,要求等做出E-R圖,多個(gè)實(shí)例來(lái)詳細(xì)講述了該項(xiàng)技術(shù),需要的朋友可以參考下2021-08-26
- 這篇文章主要介紹了軟件開(kāi)發(fā)過(guò)程之需求分析步驟詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-25
- 本文通過(guò)詳細(xì)圖文介紹簡(jiǎn)要的介紹了軟件生命周期模型的內(nèi)容,內(nèi)容包括瀑布模型,增量模型,演化模型,噴泉模型等內(nèi)容,希望該篇文章能夠?qū)δ阌兴鶐椭?/div> 2021-08-25這篇文章主要介紹了軟件生命周期各個(gè)階段詳細(xì)描述,通過(guò)詳細(xì)的分類介紹了軟件生命周期的階段內(nèi)容,通過(guò)本篇文章你可以大致了解該項(xiàng)內(nèi)容,,需要的朋友可以參考下2021-08-25這篇文章主要介紹了軟件工程概要介紹,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-24
iOS 將來(lái) Swift 也許會(huì)取代 Python
Swift 是由 Chris Lattner 在蘋(píng)果工作時(shí)創(chuàng)建的。這意味著 Swift 版的 TensorFlow 并不是一個(gè)代碼庫(kù), 它本身就是一種語(yǔ)言,它內(nèi)置的功能支持 TensorFlow 所需的所有功能2019-09-17什么是框架?框架的作用是什么?為什么要學(xué)習(xí)框架?
這篇文章主要介紹了什么是框架?框架的作用是什么?為什么要學(xué)習(xí)框架?下面就簡(jiǎn)單介紹給大家,感興趣的可以了解一下2019-08-14C++難學(xué)嗎?為什么難學(xué)?如何去學(xué)?
經(jīng)常上網(wǎng),發(fā)現(xiàn)最多人問(wèn)的問(wèn)題就是C++難不難學(xué)。而得到的回答卻基本上是說(shuō)很難學(xué),甚至有說(shuō)要兩年才算入門。那么C++難學(xué)嗎?為什么難學(xué)?如何去學(xué)?下面我們就一起來(lái)了解一2019-08-12大數(shù)據(jù)入門必看:Hive、Hadoop、Storm詮釋(小結(jié))
這篇文章主要介紹了大數(shù)據(jù)入門必看:Hive、Hadoop、Storm詮釋(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-08-09最新評(píng)論