在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
点击上方“中生代技术”,选择“置顶公众号” 中生代技术,关注技术人的成长 @开发者,如果你正在研究深度学习,那么建议你开始学习Swift语言。 作者 | Max Pechyonkin 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 当程序员听到Swift时,可能都会联想到iOS或MacOS的应用开发。如果你正在研究深度学习,那么你一定听说过Swift版的TensorFlow。你可能不禁想问:“为什么Google会创建Swift版的TensorFlow?现在已经有Python和C++版本了,为什么还要添加另一种语言?” 我将在这篇文章中为你解答这个问题,并概述为什么你需要留意Swift版的TensorFlow以及Swift语言本身。我不打算在文本中提供详细的解释,但是我会提供大量链接,如果你对这个话题感兴趣的话,那么可以深入挖掘。
Swift拥有强力的后援 Swift是由Chris Lattner在苹果工作时创建的。目前,Chris Lattner在Google Brain工作——这是世界上最先进的人工智能研究团队之一。 Swift语言的创始人如今在研究深度学习的实验室工作,这个事实说明这是一个重大的项目。 前段时间,Google意识到尽管Python是一种优秀的语言,但它仍有许多难以克服的局限性。TensorFlow需要一种新语言,经过长时间的考虑后,这个重任落到了Swift肩上。我不打算对此做详细的介绍,但是你可以自行阅读这篇文档(https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md),文中描述了Python的缺点,有关其他语言的考量,以及最终选中了Swift的经过。
Swift版的TensorFlow不仅仅是一个代码库 Swift版的TensorFlow不仅仅是另一种语言的TensorFlow。 从本质上来说,它是Swift语言的另一个分支(就像在git上创建branch一样)。这意味着Swift版的TensorFlow并不是一个代码库, 它本身就是一种语言,它内置的功能支持TensorFlow所需的所有功能。 例如,Swift版的TensorFlow拥有非常强大的自动微分系统,这是深度学习计算梯度所需的基础。相比之下,Python的自动微分系统不是语言的核心组成部分。有一些最初为Swift版的TensorFlow开发的功能后来被集成到了Swift语言本身中。
Swift非常快 当第一次得知Swift的运行速度与C代码一样快时,我感到非常惊讶。我知道C经过了高度优化,且可以实现非常高的速度,但这需要以微内存管理为代价,因此C不能保证内存的安全。此外,C不是一种非常容易学习的语言。 如今,Swift的数值计算速度与C一样快,还没有内存安全的问题,而且更容易学习。Swift背后的LLVM编译器功能非常强大,并且拥有非常高效的优化功能,可以确保代码快速地运行。
你可以在Swift中使用Python、C和C++代码 由于Swift的机器学习才刚刚开始,因此Swift的机器学习库并不多。然而,你无需担心,因为Swift可以很好地与Python语言结合。你只需在Swift中导入Python库,就可以放心使用了。 与此同时,你还可以将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 [汇编语言]的语法糖”。这意味着从本质上讲,Swift非常靠近硬件,Swift与硬件之间没有其他用C写的附加层。这也意味着Swift代码非常快,如上所述。 因此,开发人员能够检查所有的代码,无论是高层的代码还是非常底层的代码,都无需深入C。
将来的发展 Swift只是Google深度学习创新的一部分。还有另一个非常密切相关的组件:MLIR(Multi-Level Intermediate Representation,多层中间表示)。MLIR将会成为Google统一的编译基础设施,它允许你用Swift(或任何其他支持的语言)编写代码,并编译成任何支持的硬件。 目前,有许多针对不同目标硬件的编译器,但MLIR将改变这种局面,它不仅可以支持代码的可重用性,而且还允许你编写编译器自定义的底层组件。同时,它还允许研究人员应用机器学习来优化低级算法:
想象一下,我们能够使用深度学习来优化处理数据的底层内存切片算法(类似于Halide正在努力完成的任务)。而且,这只是一个开端,还有其他机器学习的创造性应用也可以在编译器中使用!
总结 如果你正在研究深度学习,那么我建议你开始学习Swift语言。与Python相比,Swift拥有多方面的优势。Google正在大力投资,让Swift成为TensorFlow多层基础设施的关键组成部分,而且Swift很可能成为深度学习的语言。 因此,先下手为强,尽早开始学习Swift吧。 链接:https://towardsdatascience.com/why-swift-may-be-the-next-big-thing-in-deep-learning-f3f6a638ca72 本文为 CSDN 翻译,转载请注明来源出处。 【END】 研发管理好文回顾 ☞ 专访《突破》作者刘朋: 程序员快速提升领导力的15个模式!
#专注技术人的成长# 点击阅读原文,阅读英文原版 你点的每个“在看”,我都认真当成了喜欢 |
请发表评论