iOS 未來 Swift 也許會取代 Python !!!

聲明:如下純屬我的觀點,若有不一樣意見,歡迎評論區探討。感謝檢閱
複製代碼

  @All Developer,若是你準備研究深度學習,提升本身的能力,我的建議你開始學習 Swift 語言。(由於 Swift 是世界上最好的語言,開玩笑的。😆😆😆) git

在這裏插入圖片描述

  當程序員聽到 Swift 時,可能會聯想到蘋果,也可能會聯想到 iOS 或 MacOS 的應用開發。若是你準備研究深度學習,那麼你必定據說過 Swift 版的 TensorFlow。你可能不由想問:「爲何 Google 會建立 Swift 版的 TensorFlow?如今已經有 Python 和 C++ 版本了,爲何還要添加另外一種語言?」程序員

  我將在這篇文章中爲你解答這個問題,並概述爲何你須要留意 Swift 版的TensorFlow 以及 Swift 語言自己。我不打算在文本中提供詳細的解釋,可是我會提供大量連接,若是你對這個話題感興趣的話,你能夠深刻挖掘。github

1. Swift 擁有強力的後援

  Swift 是由 Chris Lattner 在蘋果工做時建立的。目前,Chris Lattner 在 Google Brain 工做 —— 這是世界上最早進的人工智能研究團隊之一。 Swift 語言的創始人現在在研究深度學習的實驗室工做,這個事實說明這是一個重大的項目。算法

  前段時間,Google 意識到儘管 Python 是一種優秀的語言,但它仍有許多難以克服的侷限性。TensorFlow 須要一種新語言,通過長時間的考慮後,這個重任落到了 Swift 肩上。我不打算對此作詳細的介紹,可是你能夠自行閱讀這篇文檔,文中描述了Python的缺點,有關其餘語言的考量,以及最終選中了 Swift 的通過。swift

2. Swift 版的 TensorFlow 不只僅是一個代碼庫

  Swift 版的 TensorFlow 不只僅是另外一種語言的 TensorFlow。安全

  從本質上來講,它是 Swift 語言的另外一個分支(就像在 git 上建立 branch 同樣)。這意味着 Swift 版的 TensorFlow 並非一個代碼庫, 它自己就是一種語言,它內置的功能支持 TensorFlow 所需的全部功能。機器學習

  例如,Swift 版的 TensorFlow 擁有很是強大的自動微分系統,這是深度學習計算梯度所需的基礎。相比之下,Python 的自動微分系統不是語言的核心組成部分。有一些最初爲 Swift 版的 TensorFlow 開發的功能後來被集成到了Swift語言自己中。ide

3. Swift 很是快

  當第一次得知 Swift 的運行速度與 C 代碼同樣快時,我感到很是驚訝。我知道 C 通過了高度優化,且能夠實現很是高的速度,但這須要以微內存管理爲代價,所以 C 不能保證內存的安全。此外,C 不是一種很是容易學習的語言。函數

  現在,Swift 的數值計算速度與 C 同樣快,尚未內存安全的問題,並且更容易學習。Swift 背後的 LLVM 編譯器功能很是強大,而且擁有很是高效的優化功能,能夠確保代碼快速地運行。學習

4. 你能夠在 Swift 中使用 Python、C 和 C++ 代碼

  因爲 Swift 的機器學習纔剛剛開始,所以 Swift 的機器學習庫並很少。然而,你無需擔憂,由於 Swift 能夠很好地與 Python 語言結合。你只需在 Swift 中導入 Python 庫,就能夠放心使用了。   與此同時,你還能夠將 C 和 C++ 庫導入到 Swift 中(對於 C++,你須要確保頭文件是用純 C 編寫的,沒有 C++ 的特性)。

  總而言之,若是你須要的某個特定的功能還沒有在 Swift 中實現,則能夠導入相應的 Python、C 或 C++ 包。這一點簡直逆天了!

5. Swift 還能夠深刻底層

  若是你曾經使用過 TensorFlow,那麼極可能是經過 Python 包來實現的。在底層,Python 版的 TensorFlow 是用 C 實現的。因此在 TensorFlow 中調用函數時,你必定會在某個層面上遇到一些 C 代碼。這意味着在你查看源代碼的時候,會遇到一些限制。例如,你想看看卷積的實現方式,卻發現看不到 Python 代碼,由於它是用 C 實現的。

  然而,在 Swift 中狀況有所不一樣。Chris Lattner 稱 Swift 是 「LLVM [彙編語言]的語法糖」。這意味着從本質上講,Swift 很是靠近硬件,Swift 與硬件之間沒有其餘用 C 寫的附加層。這也意味着 Swift 代碼很是快,如上所述。

  所以,開發人員可以檢查全部的代碼,不管是高層的代碼仍是很是底層的代碼,都無需深刻 C。

6. 未來的發展

  Swift 只是 Google 深度學習創新的一部分。還有另外一個很是密切相關的組件:MLIR(Multi-Level Intermediate Representation,多層中間表示)。MLIR 將會成爲 Google統一的編譯基礎設施,它容許你用 Swift(或任何其餘支持的語言)編寫代碼,並編譯成任何支持的硬件。

  目前,有許多針對不一樣目標硬件的編譯器,但 MLIR 將改變這種局面,它不只能夠支持代碼的可重用性,並且還容許你編寫編譯器自定義的底層組件。同時,它還容許研究人員應用機器學習來優化低級算法:

  雖然 MLIR 是機器學習的編譯器,但咱們也看到它能夠將機器學習的技術應用到編譯器自己!這一點很是重要,由於工程師開發數值計算庫的速度跟不上機器學習模型或硬件多元化的速度。

  想象一下,咱們可以使用深度學習來優化處理數據的底層內存切片算法(相似於 Halide 正在努力完成的任務)。並且,這只是一個開端,還有其餘機器學習的創造性應用也能夠在編譯器中使用!

總結

  若是你準備研究深度學習,我的建議你開始學習 Swift 語言。與 Python 相比,Swift 擁有多方面的優點。Google 正在大力投資,讓 Swift 成爲 TensorFlow 多層基礎設施的關鍵組成部分,並且 Swift 極可能成爲深度學習的語言。 所以,先下手爲強,儘早開始學習Swift 吧。

相關文章
相關標籤/搜索