快捷搜索:  as

Python并不完美,Swift正在成长为深度学习语言 !

假如你懂编程,在听到 Swift 时,你可能会想到为 iOS 或 MacOS 开拓利用法度榜样。假如你懂深度进修,那么你肯定听闻过 Swift for Tensorflow(简称 S4TF):https://www.tensorflow.org/swift。那么你可能会问自己:「谷歌为什么要为 Swift 创建一个 TensorFlow 版本呢?终究已经有 Python 和 C++版本了;为什么还要增添一种说话?」我将在本文中考试测验回答这一问题,并会列出你应该卖力关注 S4TF 以及 Swift 说话本身的缘故原由。本文的目的并非进行详尽的解释,而是要供给一样平常性的概述,文中也会带有大年夜量链接以赞助你更深度地懂得。

Swift 背后有强有力的支持

Python进修交流群:1004391443,这里是python进修者凑集地,有大年夜牛答疑,有资本共享!小编也筹备了一份python进修资料,有想进修python编程的,或是转行,或是大年夜门生,还有事情中想提升自己能力的,正在进修的小伙伴迎接加入进修。

Swift 是 Chris Lattner 在苹果公司事情时创造的。现在,Chris Lattner 在谷歌大年夜脑事情,而谷歌大年夜脑是当当代界上最优秀的人工智能团队之一。Swift 说话的创造者现在正在一家钻研深度进修的实验室事情,这足以阐明这个项目是严肃的。

一段光阴前,谷歌的人意识到,纵然 Python 说话异常出色,也仍旧存在一些难以降服的局限性。TensorFlow 必要一种新说话。颠末长光阴的思量之后,Swift 成为了一个候选项。我这里不会谈及细节,但这里有一份文档描述了 Python 以及其它被斟酌过的说话的缺陷,还会解释为何终极将范围缩小到了 Swift:https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md

Swift for TensorFlow 不光是一个软件库

Swift for TensorFlow 不光是另一种说话的 TensorFlow。它本色上是 Swift 说话本身的另一个分支。也便是说,S4TF 不光是一个软件库;它本身等于一门说话,此中内置了支持 TensorFlow 所需的所有功能。举个例子,S4TF 自带异常强大年夜的自动微分系统,这是深度进修在谋略梯度时所需的根基功能之一。比较一下 Python——自动微分并非该说话的核心组件。S4TF 中某些新开拓的功能之后也被整合进了 Swift 说话。

Swift 速率很快

在我刚得知 Swift 的运行速率和 C 说话代码一样快时,我震动了。我知道 C 说话颠末高度优化,能够达到异常高的速率,但这必要对内存进行微治理(这让 C 说话不能包管内存安然)。别的,C 说话也异常不轻易进修。

现在,Swift 在数值运算方面与 C 说话一样快,而且还没有内存安然问题,进修难度也低得多。Swift 背后的 LLVM 异常强大年夜,能够进行异常高效的优化,这能确保你的代码高速运行。

你可以在 Swift 中应用 Python、C 和 C++ 代码

由于用于机械进修的 Swift 还处于异常早期的阶段,以是今朝针对 Swift 的机械进修库还不多。但你也不用过于担心这一点,由于 Swift 具备出色的 Python 解释能力。你可以直接将任何 Python 库导入 Swift 进行应用。类似地,你也可将 C 和 C++ 库导入 Swift(对付 C++,你要确保头文件因此 C 说话写的,没有 C++ 的特点)。

总的来说,假如你必要特定的功能,但 Swift 中尚未实现,那么你可以导入对应的 Python、C 或 C++ 软件包。很了不起!

Swift 可以做到异常低层

假如你用过 TensorFlow,那么你很可能是经由过程 Python 应用的。在表层之下,Python 版本的 TensorFlow 库的下面是 C 代码。以是当你调用 TensorFlow 中的随意率性函数时,你都邑在某个层级上碰到 C 代码。这意味着假如你要反省其源代码,你所能到达的层级是很有限的。比如说,假如你想要查看卷积的实现要领,那么你不会看到为此编写的 Python 代码,由于它是用 C 说话实现的。

Swift 则不一样。Chris Lattner 将 Swift 称为「LLVM(汇编说话)的句法糖果(https://www.fast.ai/2019/03/06/fastai-swift/)」。这意味着 Swift 本色上异常接近硬件,其间没有用 C 说话编写的其它层的代码。这也意味着 Swift 代码异常快,就像前面提到的那样。这样的特点闪开拓者既能在异常高的层级上反省代码,也能深入异常低的层级,同时无需涉及 C 说话。

Swift 的未来成长

Swift 只是谷歌在深度进修领域的立异的一部分。别的还有一个异常相关的组件:MLIR:https://medium.com/tensorflow/mlir-a-new-intermediate-representation-and-compiler-framework-beba999ed18d。MLIR 全称为 Multi-Level Intermediate Representation,即多级中心表示。MLIR 将会成为谷歌的统一编译器根基举措措施,闪开拓者可以用 Swift(或其它任何支持的说话)写代码,然后将其编译到任何支持的硬件。今朝,针对不合的目标硬件有很多不合的编译器,而 MLIR 将改变这种环境。这不仅能让代码实现复用,而且还支持开拓者为该编译器编写定制的低层组件。它还容许钻研者利用机械进修来优化低层算法:

只管 MLIR 是用作机械进修的编译器,我们也看到它也能在编译器内部实现机械进修技巧的利用!这是尤其紧张的,由于开拓数值库的工程师的增长速率赶不上机械进修模型或硬件多样化的速率。

想象一下,假如能够基于数据应用深度进修来赞助优化低层的内存分片算法(这恰是 Halide 说话想要实现的功能),会怎么样?有关 Halide 说话的更多信息:https://www.youtube.com/watch?v=3uiEyEKji0M。这还仅仅是个开始,机械进修在编译器中更多有创意的利用正在路上!

总结

假如你在深度进修领域,那么你可能就应该开始进修 Swift 了。它比拟于 Python 有很多上风。谷歌正在大年夜力投入,想要将 Swift 打造成 TensorFlow 机械进修根基举措措施的一大年夜症构造成部分,而且 Swift 很有可能会变成一门深度进修说话。以是,早点介入到 Swift 的成长中能为你供给先发上风。

进一步探索

fast.ai《拥抱用于深度进修的 Swift》:https://www.fast.ai/2019/03/06/fastai-swift/

懂得 Swift for TensorFlow:https://towardsdatascience.com/machine-learning-with-swift-for-tensorflow-9167df128912

您可能还会对下面的文章感兴趣: