博多利_博多利三天速成!香港科技大学TensorFlow课件分享

中国围棋网2017年10月11日 04时10分23秒
62

原标题:三天速成!香港科技大学TensorFlow课件分享

机器之心整理

参与:蒋思源

这是一套香港科技大学发布的极简 TensorFlow 入门教程,三天全套幻灯片教程已被分享到 Google Drive。机器之心将简要介绍该教程并借此梳理 TensorFlow 的入门概念与实现。

该教程第一天先介绍了深度学习和机器学习的潜力与基本概念,而后便开始探讨深度学习框架 TensorFlow。首先我们将学到如何安装 TensorFlow,其实我们感觉 TensorFlow 环境配置还是相当便捷的,基本上按照官网的教程就能完成安装。随后就从「Hello TensorFlow」开始依次讲解计算图、占位符、张量等基本概念。

当然我们真正地理解 TensorFlow 还需要从实战出发一点点学习那些最基本的概念,因此第一天重点讲解了线性回归、Logistic 回归、Softmax 分类和神经网络。每一个模型都从最基本的概念出发先推导运行过程,然后再结合 TensorFlow 讲解张量、计算图等真正的意义。神经网络这一部分讲解得十分详细,我们将从最基本的感知机原理开始进而使用多层感知机解决异或问题(XOR),重点是该课程详细推导了前向传播与反向传播的数学过程并配以 TensorFlow 实现。

教程第二天详细地讨论了卷积神经网络,它从 TensorFlow 的训练与构建技巧开始,解释了应用于神经网络的各种权重初始化方法、激活函数、损失函数、正则化和各种优化方法等。在教程随后论述 CNN 原理的部分,我们可以看到大多是根据斯坦福 CS231n 课程来解释的。第二天最后一部分就是使用 TensorFlow 实现前面的理论,该教程使用单独的代码块解释了 CNN 各个部分的概念,比如说 2 维卷积层和最大池化层等。

教程第三天详解了循环神经网络,其从时序数据开始先讲解了 RNN 的基本概念与原理,包括编码器-解码器模式、注意力机制和门控循环单元等非常先进与高效的机制。该教程后一部分使用了大量的实现代码来解释前面我们所了解的循环神经网络基本概念,包括 TensorFlow 中单个循环单元的构建、批量输入与循环层的构建、RNN 序列损失函数的构建、训练计算图等。

下面机器之心将根据该教程资料简要介绍 TensorFlow 基本概念和 TensorFlow 机器学习入门实现。更详细的内容请查看香港科技大学三日 TensorFlow 速成课程资料

  • 三日速成课程 Google Drive 资料地址:https://drive.google.com/drive/folders/0B41Zbb4c8HVyY1F5Ml94Z2hodkE

  • 三日速成课程百度云盘资料地址:

  • TensorFlow 基础

    本小节将从张量与图、常数与变量还有占位符等基本概念出发简要介绍 TensorFlow。需要进一步了解 TensorFlow 的读者可以阅读谷歌 TensorFlow 的文档,当然也可以阅读其他中文教程或书籍,例如《TensorFlow:实战 Google 深度学习框架》和《TensorFlow 实战》等。

  • TensorFlow 文档地址:https://www.tensorflow.org/get_started/

  • 1. 图

    TensorFlow 是一种采用数据流图(data flow graphs),用于数值计算的开源软件库。其中 Tensor 代表传递的数据为张量(多维数组),Flow 代表使用计算图进行运算。数据流图用「结点」(nodes)和「边」(edges)组成的有向图来描述数学运算。「结点」一般用来表示施加的数学操作,但也可以表示数据输入的起点和输出的终点,或者是读取/写入持久变量(persistent variable)的终点。边表示结点之间的输入/输出关系。这些数据边可以传送维度可动态调整的多维数据数组,即张量(tensor)。



    在 Tensorflow 中,所有不同的变量和运算都是储存在计算图。所以在我们构建完模型所需要的图之后,还需要打开一个会话(Session)来运行整个计算图。在会话中,我们可以将所有计算分配到可用的 CPU 和 GPU 资源中。




    如上所示我们构建了一个加法运算的计算图,第二个代码块并不会输出计算结果,因为我们只是定义了一张图,而没有运行它。第三个代码块才会输出计算结果,因为我们需要创建一个会话(Session)才能管理 TensorFlow 运行时的所有资源。但计算完毕后需要关闭会话来帮助系统回收资源,不然就会出现资源泄漏的问题。

    TensorFlow 中最基本的单位是常量(Constant)、变量(Variable)和占位符(Placeholder)。常量定义后值和维度不可变,变量定义后值可变而维度不可变。在神经网络中,变量一般可作为储存权重和其他信息的矩阵,而常量可作为储存超参数或其他结构信息的变量。在上面的计算图中,结点 1 和结点 2 都是定义的常量 tf.constant()。我们可以分别声明不同的常量(tf.constant())和变量(tf.Variable()),其中 tf.float 和 tf.int 分别声明了不同的浮点型和整数型数据。

    2. 占位符和 feed_dict

    TensorFlow 同样还支持占位符,占位符并没有初始值,它只会分配必要的内存。在会话中,占位符可以使用 feed_dict 馈送数据。

    feed_dict 是一个字典,在字典中需要给出每一个用到的占位符的取值。在训练神经网络时需要每次提供一个批量的训练样本,如果每次迭代选取的数据要通过常量表示,那么 TensorFlow 的计算图会非常大。因为每增加一个常量,TensorFlow 都会在计算图中增加一个结点。所以说拥有几百万次迭代的神经网络会拥有极其庞大的计算图,而占位符却可以解决这一点,它只会拥有占位符这一个结点。


    3. 张量

    在 TensorFlow 中,张量是计算图执行运算的基本载体,我们需要计算的数据都以张量的形式储存或声明。如下所示,该教程给出了各阶张量的意义。


    零阶张量就是我们熟悉的标量数字,它仅仅只表达了量的大小或性质而没有其它的描述。一阶张量即我们熟悉的向量,它不仅表达了线段量的大小,同时还表达了方向。一般来说二维向量可以表示平面中线段的量和方向,三维向量和表示空间中线段的量和方向。二阶张量即矩阵,我们可以看作是填满数字的一个表格,矩阵运算即一个表格和另外一个表格进行运算。当然理论上我们可以产生任意阶的张量,但在实际的机器学习算法运算中,我们使用得最多的还是一阶张量(向量)和二阶张量(矩阵)。



    一般来说,张量中每个元素的数据类型有以上几种,即浮点型和整数型,一般在神经网络中比较常用的是 32 位浮点型。

    4. TensorFlow 机器

    在整个教程中,下面一张示意图将反复出现,这基本上是所有 TensorFlow 机器学习模型所遵循的构建流程,即构建计算图、馈送输入张量、更新权重并返回输出值。



    标签:博多利,博多利官网,博多利娱乐

    本文链接:http://www.weiqi.cc/developer/116645.html 转载请注明出处