@开发者,如果你正在研究深度学习,那么建议你开始学习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将改变这种局面,它不仅可以支持代码的可重用性,而且还允许你编写编译器自定义的底层组件。同时,它还允许研究人员应用机器学习来优化低级算法:

虽然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 翻译,转载请注明来源出处。

想学机器学习的小白读这篇,很可以

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

【END】

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

☞百年 IBM 如何用代码拯救生命

☞索尼发布新一代 IoT 芯片,万物互联方式将改写?

☞首款“印度制造”的微处理器 AJIT 面世!

☞国内第一部 AI 本科专业教育培养体系出炉!

☞“再见,微软!”

服务迁移之路 | Spring Cloud向Service Mesh转变 | 技术干货

不止面基V神,今年以太坊技术及应用大会,他还期待……

☞一文获取36个Python开源项目,平均Star 1667,精选自5000个项目

史上最大规模ACL大会放榜,百度10篇NLP论文被录用!

☞大神!这段代码让程序员躺赚200W,源码简单,你怎么看?

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

Swift 势必取代 Python?相关推荐

  1. 初学python还是swift-Swift 势必取代 Python?

    Swift拥有强力的后援 Swift是由Chris Lattner在苹果工作时创建的.目前,Chris Lattner在Google Brain工作--这是世界上最先进的人工智能研究团队之一. Swi ...

  2. 初学python还是swift-iOS 将来 Swift 也许会取代 Python

    @All Developer,如果你准备研究深度学习,提高自己的能力,个人建议你开始学习 Swift 语言.(因为 Swift 是世界上最好的语言,开玩笑的.:laughing::laughing:: ...

  3. 取代Python?Rust凭什么

    作者 | Nathan J. Goldbaum 译者 | 弯月,责编 | 屠敏 来源 | CSDN(ID:CSDNnews) [导语]Rust 也能实现神经网络?在前一篇帖子中,作者介绍了MNIST数 ...

  4. python采集文章_八爪鱼采集器能取代python爬虫吗?

    作为同时使用八爪鱼采集器和写爬虫的非技术的莫名其妙喜欢自己琢磨技术的互联网运营喵...我来谈谈心得感想. 八爪鱼有一些优势,比如学习成本低,可视化流程,快速搭建采集系统.能直接导出excel文件和导出 ...

  5. python是用什么语言开发的-专为人工智能和数据科学而生的Go语言,或将取代Python...

    时间回到30年前,Python 首次亮相.花了20年时间,Python才获得开发者的认可.来到 2019 年,Python已经成为开发人员第二喜欢的语言. 在过去的5年时间里,Python 成为了机器 ...

  6. python是什么语言开发的-专为人工智能和数据科学而生的Go语言,或将取代Python...

    时间回到30年前,Python 首次亮相.花了20年时间,Python才获得开发者的认可.来到 2019 年,Python已经成为开发人员第二喜欢的语言. 在过去的5年时间里,Python 成为了机器 ...

  7. rust相框加载图片代码_Rust 能取代 Python,更好的实现神经网络?

    Rust 也能实现神经网络? 作者 | Nathan J. Goldbaum译者 | 弯月,责编 | 屠敏出品 | CSDN(ID:CSDNnews)以下为译文:我在前一篇帖子(http://neur ...

  8. python是开源语言吗c,属于新十年的开发语言:Go语言可能很快会取代Python

    本文转载自公众号"读芯术"(ID:AI_Discovery) 30年前,Python首次亮相,它花了20年才得到开发者的赞赏.如今,它已经成为开发者第二喜爱的语言.尤其是在过去五年 ...

  9. elman神经网络 python实现_Rust 能取代 Python,更好的实现神经网络?

    Rust 也能实现神经网络? 作者 | Nathan J. Goldbaum译者 | 弯月,责编 | 屠敏出品 | CSDN(ID:CSDNnews)以下为译文:我在前一篇帖子(http://neur ...

最新文章

  1. 从no-code到low-code:企业级hpaPaaS的未来
  2. hdu 1086 线段相交
  3. 你的搜索其实很糟糕?
  4. Oracle表的并行度
  5. com.android.pngp.tln,Android资源之图像资源(图像级别资源)
  6. 贺利坚老师汇编课程56笔记:CMP指令
  7. PTA--Pop Sequence判定
  8. Android 手机的坐标
  9. 十进制数转换BCD码
  10. 计算机内码和国际码的转换,汉字机内码、国标码和区位码之间转换关系图
  11. 戴尔G5 5590重装系统
  12. 计算机专业今日份例句
  13. 电信光纤猫虚拟服务器设置方法,电信光纤猫与无线路由器连接的设置方法
  14. 【Linux基础】文件及文件权限(图文详解)
  15. 3D Touch大法
  16. 晨枫U盘维护V2.0_512M被淹死的鱼修正版
  17. 网络准入认证系统方案评估_七夕小子_新浪博客
  18. 4.1 用格雷戈里公式求π的近似值
  19. 期中总结【操作系统】
  20. java毕业设计网络招聘系统源码+lw文档+mybatis+系统+mysql数据库+调试

热门文章

  1. 网站地图生成器_10个相见恨晚的PPT网站 让你看一眼就心动
  2. pycharm使用技巧及最常用的几个快捷键
  3. Python3 openpyxl库
  4. 中国酒柜行业市场供需与战略研究报告
  5. 专业零售商行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. c语言malloc返回值,malloc(0)的返回值
  7. Unix网络编程卷一第三章笔记
  8. 微软成Eclipse基金会战略伙伴
  9. 微信“拍一拍”新增“炸一炸”功能;爱奇艺 CEO:会费涨价是行业必然趋势;微软终止 Windows 10X 开发|极客头条...
  10. 四年磨一剑:我是如何拿到蚂蚁 Offer 的?