Madalina Buzau作者王淑婷 泽南参与

TensorFlow的动态图工具Eager怎么用?这是一篇极简教程

去年 11 月,Google Brain 团队发布了 Eager Execution,一个由运行定义的新接口,为 TensorFlow 这一最为流行的深度学习框架引入了动态图机制。Eager 的出现使得开发变得更为直观,从而让 TensorFlow 的入门难度大为降低。本文介绍了使用 TensorFlow Eager 构建神经网络的简单教程。

项目链接:https://github.com/madalinabuzau/tensorflow-eager-tutorials

本文旨在帮助那些希望通过 TensorFlow Eager 模式获得深度学习实践经验的人。TensorFlow Eager 可以让你像使用 Numpy 那样轻松地构建神经网络,其巨大优势是提供了自动微分(无需再手书反向传播,(*^▽^*)!)。它还可以在 GPU 上运行,使神经网络训练速度明显加快。

谷歌大脑的开发团队曾表示,Eager Execution 的主要优点如下:

  • 快速调试即刻的运行错误并通过 Python 工具进行整合

  • 借助易于使用的 Python 控制流支持动态模型

  • 为自定义和高阶梯度提供强大支持

  • 适用于几乎所有可用的 TensorFlow 运算

我会努力让每个人都能理解这份教程,因此我将尽量在无需 GPU 处理的前提下解决问题。

教程中使用的 TensorFlow 版本为 1.7 版。

开始

01. 构建一个简单的神经网络——下图将教你如何在一个合成生成的数据集上用 TensorFlow Eager 模式构建和训练一个单隐藏层神经网络

02. 在 Eager 模式中使用度量——下图将教你针对三种不同的机器学习问题(多分类、不平衡数据集和回归),如何使用与 Eager 模式兼容的度量。

简单但实用的知识

03. 保存和恢复训练好的模型——下图将教你如何保存训练好的模型并随后恢复它以对新数据进行预测。

04. 将文本数据传输到 TFRecords——下图将教你如何把可变序列长度的文本数据存储到 TFRecords 中。当使用迭代器读取数据集时,数据可以在批处理中快速填充。

05. 将图像数据传输到 TFRecords——下图将教你如何把图像数据及其元数据传输到 TFRecords 上。

06. 如何批量读取 TFRecords 数据——下图将教你如何从 TFRecords 中批量读取可变序列长度数据或图像数据。

卷积神经网络(CNN)

07. 构建一个用于情绪识别的 CNN 模型——下图将教你使用 TensorFlow Eager API 和 FER2013 数据集从零开始构建一个 CNN 模型。在完成以后,你将能使用网络摄像头试验自己构建的神经网络,这是一个很棒的尝试!

循环神经网络(RNN)

08. 构建一个序列分类的动态 RNN——学习如何使用可变序列输入数据。下图将介绍如何使用 TensorFlow Eager API 和 Stanford Large Movie Review Dataset 来构建动态 RNN。

09. 构建一个时序回归 RNN——下图展示了如何为时序预测构建一个 RNN 模型。

入门Eager Execution动态图TensorFlow谷歌
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

推荐文章
暂无评论
暂无评论~