Google师资培训深度学习系列报告(二)深度学习,TensorFlow介绍

原创
2017/10/10 23:40
阅读数 294

本节为师资培训第二讲,主要讲解如下内容:

  • TensorFlow简单介绍
  • TensorFlow的应用领域
  • 张量以及数据流图的理念
  • TensorFlow的简单架构讲解

TensorFlow简单介绍

基本情况

  • 基于DistBelief进行研发的第二代人工智能学习系统
  • 2015年年底开源
  • 使用数据流图进行数值计算。 图中的节点表示数学运算,而图形边表示在它们之间传递的多维数据阵列(张量)。
  • 目前被广泛应用于Google的各项产品中
  • 开源1年多时间,已经成为GitHub上Star数和fork数最多的机器学习框架

特性

多平台部署

输入图片说明

摆在TensorFlow面前的技术障碍已经基本扫清

到目前为止(或者说到1.0版本以后),作为一个同时应用在研究和生产中的深度学习框架,TensorFlow已经基本扫清所有技术障碍

  1. 支持多GPU:已经做到了,文档清晰简洁。
  2. 分布式训练:支持分布式训练。
  3. 支持操作队列:数据加载或图像预处理。
  4. TensorBoard支持图形可视化:学习和调试新模型时,容易陷入迷惑,因此TensorBoard图形可视化非常有用。
  5. 使用TensorBoard以交互方式记录日志。通过TensorBoard做日志记录也能这样做,比如学习速率、损失值、测试精度等。
  6. 模型检查点设置:一个模型训练一段时间后,需要停下来进行评估,然后从检查点重新加载,继续训练。
  7. 使用CUDNN优化GPU性能:与Theano 等框架类似使用了CUDNN进行GPU性能优化。

所以,不管是开发者还是科研工作者,目前阶段,我都推荐使用TensorFlow,理由——Google的支持,及其活跃的社区,爆炸式的增长和提升,工业界的普遍认可,大量的源代码,示例和教程。

TensorFlow的应用领域

图像识别与检测

深度学习可以用来识别图像,以下的图像是由Inception模型识别出来的。 这是Google最好的图像识别模型之一。Google已经在TensorFlow中开源实施。

输入图片说明

机器翻译

深度学习也已经被成功的应用在来机器翻译上,其中最著名的就是google的神经机器翻译系统(Google Neural Machine translation system),目前该系统已经是Google翻译后台了,并且国内已经可以直接使用Google翻译了。深度学习为机器翻译的翻译准确度带来了很大的提升,下图显示出基于神经网络的机器翻译系统对比传统的基于语义的机器翻译系统的提升。神经网络翻译系统的另一个特点就是它是端到端的,对于一个已经训练好的模型,输入端输入英文,输出端直接能够将对应的中文输出,整个系统并不需要存储任何的语料信息和语法,神经网络的连接参数将在训练的过程中自动将其中的规律学得。

输入图片说明

输入图片说明

使用深度强化学习玩游戏,下围棋

你可能听说过“深蓝”——曾经挑战国际围棋世界冠军的电脑。1997年,它击败了世界冠军——卡斯帕罗夫。但是要做到这一点,深蓝主要使用强力。 事实上,它使用了香农(Claude Shannon)在1949年展示的算法!它以极快的速度搜索游戏树。

但在直到2015年——近20年后,最好的围棋AI也仅仅只达到了围棋业余级水平。 原因在于围棋的搜索树要比国际象棋大得多。然后,在2016年,Google的“AlphaGo”(或者说DeepMind的)击败了世界冠军级选手李世石。AlphaGo是怎么做到的呢? 因为AlphaGo使用机器学习。它在视觉上检查了棋盘——有点像人的意志。 它使用视觉来“看”什么是一个好的下子位置,并利用这种洞察力更有效地搜索游戏树。

输入图片说明

无人驾驶汽车

不管是图像识别,语音识别还是AlphaGo,都是采用深度学习以后在本领域取得了突破性进展的研究,下面,我们看一个深度学习在未来的应用,一个绝大多数人还没看到,但是确实已经离我们不远了的振奋人心的应用——无人驾驶汽车

输入图片说明

上图显示的是Nvidia开发的基于深度卷积神经网络的端到端自动驾驶,使用一个简单的摄像头以及卷积神经网络,我们已经可以让汽车在端到端的情况下在98%的路面安全行驶了。得益于深度学习在Object Detction和Recognize方面的突破性进展,自动驾驶这两年发展相当迅猛

艺术创作

如果我们反向的运行我们的图像识别模型,我们会得到什么呢?我们的模型会画出它印象中以前见过的图像,就像我们晚上做梦一样,会梦到一些白天见过的场景。我们现在看到的就是Deep Dream的一些有趣(迷幻)的照片。 深层梦想是一个实验性的神经网络,它基于过去看到过的一些元素产生新的图像。

输入图片说明

如果我们试图以毕加索的风格去产生联合国大楼的形象,会是怎样的结果呢?那可能看起来像这样。

输入图片说明

这个图像由一个名为“neural style”的程序生成,它使用深度学习将第一个图像的内容与第二个图像的样式相结合,它们不是简单的覆盖,如果是简单的覆盖的话,我们会看到一个建筑物和一个头。

深度学习还有很多应用,而这些都可以通过TensorFlow实现,那么从现在开始,让我们开始了解这个深度学习框架吧!

张量以及数据流图的理念

首先我们看一下TensorFlow实际上是由两个单词组成:

  • Tensor:张量
  • Flow:流

张量就是多维数组。 这是一个非常通用的数据类型。标量是张量。 标量只是一个数字,如 7. 一个向量(也称为列表或数组)也是一个张量。同样,Matrix(矩阵)也是张量。 你可以将张量视为TensorFlow中一种通用的承载数字的数据类型。

那么Flow是什么意思呢?对于Flow,我们指的是用Tensor计算的方式, Tensor流经整个计算图,计算图中的节点就是我们定义的操作,这些操作——加法,乘法,非线性等等。计算流图大概长这样:

输入图片说明

TensorFlow的两个版本

(1)TensorFlow with CPU only

如果我们的电脑没有GPU,我们就安装这个版本,这个版本实际上不会调用CUDA的接口的,所以在训练大型的深度学习模型的时候将几乎不可能,但是对于我们的教学实践和课堂授课的话使用这个版本也就够了。

(2)TensorFlow with GPU support 采用GPU加速的TensorFlow版本,可以在训练时带来带来成倍甚至几十倍的加速效果。并不是所有的Nvidia GPU都可以,显卡的CUDA Compute Capability必须要高于 3.0,也就是说某些Nvidia的低端显卡和老卡都不满足要求。

TensorFlow的简单架构

TensorFlow的内核是使用C++开发的,C ++内核提供了较高的性能,TensorFlow主要用于机器学习,建立在通用编程模型上。TensorFlow前端提供了诸如Python,C++,Java,Go的应用接口供大家使用

展开阅读全文
加载中

作者的其它热门文章

打赏
0
1 收藏
分享
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部