免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python并不完美,Swift正在成長為深度學(xué)習(xí)語言

「人生苦短,我用 Python?!沟?Python 如日中天的今天,深度學(xué)習(xí)可能又需要一種新的編程語言。機器學(xué)習(xí)工程師 Max Pechyonkin 認(rèn)為 Swift 可能將成為重要的深度學(xué)習(xí)語言,他在一篇博客中簡要闡述了 Swift 的優(yōu)勢和發(fā)展前景。你會考慮學(xué)習(xí) Swift 嗎?

如果你懂編程,在聽到 Swift 時,你可能會想到為 iOS 或 MacOS 開發(fā)應(yīng)用程序。如果你懂深度學(xué)習(xí),那么你肯定聽聞過 Swift for Tensorflow(簡稱 S4TF):https://www.tensorflow.org/swift。那么你可能會問自己:「谷歌為什么要為 Swift 創(chuàng)建一個 TensorFlow 版本呢?畢竟已經(jīng)有 Python 和 C++版本了;為什么還要增加一種語言?」我將在本文中嘗試回答這一問題,并會列出你應(yīng)該認(rèn)真關(guān)注 S4TF 以及 Swift 語言本身的原因。本文的目的并非進(jìn)行詳盡的解釋,而是要提供一般性的概述,文中也會帶有大量鏈接以幫助你更深度地了解。

Swift 背后有強有力的支持

Swift 是 Chris Lattner 在蘋果公司工作時創(chuàng)造的?,F(xiàn)在,Chris Lattner 在谷歌大腦工作,而谷歌大腦是當(dāng)今世界上最優(yōu)秀的人工智能團隊之一。Swift 語言的創(chuàng)造者現(xiàn)在正在一家研究深度學(xué)習(xí)的實驗室工作,這足以說明這個項目是嚴(yán)肅的。

一段時間前,谷歌的人意識到,即使 Python 語言非常出色,也仍然存在一些難以克服的局限性。TensorFlow 需要一種新語言。經(jīng)過長時間的斟酌之后,Swift 成為了一個候選項。我這里不會談及細(xì)節(jié),但這里有一份文檔描述了 Python 以及其它被考慮過的語言的缺陷,還會解釋為何最終將范圍縮小到了 Swift:https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md

Swift for TensorFlow 不只是一個軟件庫

Swift for TensorFlow 不只是另一種語言的 TensorFlow。它本質(zhì)上是 Swift 語言本身的另一個分支。也就是說,S4TF 不只是一個軟件庫;它本身即是一門語言,其中內(nèi)置了支持 TensorFlow 所需的所有功能。舉個例子,S4TF 自帶非常強大的自動微分系統(tǒng),這是深度學(xué)習(xí)在計算梯度時所需的基礎(chǔ)功能之一。對比一下 Python——自動微分并非該語言的核心組件。S4TF 中某些新開發(fā)的功能之后也被整合進(jìn)了 Swift 語言。

Swift 速度很快

在我剛得知 Swift 的運行速度和 C 語言代碼一樣快時,我震驚了。我知道 C 語言經(jīng)過高度優(yōu)化,能夠達(dá)到非常高的速度,但這需要對內(nèi)存進(jìn)行微管理(這讓 C 語言不能保證內(nèi)存安全)。另外,C 語言也非常不容易學(xué)習(xí)。

現(xiàn)在,Swift 在數(shù)值運算方面與 C 語言一樣快,而且還沒有內(nèi)存安全問題,學(xué)習(xí)難度也低得多。Swift 背后的 LLVM 非常強大,能夠進(jìn)行非常高效的優(yōu)化,這能確保你的代碼高速運行。

你可以在 Swift 中使用 Python、C 和 C++ 代碼

因為用于機器學(xué)習(xí)的 Swift 還處于非常早期的階段,所以目前針對 Swift 的機器學(xué)習(xí)庫還不多。但你也不用過于擔(dān)心這一點,因為 Swift 具備出色的 Python 解釋能力。你可以直接將任何 Python 庫導(dǎo)入 Swift 進(jìn)行使用。類似地,你也可將 C 和 C++ 庫導(dǎo)入 Swift(對于 C++,你要確保頭文件是以 C 語言寫的,沒有 C++ 的特性)。

總的來說,如果你需要特定的功能,但 Swift 中尚未實現(xiàn),那么你可以導(dǎo)入對應(yīng)的 Python、C 或 C++ 軟件包。很了不起!

Swift 可以做到非常低層

如果你用過 TensorFlow,那么你很可能是通過 Python 使用的。在表層之下,Python 版本的 TensorFlow 庫的下面是 C 代碼。所以當(dāng)你調(diào)用 TensorFlow 中的任意函數(shù)時,你都會在某個層級上遇到 C 代碼。這意味著如果你要檢查其源代碼,你所能到達(dá)的層級是很有限的。比如說,如果你想要查看卷積的實現(xiàn)方式,那么你不會看到為此編寫的 Python 代碼,因為它是用 C 語言實現(xiàn)的。

Swift 則不一樣。Chris Lattner 將 Swift 稱為「LLVM(匯編語言)的句法糖果(https://www.fast.ai/2019/03/06/fastai-swift/)」。這意味著 Swift 本質(zhì)上非常靠近硬件,其間沒有用 C 語言編寫的其它層的代碼。這也意味著 Swift 代碼非常快,就像前面提到的那樣。這樣的特性讓開發(fā)者既能在非常高的層級上檢查代碼,也能深入非常低的層級,同時無需涉及 C 語言。

Swift 的未來發(fā)展

Swift 只是谷歌在深度學(xué)習(xí)領(lǐng)域的創(chuàng)新的一部分。另外還有一個非常相關(guān)的組件:MLIR:https://medium.com/tensorflow/mlir-a-new-intermediate-representation-and-compiler-framework-beba999ed18d。MLIR 全稱為 Multi-Level Intermediate Representation,即多級中間表示。MLIR 將會成為谷歌的統(tǒng)一編譯器基礎(chǔ)設(shè)施,讓開發(fā)者可以用 Swift(或其它任何支持的語言)寫代碼,然后將其編譯到任何支持的硬件。目前,針對不同的目標(biāo)硬件有很多不同的編譯器,而 MLIR 將改變這種情況。這不僅能讓代碼實現(xiàn)復(fù)用,而且還支持開發(fā)者為該編譯器編寫定制的低層組件。它還允許研究者應(yīng)用機器學(xué)習(xí)來優(yōu)化低層算法:

盡管 MLIR 是用作機器學(xué)習(xí)的編譯器,我們也看到它也能在編譯器內(nèi)部實現(xiàn)機器學(xué)習(xí)技術(shù)的應(yīng)用!這是尤其重要的,因為開發(fā)數(shù)值庫的工程師的增長速度趕不上機器學(xué)習(xí)模型或硬件多樣化的速度。

想象一下,如果能夠基于數(shù)據(jù)使用深度學(xué)習(xí)來幫助優(yōu)化低層的內(nèi)存分片算法(這正是 Halide 語言想要實現(xiàn)的功能),會怎么樣?有關(guān) Halide 語言的更多信息:https://www.youtube.com/watch?v=3uiEyEKji0M。這還僅僅是個開始,機器學(xué)習(xí)在編譯器中更多有創(chuàng)意的應(yīng)用正在路上!

總結(jié)

如果你在深度學(xué)習(xí)領(lǐng)域,那么你可能就應(yīng)該開始學(xué)習(xí) Swift 了。它相比于 Python 有很多優(yōu)勢。谷歌正在大力投入,想要將 Swift 打造成 TensorFlow 機器學(xué)習(xí)基礎(chǔ)設(shè)施的一大關(guān)鍵組成部分,而且 Swift 很有可能會變成一門深度學(xué)習(xí)語言。所以,早點參與到 Swift 的發(fā)展中能為你提供先發(fā)優(yōu)勢。

進(jìn)一步探索

  • fast.ai《擁抱用于深度學(xué)習(xí)的 Swift》:https://www.fast.ai/2019/03/06/fastai-swift/
  • 了解 Swift for TensorFlow:https://towardsdatascience.com/machine-learning-with-swift-for-tensorflow-9167df128912

原文鏈接:https://pechyonkin.me/portfolio/why-swift-for-tensorflow/

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
編譯器大神 Chris Lattner 官宣新編程語言:Mojo,比 Python 快 35000 倍!
螞蟻王益:Go 可有效補全 Python 的不足
可以拋棄 Python?Google 開源 Swift for TensorFlow 意味什么
Hello, Mojo——首次體驗Mojo語言
技術(shù)趨勢:2019,人工智能開發(fā)的5種最佳編程語言(原創(chuàng))
GitHub上的五大開源機器學(xué)習(xí)項目
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服