如果你懂编程,在听到 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

初学python还是swift-Python并不完美,Swift正在成长为深度学习语言 !相关推荐

  1. python汽车类型识别源代码带图形界面,基于PyTorach深度学习

    python汽车类型识别源代码带图形界面,基于torch深度学习,目前可识别公交车, 货车,客运车, 面包车, 皮卡车, 小轿车,程序包中已含模型文件 完整代码下载地址:python汽车类型识别源代码 ...

  2. 02基于python玩转人工智能最火框架之TensorFlow人工智能深度学习介绍

    人工智能之父麦卡锡给出的定义 构建智能机器,特别是智能计算机程序的科学和工程. 人工智能是一种让计算机程序能够"智能地"思考的方式 思考的模式类似于人类. 什么是智能? 智能的英语 ...

  3. python网格搜索法_Python中基于网格搜索算法优化的深度学习模型分析糖尿病数据...

    介绍 在本教程中,我们将讨论一种非常强大的优化(或自动化)算法,即网格搜索算法.它最常用于机器学习模型中的超参数调整.我们将学习如何使用Python来实现它,以及如何将其应用到实际应用程序中,以了解它 ...

  4. python硬件驱动_从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!...

    原标题:从零开始:手把手教你安装深度学习操作系统.驱动和各种python库! 为了研究强化学习,最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指 ...

  5. 深度学习入门之Python小白逆袭大神系列(三)—深度学习常用Python库

    深度学习常用Python库介绍 目录 深度学习常用Python库介绍 简介 Numpy库 padas库 PIL库 Matplotlib库 简介 Python被大量应用在数据挖掘和深度学习领域,其中使用 ...

  6. 基于Python的空气质量网络数据爬虫,构建面向深度学习数据预测的空气质量数据集

    目录 1.目标 2. 思路 3.算法 3.1 算法流程 3.2 开发环境 4 核心代码 4.1 Header伪装 4.2 get_html_soup函数 4.3 get_city_link_list函 ...

  7. python算法工程师招聘_经验 | 我心目中招聘深度学习算法工程师的标准

    原标题:经验 | 我心目中招聘深度学习算法工程师的标准 本文转载自有三AI 目前利用深度学习这个工具可以做很多事情,各大领域(图像,语音,NLP等),各大行业(娱乐,金融,医疗等)这几年都被玩的风生水 ...

  8. python保存模型的路径怎么写_使用python在MongoDB中保存机器学习(ML)和深度学习(DL)模型...

    我们知道,当我们训练机器学习或深入学习模型时,我们必须保存训练过的模型,以便将来进行预测.现在的训练模型非常昂贵,所以如果我们能够保存它们并将其用于解决其他一些问题.例如,一个训练过的能够识别汽车的神 ...

  9. Python在机器学习中的应用--第十二章深度学习

    第十二章深度学习 import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import Font ...

最新文章

  1. SQL Update 语句中使用别名
  2. 成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'express'
  3. mikechen详谈架构师成长之3大步骤
  4. 死在路上的创业者们:如何跨越市场推广之坎?
  5. mongodb 如何更改端口号_Python 操作 MongoDB 数据库介绍
  6. easydarwin ffmpeg
  7. Linux中句柄是什么?
  8. java 文字串叠字检查_Java 正则表达式详细实例解析
  9. h5画三角形_HTML5怎么画三角形?
  10. 服务器维保价格标准_标准维护服务方案
  11. ggplot多图叠加_R作图 ggplot2图片的布局排版
  12. QT5实现中英文界面动态切换
  13. 桌面窗口管理器占用GPU高的解决办法
  14. 707-详解32位Linux系统内存地址映射
  15. java 执行Linux命令并打印执行结果
  16. NDIS Filter Drivers指南
  17. 多方位角极化SAR数据处理与信息提取方法
  18. Mrtg网络监控 实现步骤
  19. 《数值分析》李庆扬 09 常微分方程数值解
  20. ROS环境问题:多个工作空间的环境变量问题(source .bashrc配置文件)

热门文章

  1. KSQL和Flink SQL的比较
  2. python里的类与一切事物都是对象
  3. stl_config.h基本宏
  4. C++ 内连接与外连接 (转)
  5. Android adb shell 命令
  6. 一步一步学习Ultimus - 三、系统设置
  7. 下列哪个不是目前python里的内置模块-不吹不擂,你想要的Python面试都在这里了【315+道题】...
  8. 利用python进行数据分析 英文-如何学习和评价《利用python进行数据分析》这本书?...
  9. 青少年软件编程等级考试 python-中国电子学会、北大等推出青少年软件编程等级标准升级版...
  10. python快速编程入门教程-半小时带你快速入门Python编程,Python快速入门教程