iOS 將來 Swift 也許會取代 Python

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